Merge "[3/n] Add cache to PackageManager#getActivityInfo usage" into main
diff --git a/ADPF_OWNERS b/ADPF_OWNERS
index bcdc338..c7ff464 100644
--- a/ADPF_OWNERS
+++ b/ADPF_OWNERS
@@ -1,4 +1,5 @@
-sumir@google.com
+adyabr@google.com
chingtangyu@google.com
-xwxw@google.com
mattbuckley@google.com
+sumir@google.com
+xwxw@google.com
\ No newline at end of file
diff --git a/AconfigFlags.bp b/AconfigFlags.bp
index 8b95679..8bfac03 100644
--- a/AconfigFlags.bp
+++ b/AconfigFlags.bp
@@ -610,6 +610,13 @@
vendor_available: true,
}
+java_aconfig_library {
+ name: "android.os.vibrator.flags-aconfig-java-host",
+ aconfig_declarations: "android.os.vibrator.flags-aconfig",
+ host_supported: true,
+ defaults: ["framework-minus-apex-aconfig-java-defaults"],
+}
+
// View
aconfig_declarations {
name: "android.view.flags-aconfig",
diff --git a/apct-tests/perftests/core/src/android/os/TracePerfTest.java b/apct-tests/perftests/core/src/android/os/TracePerfTest.java
index 0b941c9..d905124 100644
--- a/apct-tests/perftests/core/src/android/os/TracePerfTest.java
+++ b/apct-tests/perftests/core/src/android/os/TracePerfTest.java
@@ -127,14 +127,14 @@
public void testInstantPerfettoWithArgs() {
PerfettoTrace.instant(FOO_CATEGORY, "testInstantP")
.addArg("foo", "bar")
- .addFlow(1)
+ .setFlow(1)
.emit();
BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
while (state.keepRunning()) {
PerfettoTrace.instant(FOO_CATEGORY, "testInstantP")
.addArg("foo", "bar")
- .addFlow(1)
+ .setFlow(1)
.emit();
}
}
diff --git a/boot/boot-image-profile-extra.txt b/boot/boot-image-profile-extra.txt
index ced0d17..ce99bfe 100644
--- a/boot/boot-image-profile-extra.txt
+++ b/boot/boot-image-profile-extra.txt
@@ -45,11 +45,15 @@
HSPLandroid/os/MessageQueue$StackNodeType;->*
HSPLandroid/os/MessageQueue$StateNode;->*
HSPLandroid/os/MessageQueue$TimedParkStateNode;->*
+
+# For now, compile all methods in PerfettoTrace and PerfettoTrackEventExtra.
+# Similar to the existing Trace APIs, these new APIs can impact the performance
+# of many subsystems including MessageQueue. This also keeps benchmark
+# comparisons between both APIs fair.
HSPLandroid/os/PerfettoTrace$Category;->*
HSPLandroid/os/PerfettoTrace;->*
HSPLandroid/os/PerfettoTrackEventExtra;->*
-HSPLandroid/os/PerfettoTrackEventExtra$BuilderImpl;->*
-HSPLandroid/os/PerfettoTrackEventExtra$NoOpBuilder;->*
+HSPLandroid/os/PerfettoTrackEventExtra$Builder;->*
HSPLandroid/os/PerfettoTrackEventExtra$ArgBool;->*
HSPLandroid/os/PerfettoTrackEventExtra$ArgInt64;->*
HSPLandroid/os/PerfettoTrackEventExtra$ArgDouble;->*
diff --git a/core/api/current.txt b/core/api/current.txt
index 9ebb506..4862236 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -53802,8 +53802,8 @@
method @FlaggedApi("com.android.graphics.hwui.flags.limited_hdr") public void setDesiredHdrHeadroom(@FloatRange(from=0.0f, to=10000.0) float);
method public void setSecure(boolean);
method public void setSurfaceLifecycle(int);
- method public void setZOrderMediaOverlay(boolean);
- method public void setZOrderOnTop(boolean);
+ method @Deprecated @FlaggedApi("android.view.flags.deprecate_surface_view_z_order_apis") public void setZOrderMediaOverlay(boolean);
+ method @Deprecated @FlaggedApi("android.view.flags.deprecate_surface_view_z_order_apis") public void setZOrderOnTop(boolean);
field public static final int SURFACE_LIFECYCLE_DEFAULT = 0; // 0x0
field public static final int SURFACE_LIFECYCLE_FOLLOWS_ATTACHMENT = 2; // 0x2
field public static final int SURFACE_LIFECYCLE_FOLLOWS_VISIBILITY = 1; // 0x1
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index 40069aa..526a213 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -165,6 +165,16 @@
package android.media {
+ public class AudioDeviceVolumeManager {
+ method @FlaggedApi("android.media.audio.unify_absolute_volume_management") @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED, android.Manifest.permission.BLUETOOTH_PRIVILEGED, android.Manifest.permission.BLUETOOTH_STACK}) public void setDeviceAbsoluteMultiVolumeBehavior(@NonNull android.media.AudioDeviceAttributes, @NonNull java.util.List<android.media.VolumeInfo>, @NonNull java.util.concurrent.Executor, @NonNull android.media.AudioDeviceVolumeManager.OnAudioDeviceVolumeChangedListener);
+ method @FlaggedApi("android.media.audio.unify_absolute_volume_management") @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED, android.Manifest.permission.BLUETOOTH_PRIVILEGED, android.Manifest.permission.BLUETOOTH_STACK}) public void setDeviceAbsoluteVolumeBehavior(@NonNull android.media.AudioDeviceAttributes, @NonNull android.media.VolumeInfo, @NonNull java.util.concurrent.Executor, @NonNull android.media.AudioDeviceVolumeManager.OnAudioDeviceVolumeChangedListener);
+ }
+
+ @FlaggedApi("android.media.audio.unify_absolute_volume_management") public static interface AudioDeviceVolumeManager.OnAudioDeviceVolumeChangedListener {
+ method public void onAudioDeviceVolumeAdjusted(@NonNull android.media.AudioDeviceAttributes, @NonNull android.media.VolumeInfo, int, int);
+ method public void onAudioDeviceVolumeChanged(@NonNull android.media.AudioDeviceAttributes, @NonNull android.media.VolumeInfo);
+ }
+
public class AudioManager {
method public void adjustStreamVolumeForUid(int, int, int, @NonNull String, int, int, int);
method public void adjustSuggestedStreamVolumeForUid(int, int, int, @NonNull String, int, int, int);
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 4222c7c..514a582 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -2586,7 +2586,7 @@
}
public class UserManager {
- method @FlaggedApi("android.os.allow_private_profile") @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}, conditional=true) public boolean canAddPrivateProfile();
+ method @FlaggedApi("android.os.allow_private_profile") @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean canAddPrivateProfile();
method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public android.content.pm.UserInfo createProfileForUser(@Nullable String, @NonNull String, int, int, @Nullable String[]);
method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public android.content.pm.UserInfo createRestrictedProfile(@Nullable String);
method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public android.content.pm.UserInfo createUser(@Nullable String, @NonNull String, int);
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index ee9c64f..b4f6533 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -7684,16 +7684,19 @@
/**
* Change the desired orientation of this activity. If the activity is currently in the
* foreground or otherwise impacting the screen orientation, the screen is immediately changed
- * (possibly causing the activity to be restarted). Otherwise, the requested orientation is used
- * the next time the activity is visible.
+ * (possibly causing the activity to be restarted). Otherwise, the new orientation is used the
+ * next time the activity is visible.
*
* <aside class="note"><b>Note:</b>
* <ul>
- * <li>Device manufacturers can configure devices to override (ignore) calls to this
- * method to improve the layout of orientation-restricted apps.</li>
+ * <li>To improve the layout of apps on form factors with smallest width >= 600dp, the
+ * system ignores calls to this method for apps that target Android 16 (API level
+ * 36) or higher.</li>
+ * <li>Device manufacturers can configure devices to ignore calls to this method to
+ * improve the layout of orientation-restricted apps.</li>
* <li>On devices with Android 16 (API level 36) or higher installed, virtual device
- * owners (limited to select trusted and privileged apps) can optimize app layout on
- * displays they manage by ignoring calls to this method. See also
+ * owners (select trusted and privileged apps) can optimize app layout on displays
+ * they manage by ignoring calls to this method. See also
* <a href="https://source.android.com/docs/core/permissions/app-streaming">
* Companion app streaming</a>.</li>
* </ul>
@@ -7717,17 +7720,20 @@
}
/**
- * Return the current requested orientation of the activity. This is either the orientation
- * requested in the app manifest, or the last requested orientation given to
+ * Returns the current requested orientation of the activity, which is either the orientation
+ * requested in the app manifest or the last orientation given to
* {@link #setRequestedOrientation(int)}.
*
* <aside class="note"><b>Note:</b>
* <ul>
+ * <li>To improve the layout of apps on form factors with smallest width >= 600dp, the
+ * system ignores calls to this method for apps that target Android 16 (API level
+ * 36) or higher.</li>
* <li>Device manufacturers can configure devices to ignore calls to this method to
* improve the layout of orientation-restricted apps.</li>
* <li>On devices with Android 16 (API level 36) or higher installed, virtual device
- * owners (limited to select trusted and privileged apps) can optimize app layout on
- * displays they manage by ignoring calls to this method. See also
+ * owners (select trusted and privileged apps) can optimize app layout on displays
+ * they manage by ignoring calls to this method. See also
* <a href="https://source.android.com/docs/core/permissions/app-streaming">
* Companion app streaming</a>.</li>
* </ul>
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index 6151b8e..a12c067 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -23,6 +23,7 @@
import android.annotation.Nullable;
import android.annotation.PermissionMethod;
import android.annotation.PermissionName;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.app.ActivityManager.ProcessCapability;
import android.app.ActivityManager.RestrictionLevel;
@@ -1365,8 +1366,8 @@
* watchdog reset.
* @hide
*/
- public abstract void killApplicationSync(String pkgName, int appId, int userId,
- String reason, int exitInfoReason);
+ public abstract void killApplicationSync(String pkgName, int appId,
+ @CanBeALL @UserIdInt int userId, String reason, int exitInfoReason);
/**
* Queries the offset data for a given method on a process.
diff --git a/core/java/android/app/AppOpsManagerInternal.java b/core/java/android/app/AppOpsManagerInternal.java
index 8b7ea0f..a0f1930 100644
--- a/core/java/android/app/AppOpsManagerInternal.java
+++ b/core/java/android/app/AppOpsManagerInternal.java
@@ -233,4 +233,9 @@
*/
public abstract int getOpRestrictionCount(int code, UserHandle user, String pkg,
String attributionTag);
+
+ /**
+ * Invoke when a package is added.
+ */
+ public abstract void onPackageAdded(String pkgName, int uid);
}
diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java
index b611acf..eb9feb9 100644
--- a/core/java/android/app/Instrumentation.java
+++ b/core/java/android/app/Instrumentation.java
@@ -50,6 +50,7 @@
import android.os.UserManager;
import android.ravenwood.annotation.RavenwoodKeep;
import android.ravenwood.annotation.RavenwoodKeepPartialClass;
+import android.ravenwood.annotation.RavenwoodKeepWholeClass;
import android.ravenwood.annotation.RavenwoodReplace;
import android.util.AndroidRuntimeException;
import android.util.Log;
@@ -460,6 +461,7 @@
*
* @param runner The code to run on the main thread.
*/
+ @RavenwoodReplace(blockedBy = ActivityThread.class)
public void runOnMainSync(Runnable runner) {
validateNotAppThread();
SyncRunnable sr = new SyncRunnable(runner);
@@ -467,6 +469,13 @@
sr.waitForComplete();
}
+ private void runOnMainSync$ravenwood(Runnable runner) {
+ validateNotAppThread();
+ SyncRunnable sr = new SyncRunnable(runner);
+ mInstrContext.getMainExecutor().execute(sr);
+ sr.waitForComplete();
+ }
+
boolean isSdkSandboxAllowedToStartActivities() {
return Process.isSdkSandbox()
&& mThread != null
@@ -2442,7 +2451,8 @@
}
}
- private final void validateNotAppThread() {
+ @RavenwoodKeep
+ private void validateNotAppThread() {
if (Looper.myLooper() == Looper.getMainLooper()) {
throw new RuntimeException(
"This method can not be called from the main application thread");
@@ -2586,6 +2596,7 @@
}
}
+ @RavenwoodKeepWholeClass
private static final class SyncRunnable implements Runnable {
private final Runnable mTarget;
private boolean mComplete;
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 06047a4..719e438 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -5966,7 +5966,9 @@
|| resId == getMessagingCompactHeadsUpLayoutResource()
|| resId == getCollapsedMessagingLayoutResource()
|| resId == getCollapsedMediaLayoutResource()
- || resId == getCollapsedConversationLayoutResource());
+ || resId == getCollapsedConversationLayoutResource()
+ || (notificationsRedesignTemplates()
+ && resId == getCollapsedCallLayoutResource()));
RemoteViews contentView = new BuilderRemoteViews(mContext.getApplicationInfo(), resId);
resetStandardTemplate(contentView);
@@ -11035,6 +11037,7 @@
private RemoteViews makeCallLayout(int viewType) {
final boolean isCollapsed = viewType == StandardTemplateParams.VIEW_TYPE_NORMAL;
+ final boolean isHeadsUp = viewType == StandardTemplateParams.VIEW_TYPE_HEADS_UP;
Bundle extras = mBuilder.mN.extras;
CharSequence title = mPerson != null ? mPerson.getName() : null;
CharSequence text = mBuilder.processLegacyText(extras.getCharSequence(EXTRA_TEXT));
@@ -11050,22 +11053,31 @@
.hideLeftIcon(true)
.hideRightIcon(true)
.hideAppName(isCollapsed)
- .titleViewId(R.id.conversation_text)
.title(title)
- .text(text)
- .summaryText(mBuilder.processLegacyText(mVerificationText));
+ .text(text);
+ if (!notificationsRedesignTemplates()) {
+ // We're using the normal title in the redesign, not a special text.
+ p.titleViewId(R.id.conversation_text)
+ // The verification text is now part of the top line views, so this is no
+ // longer necessary.
+ .summaryText(mBuilder.processLegacyText(mVerificationText));
+ }
mBuilder.mActions = getActionsListWithSystemActions();
final RemoteViews contentView;
if (isCollapsed) {
contentView = mBuilder.applyStandardTemplate(
mBuilder.getCollapsedCallLayoutResource(), p, null /* result */);
+ } else if (notificationsRedesignTemplates() && isHeadsUp) {
+ contentView = mBuilder.applyStandardTemplateWithActions(
+ mBuilder.getCollapsedCallLayoutResource(), p, null /* result */);
} else {
contentView = mBuilder.applyStandardTemplateWithActions(
mBuilder.getExpandedCallLayoutResource(), p, null /* result */);
}
// Bind some extra conversation-specific header fields.
- if (!p.mHideAppName) {
+ if (!notificationsRedesignTemplates() && !p.mHideAppName) {
+ // Redesign note: This special divider is no longer needed.
mBuilder.setTextViewColorSecondary(contentView, R.id.app_name_divider, p);
contentView.setViewVisibility(R.id.app_name_divider, View.VISIBLE);
}
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 500f7585..5359ba4 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -17647,9 +17647,17 @@
android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS
})
public boolean isFinancedDevice() {
- return isDeviceManaged()
- && getDeviceOwnerType(getDeviceOwnerComponentOnAnyUser())
- == DEVICE_OWNER_TYPE_FINANCED;
+ try {
+ return isDeviceManaged()
+ && getDeviceOwnerType(getDeviceOwnerComponentOnAnyUser())
+ == DEVICE_OWNER_TYPE_FINANCED;
+ } catch (IllegalStateException e) {
+ // getDeviceOwnerType() will throw IllegalStateException if the device does not have a
+ // DO. This can happen under a race condition when the DO is removed after
+ // isDeviceManaged() (so it still returns true) but before getDeviceOwnerType().
+ // In this case, the device should not be considered a financed device.
+ return false;
+ }
}
// TODO(b/315298076): revert ag/25574027 and update the doc
diff --git a/core/java/android/app/supervision/flags.aconfig b/core/java/android/app/supervision/flags.aconfig
index 94de038..7094183 100644
--- a/core/java/android/app/supervision/flags.aconfig
+++ b/core/java/android/app/supervision/flags.aconfig
@@ -72,3 +72,11 @@
description: "Flag that enables system APIs in Supervision Manager"
bug: "382034839"
}
+
+flag {
+ name: "enable_web_content_filters_screen"
+ is_exported: true
+ namespace: "supervision"
+ description: "Flag that enables the web content filters screen with Supervision settings entry point"
+ bug: "395134536"
+}
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java
index efcaa0e..a753cbf 100644
--- a/core/java/android/content/ContentResolver.java
+++ b/core/java/android/content/ContentResolver.java
@@ -23,6 +23,8 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.annotation.SpecialUsers.CanBeALL;
+import android.annotation.SpecialUsers.CanBeCURRENT;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.TestApi;
@@ -2709,7 +2711,7 @@
public final void registerContentObserverAsUser(@NonNull Uri uri,
boolean notifyForDescendants,
@NonNull ContentObserver observer,
- @NonNull UserHandle userHandle) {
+ @NonNull @CanBeALL @CanBeCURRENT UserHandle userHandle) {
Objects.requireNonNull(uri, "uri");
Objects.requireNonNull(observer, "observer");
Objects.requireNonNull(userHandle, "userHandle");
@@ -2723,7 +2725,7 @@
/** @hide - designated user version */
@UnsupportedAppUsage
public final void registerContentObserver(Uri uri, boolean notifyForDescendants,
- ContentObserver observer, @UserIdInt int userHandle) {
+ ContentObserver observer, @CanBeALL @CanBeCURRENT @UserIdInt int userHandle) {
try {
getContentService().registerContentObserver(uri, notifyForDescendants,
observer.getContentObserver(), userHandle, mTargetSdkVersion);
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index 0559631..2658efa 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -482,7 +482,6 @@
*
* @return Typeface The Typeface data associated with the resource.
*/
- @RavenwoodThrow(blockedBy = Typeface.class)
@NonNull public Typeface getFont(@FontRes int id) throws NotFoundException {
final TypedValue value = obtainTempTypedValue();
try {
@@ -507,7 +506,6 @@
/**
* @hide
*/
- @RavenwoodThrow(blockedBy = Typeface.class)
public void preloadFonts(@ArrayRes int id) {
final TypedArray array = obtainTypedArray(id);
try {
diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java
index eec30f3..8c76fd7 100644
--- a/core/java/android/content/res/ResourcesImpl.java
+++ b/core/java/android/content/res/ResourcesImpl.java
@@ -1068,7 +1068,6 @@
* Loads a font from XML or resources stream.
*/
@Nullable
- @RavenwoodThrow(blockedBy = Typeface.class)
public Typeface loadFont(Resources wrapper, TypedValue value, int id) {
if (value.string == null) {
throw new NotFoundException("Resource \"" + getResourceName(id) + "\" ("
diff --git a/core/java/android/content/res/TypedArray.java b/core/java/android/content/res/TypedArray.java
index 79185a1..ee7d008 100644
--- a/core/java/android/content/res/TypedArray.java
+++ b/core/java/android/content/res/TypedArray.java
@@ -1043,7 +1043,6 @@
* not a font resource.
*/
@Nullable
- @RavenwoodThrow(blockedBy = Typeface.class)
public Typeface getFont(@StyleableRes int index) {
if (mRecycled) {
throw new RuntimeException("Cannot make calls to a recycled instance!");
diff --git a/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java b/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java
index bfbcfd8..1bf01f4 100644
--- a/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java
+++ b/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java
@@ -68,6 +68,7 @@
* @hide
*/
@SystemApi
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class FontFamilyUpdateRequest {
/**
diff --git a/core/java/android/graphics/fonts/FontFileUpdateRequest.java b/core/java/android/graphics/fonts/FontFileUpdateRequest.java
index cf1dca9..1f2be6f 100644
--- a/core/java/android/graphics/fonts/FontFileUpdateRequest.java
+++ b/core/java/android/graphics/fonts/FontFileUpdateRequest.java
@@ -28,6 +28,7 @@
* @hide
*/
@SystemApi
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class FontFileUpdateRequest {
private final ParcelFileDescriptor mParcelFileDescriptor;
diff --git a/core/java/android/hardware/contexthub/HubEndpoint.java b/core/java/android/hardware/contexthub/HubEndpoint.java
index b7edef6..47ba51d 100644
--- a/core/java/android/hardware/contexthub/HubEndpoint.java
+++ b/core/java/android/hardware/contexthub/HubEndpoint.java
@@ -126,7 +126,16 @@
if (sessionExists) {
Log.w(
TAG,
- "onSessionOpenComplete: session already exists, id=" + sessionId);
+ "onSessionOpenRequest: session already exists, id=" + sessionId);
+ }
+
+ if (mLifecycleCallback == null) {
+ Log.w(
+ TAG,
+ "onSessionOpenRequest: "
+ + "failed to open session, no lifecycle callback attached",
+ new Exception());
+ rejectSession(sessionId);
}
if (!sessionExists && mLifecycleCallback != null) {
diff --git a/core/java/android/hardware/contexthub/HubEndpointSession.java b/core/java/android/hardware/contexthub/HubEndpointSession.java
index ca59be8..c5e2d7a 100644
--- a/core/java/android/hardware/contexthub/HubEndpointSession.java
+++ b/core/java/android/hardware/contexthub/HubEndpointSession.java
@@ -88,7 +88,6 @@
: ContextHubTransaction.TYPE_HUB_MESSAGE_DEFAULT);
if (!isResponseRequired) {
// If the message doesn't require acknowledgement, respond with success immediately
- // TODO(b/379162322): Improve handling of synchronous failures.
mHubEndpoint.sendMessage(this, message, null);
ret.setResponse(
new ContextHubTransaction.Response<>(
diff --git a/core/java/android/os/CombinedMessageQueue/MessageQueue.java b/core/java/android/os/CombinedMessageQueue/MessageQueue.java
index 3c03bb5..7497234 100644
--- a/core/java/android/os/CombinedMessageQueue/MessageQueue.java
+++ b/core/java/android/os/CombinedMessageQueue/MessageQueue.java
@@ -130,7 +130,7 @@
MessageQueue(boolean quitAllowed) {
initIsProcessAllowedToUseConcurrent();
- mUseConcurrent = sIsProcessAllowedToUseConcurrent && !isInstrumenting();
+ mUseConcurrent = sIsProcessAllowedToUseConcurrent;
mQuitAllowed = quitAllowed;
mPtr = nativeInit();
mThread = Thread.currentThread();
@@ -202,15 +202,6 @@
return;
}
- private static boolean isInstrumenting() {
- final ActivityThread activityThread = ActivityThread.currentActivityThread();
- if (activityThread == null) {
- return false;
- }
- final Instrumentation instrumentation = activityThread.getInstrumentation();
- return instrumentation != null && instrumentation.isInstrumenting();
- }
-
@Override
protected void finalize() throws Throwable {
try {
diff --git a/core/java/android/os/PerfettoTrace.java b/core/java/android/os/PerfettoTrace.java
index 741d542..932836f 100644
--- a/core/java/android/os/PerfettoTrace.java
+++ b/core/java/android/os/PerfettoTrace.java
@@ -232,10 +232,6 @@
* @param eventName The event name to appear in the trace.
*/
public static PerfettoTrackEventExtra.Builder instant(Category category, String eventName) {
- if (!category.isEnabled()) {
- return PerfettoTrackEventExtra.noOpBuilder();
- }
-
return PerfettoTrackEventExtra.builder().init(PERFETTO_TE_TYPE_INSTANT, category)
.setEventName(eventName);
}
@@ -247,10 +243,6 @@
* @param eventName The event name to appear in the trace.
*/
public static PerfettoTrackEventExtra.Builder begin(Category category, String eventName) {
- if (!category.isEnabled()) {
- return PerfettoTrackEventExtra.noOpBuilder();
- }
-
return PerfettoTrackEventExtra.builder().init(PERFETTO_TE_TYPE_SLICE_BEGIN, category)
.setEventName(eventName);
}
@@ -261,10 +253,6 @@
* @param category The perfetto category.
*/
public static PerfettoTrackEventExtra.Builder end(Category category) {
- if (!category.isEnabled()) {
- return PerfettoTrackEventExtra.noOpBuilder();
- }
-
return PerfettoTrackEventExtra.builder().init(PERFETTO_TE_TYPE_SLICE_END, category);
}
@@ -275,10 +263,6 @@
* @param value The value of the counter.
*/
public static PerfettoTrackEventExtra.Builder counter(Category category, long value) {
- if (!category.isEnabled()) {
- return PerfettoTrackEventExtra.noOpBuilder();
- }
-
return PerfettoTrackEventExtra.builder().init(PERFETTO_TE_TYPE_COUNTER, category)
.setCounter(value);
}
@@ -302,10 +286,6 @@
* @param value The value of the counter.
*/
public static PerfettoTrackEventExtra.Builder counter(Category category, double value) {
- if (!category.isEnabled()) {
- return PerfettoTrackEventExtra.noOpBuilder();
- }
-
return PerfettoTrackEventExtra.builder().init(PERFETTO_TE_TYPE_COUNTER, category)
.setCounter(value);
}
diff --git a/core/java/android/os/PerfettoTrackEventExtra.java b/core/java/android/os/PerfettoTrackEventExtra.java
index 6844229..f4b5dfe 100644
--- a/core/java/android/os/PerfettoTrackEventExtra.java
+++ b/core/java/android/os/PerfettoTrackEventExtra.java
@@ -35,8 +35,8 @@
*/
@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class PerfettoTrackEventExtra {
+ private static final boolean DEBUG = false;
private static final int DEFAULT_EXTRA_CACHE_SIZE = 5;
- private static final Builder NO_OP_BUILDER = new NoOpBuilder();
private static final ThreadLocal<PerfettoTrackEventExtra> sTrackEventExtra =
new ThreadLocal<PerfettoTrackEventExtra>() {
@Override
@@ -46,7 +46,7 @@
};
private static final AtomicLong sNamedTrackId = new AtomicLong();
private static final Supplier<Flow> sFlowSupplier = Flow::new;
- private static final Supplier<BuilderImpl> sBuilderSupplier = BuilderImpl::new;
+ private static final Supplier<Builder> sBuilderSupplier = Builder::new;
private static final Supplier<FieldInt64> sFieldInt64Supplier = FieldInt64::new;
private static final Supplier<FieldDouble> sFieldDoubleSupplier = FieldDouble::new;
private static final Supplier<FieldString> sFieldStringSupplier = FieldString::new;
@@ -56,6 +56,8 @@
private CounterInt64 mCounterInt64;
private CounterDouble mCounterDouble;
private Proto mProto;
+ private Flow mFlow;
+ private Flow mTerminatingFlow;
/**
* Represents a native pointer to a Perfetto C SDK struct. E.g. PerfettoTeHlExtra.
@@ -135,245 +137,10 @@
}
}
- public interface Builder {
- /**
- * Emits the track event.
- */
- void emit();
-
- /**
- * Initialize the builder for a new trace event.
- */
- Builder init(int traceType, PerfettoTrace.Category category);
-
- /**
- * Sets the event name for the track event.
- */
- Builder setEventName(String eventName);
-
- /**
- * Adds a debug arg with key {@code name} and value {@code val}.
- */
- Builder addArg(String name, long val);
-
- /**
- * Adds a debug arg with key {@code name} and value {@code val}.
- */
- Builder addArg(String name, boolean val);
-
- /**
- * Adds a debug arg with key {@code name} and value {@code val}.
- */
- Builder addArg(String name, double val);
-
- /**
- * Adds a debug arg with key {@code name} and value {@code val}.
- */
- Builder addArg(String name, String val);
-
- /**
- * Adds a flow with {@code id}.
- */
- Builder addFlow(int id);
-
- /**
- * Adds a terminating flow with {@code id}.
- */
- Builder addTerminatingFlow(int id);
-
- /**
- * Adds the events to a named track instead of the thread track where the
- * event occurred.
- */
- Builder usingNamedTrack(long parentUuid, String name);
-
- /**
- * Adds the events to a process scoped named track instead of the thread track where the
- * event occurred.
- */
- Builder usingProcessNamedTrack(String name);
-
- /**
- * Adds the events to a thread scoped named track instead of the thread track where the
- * event occurred.
- */
- Builder usingThreadNamedTrack(long tid, String name);
-
- /**
- * Adds the events to a counter track instead. This is required for
- * setting counter values.
- */
- Builder usingCounterTrack(long parentUuid, String name);
-
- /**
- * Adds the events to a process scoped counter track instead. This is required for
- * setting counter values.
- */
- Builder usingProcessCounterTrack(String name);
-
- /**
- * Adds the events to a thread scoped counter track instead. This is required for
- * setting counter values.
- */
- Builder usingThreadCounterTrack(long tid, String name);
-
- /**
- * Sets a long counter value on the event.
- *
- */
- Builder setCounter(long val);
-
- /**
- * Sets a double counter value on the event.
- *
- */
- Builder setCounter(double val);
-
- /**
- * Adds a proto field with field id {@code id} and value {@code val}.
- */
- Builder addField(long id, long val);
-
- /**
- * Adds a proto field with field id {@code id} and value {@code val}.
- */
- Builder addField(long id, double val);
-
- /**
- * Adds a proto field with field id {@code id} and value {@code val}.
- */
- Builder addField(long id, String val);
-
- /**
- * Begins a proto field with field
- * Fields can be added from this point and there must be a corresponding
- * {@link endProto}.
- *
- * The proto field is a singleton and all proto fields get added inside the
- * one {@link beginProto} and {@link endProto} within the {@link Builder}.
- */
- Builder beginProto();
-
- /**
- * Ends a proto field.
- */
- Builder endProto();
-
- /**
- * Begins a nested proto field with field id {@code id}.
- * Fields can be added from this point and there must be a corresponding
- * {@link endNested}.
- */
- Builder beginNested(long id);
-
- /**
- * Ends a nested proto field.
- */
- Builder endNested();
- }
-
- @android.ravenwood.annotation.RavenwoodKeepWholeClass
- public static final class NoOpBuilder implements Builder {
- @Override
- public void emit() {}
- @Override
- public Builder init(int traceType, PerfettoTrace.Category category) {
- return this;
- }
- @Override
- public Builder setEventName(String eventName) {
- return this;
- }
- @Override
- public Builder addArg(String name, long val) {
- return this;
- }
- @Override
- public Builder addArg(String name, boolean val) {
- return this;
- }
- @Override
- public Builder addArg(String name, double val) {
- return this;
- }
- @Override
- public Builder addArg(String name, String val) {
- return this;
- }
- @Override
- public Builder addFlow(int id) {
- return this;
- }
- @Override
- public Builder addTerminatingFlow(int id) {
- return this;
- }
- @Override
- public Builder usingNamedTrack(long parentUuid, String name) {
- return this;
- }
- @Override
- public Builder usingProcessNamedTrack(String name) {
- return this;
- }
- @Override
- public Builder usingThreadNamedTrack(long tid, String name) {
- return this;
- }
- @Override
- public Builder usingCounterTrack(long parentUuid, String name) {
- return this;
- }
- @Override
- public Builder usingProcessCounterTrack(String name) {
- return this;
- }
- @Override
- public Builder usingThreadCounterTrack(long tid, String name) {
- return this;
- }
- @Override
- public Builder setCounter(long val) {
- return this;
- }
- @Override
- public Builder setCounter(double val) {
- return this;
- }
- @Override
- public Builder addField(long id, long val) {
- return this;
- }
- @Override
- public Builder addField(long id, double val) {
- return this;
- }
- @Override
- public Builder addField(long id, String val) {
- return this;
- }
- @Override
- public Builder beginProto() {
- return this;
- }
- @Override
- public Builder endProto() {
- return this;
- }
- @Override
- public Builder beginNested(long id) {
- return this;
- }
- @Override
- public Builder endNested() {
- return this;
- }
- }
-
/**
* Builder for Perfetto track event extras.
*/
- public static final class BuilderImpl implements Builder {
+ public static final class Builder {
// For performance reasons, we hold a reference to mExtra as a holder for
// perfetto pointers being added. This way, we avoid an additional list to hold
// the pointers in Java and we can pass them down directly to native code.
@@ -386,10 +153,13 @@
private Builder mParent;
private FieldContainer mCurrentContainer;
+ private boolean mIsCategoryEnabled;
private final CounterInt64 mCounterInt64;
private final CounterDouble mCounterDouble;
private final Proto mProto;
+ private final Flow mFlow;
+ private final Flow mTerminatingFlow;
private final RingBuffer<NamedTrack> mNamedTrackCache;
private final RingBuffer<CounterTrack> mCounterTrackCache;
@@ -403,9 +173,9 @@
private final Pool<FieldString> mFieldStringCache;
private final Pool<FieldNested> mFieldNestedCache;
private final Pool<Flow> mFlowCache;
- private final Pool<BuilderImpl> mBuilderCache;
+ private final Pool<Builder> mBuilderCache;
- private BuilderImpl() {
+ private Builder() {
mExtra = sTrackEventExtra.get();
mNamedTrackCache = mExtra.mNamedTrackCache;
mCounterTrackCache = mExtra.mCounterTrackCache;
@@ -423,20 +193,32 @@
mCounterInt64 = mExtra.getCounterInt64();
mCounterDouble = mExtra.getCounterDouble();
mProto = mExtra.getProto();
+ mFlow = mExtra.getFlow();
+ mTerminatingFlow = mExtra.getTerminatingFlow();
}
- @Override
+ /**
+ * Emits the track event.
+ */
public void emit() {
- checkParent();
- mIsBuilt = true;
+ if (!mIsCategoryEnabled) {
+ return;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
+ mIsBuilt = true;
native_emit(mTraceType, mCategory.getPtr(), mEventName, mExtra.getPtr());
- // Reset after emitting to free any the extras used to trace the event.
- mExtra.reset();
}
- @Override
+ /**
+ * Initialize the builder for a new trace event.
+ */
public Builder init(int traceType, PerfettoTrace.Category category) {
+ if (!category.isEnabled()) {
+ return this;
+ }
mTraceType = traceType;
mCategory = category;
mEventName = "";
@@ -449,18 +231,27 @@
mExtra.reset();
// Reset after on init in case the thread created builders without calling emit
- return initInternal(this, null);
+ return initInternal(this, null, true);
}
- @Override
+ /**
+ * Sets the event name for the track event.
+ */
public Builder setEventName(String eventName) {
mEventName = eventName;
return this;
}
- @Override
+ /**
+ * Adds a debug arg with key {@code name} and value {@code val}.
+ */
public Builder addArg(String name, long val) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
ArgInt64 arg = mArgInt64Cache.get(name.hashCode());
if (arg == null || !arg.getName().equals(name)) {
arg = new ArgInt64(name);
@@ -471,9 +262,16 @@
return this;
}
- @Override
+ /**
+ * Adds a debug arg with key {@code name} and value {@code val}.
+ */
public Builder addArg(String name, boolean val) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
ArgBool arg = mArgBoolCache.get(name.hashCode());
if (arg == null || !arg.getName().equals(name)) {
arg = new ArgBool(name);
@@ -484,9 +282,16 @@
return this;
}
- @Override
+ /**
+ * Adds a debug arg with key {@code name} and value {@code val}.
+ */
public Builder addArg(String name, double val) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
ArgDouble arg = mArgDoubleCache.get(name.hashCode());
if (arg == null || !arg.getName().equals(name)) {
arg = new ArgDouble(name);
@@ -497,9 +302,16 @@
return this;
}
- @Override
+ /**
+ * Adds a debug arg with key {@code name} and value {@code val}.
+ */
public Builder addArg(String name, String val) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
ArgString arg = mArgStringCache.get(name.hashCode());
if (arg == null || !arg.getName().equals(name)) {
arg = new ArgString(name);
@@ -510,27 +322,79 @@
return this;
}
- @Override
+ /**
+ * Adds a flow with {@code id}.
+ */
public Builder addFlow(int id) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
Flow flow = mFlowCache.get(sFlowSupplier);
flow.setProcessFlow(id);
mExtra.addPerfettoPointer(flow);
return this;
}
- @Override
+ /**
+ * Adds a terminating flow with {@code id}.
+ */
public Builder addTerminatingFlow(int id) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
Flow flow = mFlowCache.get(sFlowSupplier);
flow.setProcessTerminatingFlow(id);
mExtra.addPerfettoPointer(flow);
return this;
}
- @Override
+ /**
+ * Adds a flow with {@code id}.
+ */
+ public Builder setFlow(int id) {
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
+ mFlow.setProcessFlow(id);
+ mExtra.addPerfettoPointer(mFlow);
+ return this;
+ }
+
+ /**
+ * Adds a terminating flow with {@code id}.
+ */
+ public Builder setTerminatingFlow(int id) {
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
+ mTerminatingFlow.setProcessTerminatingFlow(id);
+ mExtra.addPerfettoPointer(mTerminatingFlow);
+ return this;
+ }
+
+ /**
+ * Adds the events to a named track instead of the thread track where the
+ * event occurred.
+ */
public Builder usingNamedTrack(long parentUuid, String name) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
NamedTrack track = mNamedTrackCache.get(name.hashCode());
if (track == null || !track.getName().equals(name)) {
@@ -541,19 +405,39 @@
return this;
}
- @Override
+ /**
+ * Adds the events to a process scoped named track instead of the thread track where the
+ * event occurred.
+ */
public Builder usingProcessNamedTrack(String name) {
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
return usingNamedTrack(PerfettoTrace.getProcessTrackUuid(), name);
}
- @Override
+ /**
+ * Adds the events to a thread scoped named track instead of the thread track where the
+ * event occurred.
+ */
public Builder usingThreadNamedTrack(long tid, String name) {
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
return usingNamedTrack(PerfettoTrace.getThreadTrackUuid(tid), name);
}
- @Override
+ /**
+ * Adds the events to a counter track instead. This is required for
+ * setting counter values.
+ */
public Builder usingCounterTrack(long parentUuid, String name) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
CounterTrack track = mCounterTrackCache.get(name.hashCode());
if (track == null || !track.getName().equals(name)) {
@@ -564,95 +448,178 @@
return this;
}
- @Override
+ /**
+ * Adds the events to a process scoped counter track instead. This is required for
+ * setting counter values.
+ */
public Builder usingProcessCounterTrack(String name) {
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
return usingCounterTrack(PerfettoTrace.getProcessTrackUuid(), name);
}
- @Override
+ /**
+ * Adds the events to a thread scoped counter track instead. This is required for
+ * setting counter values.
+ */
public Builder usingThreadCounterTrack(long tid, String name) {
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
return usingCounterTrack(PerfettoTrace.getThreadTrackUuid(tid), name);
}
- @Override
+ /**
+ * Sets a long counter value on the event.
+ *
+ */
public Builder setCounter(long val) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
mCounterInt64.setValue(val);
mExtra.addPerfettoPointer(mCounterInt64);
return this;
}
- @Override
+ /**
+ * Sets a double counter value on the event.
+ *
+ */
public Builder setCounter(double val) {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
mCounterDouble.setValue(val);
mExtra.addPerfettoPointer(mCounterDouble);
return this;
}
- @Override
+ /**
+ * Adds a proto field with field id {@code id} and value {@code val}.
+ */
public Builder addField(long id, long val) {
- checkContainer();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkContainer();
+ }
FieldInt64 field = mFieldInt64Cache.get(sFieldInt64Supplier);
field.setValue(id, val);
mExtra.addPerfettoPointer(mCurrentContainer, field);
return this;
}
- @Override
+ /**
+ * Adds a proto field with field id {@code id} and value {@code val}.
+ */
public Builder addField(long id, double val) {
- checkContainer();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkContainer();
+ }
FieldDouble field = mFieldDoubleCache.get(sFieldDoubleSupplier);
field.setValue(id, val);
mExtra.addPerfettoPointer(mCurrentContainer, field);
return this;
}
- @Override
+ /**
+ * Adds a proto field with field id {@code id} and value {@code val}.
+ */
public Builder addField(long id, String val) {
- checkContainer();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkContainer();
+ }
FieldString field = mFieldStringCache.get(sFieldStringSupplier);
field.setValue(id, val);
mExtra.addPerfettoPointer(mCurrentContainer, field);
return this;
}
- @Override
+ /**
+ * Begins a proto field.
+ * Fields can be added from this point and there must be a corresponding
+ * {@link endProto}.
+ *
+ * The proto field is a singleton and all proto fields get added inside the
+ * one {@link beginProto} and {@link endProto} within the {@link Builder}.
+ */
public Builder beginProto() {
- checkParent();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkParent();
+ }
mProto.clearFields();
mExtra.addPerfettoPointer(mProto);
- return mBuilderCache.get(sBuilderSupplier).initInternal(this, mProto);
+ return mBuilderCache.get(sBuilderSupplier).initInternal(this, mProto, true);
}
- @Override
+ /**
+ * Ends a proto field.
+ */
public Builder endProto() {
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
if (mParent == null || mCurrentContainer == null) {
throw new IllegalStateException("No proto to end");
}
return mParent;
}
- @Override
+ /**
+ * Begins a nested proto field with field id {@code id}.
+ * Fields can be added from this point and there must be a corresponding
+ * {@link endNested}.
+ */
public Builder beginNested(long id) {
- checkContainer();
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
+ if (DEBUG) {
+ checkContainer();
+ }
FieldNested field = mFieldNestedCache.get(sFieldNestedSupplier);
field.setId(id);
mExtra.addPerfettoPointer(mCurrentContainer, field);
- return mBuilderCache.get(sBuilderSupplier).initInternal(this, field);
+ return mBuilderCache.get(sBuilderSupplier).initInternal(this, field, true);
}
- @Override
+ /**
+ * Ends a nested proto field.
+ */
public Builder endNested() {
+ if (!mIsCategoryEnabled) {
+ return this;
+ }
if (mParent == null || mCurrentContainer == null) {
throw new IllegalStateException("No nested field to end");
}
return mParent;
}
- private Builder initInternal(Builder parent, FieldContainer container) {
+
+ private Builder initInternal(Builder parent, FieldContainer field,
+ boolean isCategoryEnabled) {
mParent = parent;
- mCurrentContainer = container;
+ mCurrentContainer = field;
+ mIsCategoryEnabled = isCategoryEnabled;
mIsBuilt = false;
return this;
@@ -685,14 +652,8 @@
* Start a {@link Builder} to build a {@link PerfettoTrackEventExtra}.
*/
public static Builder builder() {
- return sTrackEventExtra.get().mBuilderCache.get(sBuilderSupplier).initInternal(null, null);
- }
-
- /**
- * Returns a no-op {@link Builder}. Useful if a category is disabled.
- */
- public static Builder noOpBuilder() {
- return NO_OP_BUILDER;
+ return sTrackEventExtra.get().mBuilderCache.get(sBuilderSupplier).initInternal(null, null,
+ false);
}
private final RingBuffer<NamedTrack> mNamedTrackCache =
@@ -710,7 +671,7 @@
private final Pool<FieldString> mFieldStringCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE);
private final Pool<FieldNested> mFieldNestedCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE);
private final Pool<Flow> mFlowCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE);
- private final Pool<BuilderImpl> mBuilderCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE);
+ private final Pool<Builder> mBuilderCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE);
private static final NativeAllocationRegistry sRegistry =
NativeAllocationRegistry.createMalloced(
@@ -757,6 +718,7 @@
mPendingPointers.clear();
}
+ @android.ravenwood.annotation.RavenwoodReplace
private CounterInt64 getCounterInt64() {
if (mCounterInt64 == null) {
mCounterInt64 = new CounterInt64();
@@ -764,6 +726,7 @@
return mCounterInt64;
}
+ @android.ravenwood.annotation.RavenwoodReplace
private CounterDouble getCounterDouble() {
if (mCounterDouble == null) {
mCounterDouble = new CounterDouble();
@@ -771,6 +734,7 @@
return mCounterDouble;
}
+ @android.ravenwood.annotation.RavenwoodReplace
private Proto getProto() {
if (mProto == null) {
mProto = new Proto();
@@ -778,6 +742,22 @@
return mProto;
}
+ @android.ravenwood.annotation.RavenwoodReplace
+ private Flow getFlow() {
+ if (mFlow == null) {
+ mFlow = new Flow();
+ }
+ return mFlow;
+ }
+
+ @android.ravenwood.annotation.RavenwoodReplace
+ private Flow getTerminatingFlow() {
+ if (mTerminatingFlow == null) {
+ mTerminatingFlow = new Flow();
+ }
+ return mTerminatingFlow;
+ }
+
private static final class Flow implements PerfettoPointer {
private static final NativeAllocationRegistry sRegistry =
NativeAllocationRegistry.createMalloced(
@@ -1337,4 +1317,29 @@
// Tracing currently completely disabled under Ravenwood
return 0;
}
+
+ private CounterInt64 getCounterInt64$ravenwood() {
+ // Tracing currently completely disabled under Ravenwood
+ return null;
+ }
+
+ private CounterDouble getCounterDouble$ravenwood() {
+ // Tracing currently completely disabled under Ravenwood
+ return null;
+ }
+
+ private Proto getProto$ravenwood() {
+ // Tracing currently completely disabled under Ravenwood
+ return null;
+ }
+
+ private Flow getFlow$ravenwood() {
+ // Tracing currently completely disabled under Ravenwood
+ return null;
+ }
+
+ private Flow getTerminatingFlow$ravenwood() {
+ // Tracing currently completely disabled under Ravenwood
+ return null;
+ }
}
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 33bf4a2..767019d 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -3324,8 +3324,7 @@
@FlaggedApi(android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE)
@RequiresPermission(anyOf = {
Manifest.permission.MANAGE_USERS,
- Manifest.permission.CREATE_USERS},
- conditional = true)
+ Manifest.permission.CREATE_USERS})
@UserHandleAware
public boolean canAddPrivateProfile() {
if (!android.multiuser.Flags.enablePrivateSpaceFeatures()) return false;
diff --git a/core/java/android/permission/flags.aconfig b/core/java/android/permission/flags.aconfig
index d469a2f..ca24c0c 100644
--- a/core/java/android/permission/flags.aconfig
+++ b/core/java/android/permission/flags.aconfig
@@ -514,3 +514,12 @@
description: "Force AttributionSource.myAttributionSource() to return a default device id"
bug: "343121936"
}
+
+flag {
+ name: "grant_read_blocked_numbers_to_system_ui_intelligence"
+ is_exported: true
+ is_fixed_read_only: true
+ namespace: "permissions"
+ description: "This flag is used to add role protection to READ_BLOCKED_NUMBERS for SYSTEM_UI_INTELLIGENCE"
+ bug: "354758615"
+}
diff --git a/core/java/android/text/AlteredCharSequence.java b/core/java/android/text/AlteredCharSequence.java
index 971a47d..a05c690a 100644
--- a/core/java/android/text/AlteredCharSequence.java
+++ b/core/java/android/text/AlteredCharSequence.java
@@ -24,6 +24,7 @@
* @deprecated The functionality this class offers is easily implemented outside the framework.
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AlteredCharSequence
implements CharSequence, GetChars
{
diff --git a/core/java/android/text/AndroidBidi.java b/core/java/android/text/AndroidBidi.java
index 31da799..fcdd50a 100644
--- a/core/java/android/text/AndroidBidi.java
+++ b/core/java/android/text/AndroidBidi.java
@@ -28,6 +28,7 @@
* @hide
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AndroidBidi {
/**
diff --git a/core/java/android/text/AndroidCharacter.java b/core/java/android/text/AndroidCharacter.java
index c5f1a01..37c4fdb 100644
--- a/core/java/android/text/AndroidCharacter.java
+++ b/core/java/android/text/AndroidCharacter.java
@@ -22,6 +22,7 @@
* @deprecated Use various methods from {@link android.icu.lang.UCharacter}, instead.
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AndroidCharacter
{
public static final int EAST_ASIAN_WIDTH_NEUTRAL = 0;
diff --git a/core/java/android/text/Annotation.java b/core/java/android/text/Annotation.java
index bb5d3ea..ac3e5a9 100644
--- a/core/java/android/text/Annotation.java
+++ b/core/java/android/text/Annotation.java
@@ -23,6 +23,7 @@
* TextView save/restore cycles and can be used to keep application-specific
* data that needs to be maintained for regions of text.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Annotation implements ParcelableSpan {
private final String mKey;
private final String mValue;
diff --git a/core/java/android/text/AutoGrowArray.java b/core/java/android/text/AutoGrowArray.java
index e428377..06c74c3 100644
--- a/core/java/android/text/AutoGrowArray.java
+++ b/core/java/android/text/AutoGrowArray.java
@@ -30,6 +30,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class AutoGrowArray {
private static final int MIN_CAPACITY_INCREMENT = 12;
private static final int MAX_CAPACITY_TO_BE_KEPT = 10000;
diff --git a/core/java/android/text/AutoText.java b/core/java/android/text/AutoText.java
index c5339a4..d7b0547 100644
--- a/core/java/android/text/AutoText.java
+++ b/core/java/android/text/AutoText.java
@@ -31,6 +31,7 @@
/**
* This class accesses a dictionary of corrections to frequent misspellings.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AutoText {
// struct trie {
// char c;
diff --git a/core/java/android/text/BidiFormatter.java b/core/java/android/text/BidiFormatter.java
index dfa172d..6d4103c 100644
--- a/core/java/android/text/BidiFormatter.java
+++ b/core/java/android/text/BidiFormatter.java
@@ -82,6 +82,7 @@
* first-strong estimation algorithm. It can also be configured to use a custom directionality
* estimation object.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class BidiFormatter {
/**
diff --git a/core/java/android/text/BoringLayout.java b/core/java/android/text/BoringLayout.java
index 4fdcecc..2b410e6 100644
--- a/core/java/android/text/BoringLayout.java
+++ b/core/java/android/text/BoringLayout.java
@@ -45,6 +45,7 @@
* {@link android.graphics.Canvas#drawText(java.lang.CharSequence, int, int, float, float, android.graphics.Paint)
* Canvas.drawText()} directly.</p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback {
/**
diff --git a/core/java/android/text/CharSequenceCharacterIterator.java b/core/java/android/text/CharSequenceCharacterIterator.java
index 9b07d29..1599be8 100644
--- a/core/java/android/text/CharSequenceCharacterIterator.java
+++ b/core/java/android/text/CharSequenceCharacterIterator.java
@@ -24,6 +24,7 @@
* An implementation of {@link java.text.CharacterIterator} that iterates over a given CharSequence.
* {@hide}
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class CharSequenceCharacterIterator implements CharacterIterator {
private final int mBeginIndex, mEndIndex;
private int mIndex;
diff --git a/core/java/android/text/ClipboardManager.java b/core/java/android/text/ClipboardManager.java
index d030910..41990f0 100644
--- a/core/java/android/text/ClipboardManager.java
+++ b/core/java/android/text/ClipboardManager.java
@@ -21,6 +21,7 @@
* {@link android.content.ClipboardManager} for the modern API.
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class ClipboardManager {
/**
* Returns the text on the clipboard. It will eventually be possible
diff --git a/core/java/android/text/DynamicLayout.java b/core/java/android/text/DynamicLayout.java
index 6b1aef7..3b66ce0 100644
--- a/core/java/android/text/DynamicLayout.java
+++ b/core/java/android/text/DynamicLayout.java
@@ -53,6 +53,7 @@
* {@link android.graphics.Canvas#drawText(java.lang.CharSequence, int, int, float, float, android.graphics.Paint)
* Canvas.drawText()} directly.</p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DynamicLayout extends Layout {
private static final int PRIORITY = 128;
private static final int BLOCK_MINIMUM_CHARACTER_LENGTH = 400;
diff --git a/core/java/android/text/Editable.java b/core/java/android/text/Editable.java
index a942f6c..53d819f 100644
--- a/core/java/android/text/Editable.java
+++ b/core/java/android/text/Editable.java
@@ -22,6 +22,7 @@
* to immutable text like Strings). If you make a {@link DynamicLayout}
* of an Editable, the layout will be reflowed as the text is changed.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface Editable
extends CharSequence, GetChars, Spannable, Appendable
{
diff --git a/core/java/android/text/Emoji.java b/core/java/android/text/Emoji.java
index cf0e3c2..28c37c0 100644
--- a/core/java/android/text/Emoji.java
+++ b/core/java/android/text/Emoji.java
@@ -23,6 +23,7 @@
* An utility class for Emoji.
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Emoji {
public static int COMBINING_ENCLOSING_KEYCAP = 0x20E3;
diff --git a/core/java/android/text/EmojiConsistency.java b/core/java/android/text/EmojiConsistency.java
index dfaa217..9823305 100644
--- a/core/java/android/text/EmojiConsistency.java
+++ b/core/java/android/text/EmojiConsistency.java
@@ -48,6 +48,7 @@
* </ol>
* </p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class EmojiConsistency {
/* Cannot construct */
private EmojiConsistency() { }
diff --git a/core/java/android/text/FontConfig.java b/core/java/android/text/FontConfig.java
index 783f3b7..5a4d3a8 100644
--- a/core/java/android/text/FontConfig.java
+++ b/core/java/android/text/FontConfig.java
@@ -55,6 +55,7 @@
*/
@SystemApi
@TestApi
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class FontConfig implements Parcelable {
private final @NonNull List<FontFamily> mFamilies;
private final @NonNull List<Alias> mAliases;
diff --git a/core/java/android/text/GetChars.java b/core/java/android/text/GetChars.java
index 348a911..229f543 100644
--- a/core/java/android/text/GetChars.java
+++ b/core/java/android/text/GetChars.java
@@ -21,6 +21,7 @@
* getChars() method like the one in String that is faster than
* calling charAt() multiple times.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface GetChars
extends CharSequence
{
diff --git a/core/java/android/text/GraphemeClusterSegmentFinder.java b/core/java/android/text/GraphemeClusterSegmentFinder.java
index 0f6fdaf..996223d 100644
--- a/core/java/android/text/GraphemeClusterSegmentFinder.java
+++ b/core/java/android/text/GraphemeClusterSegmentFinder.java
@@ -31,6 +31,7 @@
* @see <a href="https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries">Unicode Text
* Segmentation - Grapheme Cluster Boundaries</a>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class GraphemeClusterSegmentFinder extends SegmentFinder {
private static AutoGrowArray.FloatArray sTempAdvances = null;
private final boolean[] mIsGraphemeBreak;
diff --git a/core/java/android/text/GraphicsOperations.java b/core/java/android/text/GraphicsOperations.java
index 6c15446..f7fe805 100644
--- a/core/java/android/text/GraphicsOperations.java
+++ b/core/java/android/text/GraphicsOperations.java
@@ -26,6 +26,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface GraphicsOperations extends CharSequence {
/**
* Just like {@link Canvas#drawText}.
diff --git a/core/java/android/text/Highlights.java b/core/java/android/text/Highlights.java
index 693dbcf..217a38b 100644
--- a/core/java/android/text/Highlights.java
+++ b/core/java/android/text/Highlights.java
@@ -30,6 +30,7 @@
/**
* A class that represents of the highlight of the text.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Highlights {
private final List<Pair<Paint, int[]>> mHighlights;
diff --git a/core/java/android/text/Html.java b/core/java/android/text/Html.java
index a42eece..d412071 100644
--- a/core/java/android/text/Html.java
+++ b/core/java/android/text/Html.java
@@ -17,13 +17,13 @@
package android.text;
import android.app.ActivityThread;
-import android.app.Application;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Build;
+import android.ravenwood.annotation.RavenwoodReplace;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.AlignmentSpan;
import android.text.style.BackgroundColorSpan;
@@ -65,6 +65,7 @@
* This class processes HTML strings into displayable styled text.
* Not all HTML tags are supported.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Html {
/**
* Retrieves images for HTML <img> tags.
@@ -506,6 +507,15 @@
out.append("</p>\n");
}
+ @RavenwoodReplace(blockedBy = ActivityThread.class)
+ private static float getDisplayMetricsDensity() {
+ return ActivityThread.currentApplication().getResources().getDisplayMetrics().density;
+ }
+
+ private static float getDisplayMetricsDensity$ravenwood() {
+ return Resources.getSystem().getDisplayMetrics().density;
+ }
+
private static void withinParagraph(StringBuilder out, Spanned text, int start, int end) {
int next;
for (int i = start; i < end; i = next) {
@@ -559,8 +569,7 @@
AbsoluteSizeSpan s = ((AbsoluteSizeSpan) style[j]);
float sizeDip = s.getSize();
if (!s.getDip()) {
- Application application = ActivityThread.currentApplication();
- sizeDip /= application.getResources().getDisplayMetrics().density;
+ sizeDip /= getDisplayMetricsDensity();
}
// px in CSS is the equivalance of dip in Android
@@ -669,6 +678,7 @@
}
}
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
class HtmlToSpannedConverter implements ContentHandler {
private static final float[] HEADING_SIZES = {
@@ -843,6 +853,16 @@
}
}
+ @RavenwoodReplace(blockedBy = ActivityThread.class)
+ private static int getFontWeightAdjustment() {
+ return ActivityThread.currentApplication().getResources()
+ .getConfiguration().fontWeightAdjustment;
+ }
+
+ private static int getFontWeightAdjustment$ravenwood() {
+ return Resources.getSystem().getConfiguration().fontWeightAdjustment;
+ }
+
private void handleEndTag(String tag) {
if (tag.equalsIgnoreCase("br")) {
handleBr(mSpannableStringBuilder);
@@ -858,17 +878,11 @@
} else if (tag.equalsIgnoreCase("span")) {
endCssStyle(mSpannableStringBuilder);
} else if (tag.equalsIgnoreCase("strong")) {
- Application application = ActivityThread.currentApplication();
- int fontWeightAdjustment =
- application.getResources().getConfiguration().fontWeightAdjustment;
end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD,
- fontWeightAdjustment));
+ getFontWeightAdjustment()));
} else if (tag.equalsIgnoreCase("b")) {
- Application application = ActivityThread.currentApplication();
- int fontWeightAdjustment =
- application.getResources().getConfiguration().fontWeightAdjustment;
end(mSpannableStringBuilder, Bold.class, new StyleSpan(Typeface.BOLD,
- fontWeightAdjustment));
+ getFontWeightAdjustment()));
} else if (tag.equalsIgnoreCase("em")) {
end(mSpannableStringBuilder, Italic.class, new StyleSpan(Typeface.ITALIC));
} else if (tag.equalsIgnoreCase("cite")) {
@@ -1036,11 +1050,8 @@
// Their ranges should not include the newlines at the end
Heading h = getLast(text, Heading.class);
if (h != null) {
- Application application = ActivityThread.currentApplication();
- int fontWeightAdjustment =
- application.getResources().getConfiguration().fontWeightAdjustment;
setSpanFromMark(text, h, new RelativeSizeSpan(HEADING_SIZES[h.mLevel]),
- new StyleSpan(Typeface.BOLD, fontWeightAdjustment));
+ new StyleSpan(Typeface.BOLD, getFontWeightAdjustment()));
}
endBlockElement(text);
diff --git a/core/java/android/text/Hyphenator.java b/core/java/android/text/Hyphenator.java
index 6f0628a..7f9a8a1 100644
--- a/core/java/android/text/Hyphenator.java
+++ b/core/java/android/text/Hyphenator.java
@@ -21,6 +21,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Hyphenator {
private Hyphenator() {}
diff --git a/core/java/android/text/InputFilter.java b/core/java/android/text/InputFilter.java
index 96e7bd0..ed5de03e 100644
--- a/core/java/android/text/InputFilter.java
+++ b/core/java/android/text/InputFilter.java
@@ -27,6 +27,7 @@
* InputFilters can be attached to {@link Editable}s to constrain the
* changes that can be made to them.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface InputFilter
{
/**
diff --git a/core/java/android/text/InputType.java b/core/java/android/text/InputType.java
index 4ebecb7..03c9c02 100644
--- a/core/java/android/text/InputType.java
+++ b/core/java/android/text/InputType.java
@@ -44,6 +44,7 @@
* TYPE_DATETIME_VARIATION_TIME
* </dl>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface InputType {
/**
* Mask of bits that determine the overall class
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index b273a7f..44c3f9a 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -69,6 +69,7 @@
* which will be updated as the text changes.
* For text that will not change, use a {@link StaticLayout}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class Layout {
// These should match the constants in framework/base/libs/hwui/hwui/DrawTextFunctor.h
diff --git a/core/java/android/text/LoginFilter.java b/core/java/android/text/LoginFilter.java
index 0e4eec44..94f196f 100644
--- a/core/java/android/text/LoginFilter.java
+++ b/core/java/android/text/LoginFilter.java
@@ -23,6 +23,7 @@
* handle non-BMP characters.
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class LoginFilter implements InputFilter {
private boolean mAppendInvalid; // whether to append or ignore invalid characters
/**
diff --git a/core/java/android/text/MeasuredParagraph.java b/core/java/android/text/MeasuredParagraph.java
index 31a2263..b2e4459 100644
--- a/core/java/android/text/MeasuredParagraph.java
+++ b/core/java/android/text/MeasuredParagraph.java
@@ -68,6 +68,7 @@
* @hide
*/
@TestApi
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class MeasuredParagraph {
private static final char OBJECT_REPLACEMENT_CHARACTER = '\uFFFC';
diff --git a/core/java/android/text/NoCopySpan.java b/core/java/android/text/NoCopySpan.java
index e754d76..4cd3d04 100644
--- a/core/java/android/text/NoCopySpan.java
+++ b/core/java/android/text/NoCopySpan.java
@@ -21,6 +21,7 @@
* into a new Spanned when performing a slice or copy operation on the original
* Spanned it was placed in.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface NoCopySpan {
/**
* Convenience equivalent for when you would just want a new Object() for
diff --git a/core/java/android/text/PackedIntVector.java b/core/java/android/text/PackedIntVector.java
index 3e5bf56..11dd0c3 100644
--- a/core/java/android/text/PackedIntVector.java
+++ b/core/java/android/text/PackedIntVector.java
@@ -29,6 +29,7 @@
* @hide
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PackedIntVector {
private final int mColumns;
private int mRows;
diff --git a/core/java/android/text/PackedObjectVector.java b/core/java/android/text/PackedObjectVector.java
index b777e16..beb5ea4 100644
--- a/core/java/android/text/PackedObjectVector.java
+++ b/core/java/android/text/PackedObjectVector.java
@@ -21,6 +21,7 @@
import libcore.util.EmptyArray;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
class PackedObjectVector<E>
{
private int mColumns;
diff --git a/core/java/android/text/ParcelableSpan.java b/core/java/android/text/ParcelableSpan.java
index d7c1a4b..a9a4893 100644
--- a/core/java/android/text/ParcelableSpan.java
+++ b/core/java/android/text/ParcelableSpan.java
@@ -24,6 +24,7 @@
* This can only be used by code in the framework; it is not intended for
* applications to implement their own Parcelable spans.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface ParcelableSpan extends Parcelable {
/**
* Return a special type identifier for this span class.
diff --git a/core/java/android/text/PrecomputedText.java b/core/java/android/text/PrecomputedText.java
index 5f6a9bd..71cacd9 100644
--- a/core/java/android/text/PrecomputedText.java
+++ b/core/java/android/text/PrecomputedText.java
@@ -75,6 +75,7 @@
* Note that any {@link android.text.NoCopySpan} attached to the original text won't be passed to
* PrecomputedText.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PrecomputedText implements Spannable {
private static final char LINE_FEED = '\n';
diff --git a/core/java/android/text/SegmentFinder.java b/core/java/android/text/SegmentFinder.java
index 047d07a..b7ab0e6 100644
--- a/core/java/android/text/SegmentFinder.java
+++ b/core/java/android/text/SegmentFinder.java
@@ -39,6 +39,7 @@
*
* @see Layout#getRangeForRect(RectF, SegmentFinder, Layout.TextInclusionStrategy)
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class SegmentFinder {
/**
* Return value of previousStartBoundary(int), previousEndBoundary(int), nextStartBoundary(int),
diff --git a/core/java/android/text/Selection.java b/core/java/android/text/Selection.java
index 711578c..674b473 100644
--- a/core/java/android/text/Selection.java
+++ b/core/java/android/text/Selection.java
@@ -27,6 +27,7 @@
* Utility class for manipulating cursors and selections in CharSequences.
* A cursor is a selection where the start and end are at the same offset.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Selection {
private Selection() { /* cannot be instantiated */ }
diff --git a/core/java/android/text/SpanColors.java b/core/java/android/text/SpanColors.java
index fcd242b..3b6a041 100644
--- a/core/java/android/text/SpanColors.java
+++ b/core/java/android/text/SpanColors.java
@@ -27,6 +27,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SpanColors {
public static final @ColorInt int NO_COLOR_FOUND = Color.TRANSPARENT;
diff --git a/core/java/android/text/SpanSet.java b/core/java/android/text/SpanSet.java
index d464278..4ad8106 100644
--- a/core/java/android/text/SpanSet.java
+++ b/core/java/android/text/SpanSet.java
@@ -31,6 +31,7 @@
* Note that empty spans are ignored by this class.
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SpanSet<E> {
private final Class<? extends E> classType;
diff --git a/core/java/android/text/SpanWatcher.java b/core/java/android/text/SpanWatcher.java
index 01e82c8..31d6320 100644
--- a/core/java/android/text/SpanWatcher.java
+++ b/core/java/android/text/SpanWatcher.java
@@ -21,6 +21,7 @@
* will be called to notify it that other markup objects have been
* added, changed, or removed.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface SpanWatcher extends NoCopySpan {
/**
* This method is called to notify you that the specified object
diff --git a/core/java/android/text/Spannable.java b/core/java/android/text/Spannable.java
index 8315b2a..fac5131 100644
--- a/core/java/android/text/Spannable.java
+++ b/core/java/android/text/Spannable.java
@@ -21,6 +21,7 @@
* attached and detached. Not all Spannable classes have mutable text;
* see {@link Editable} for that.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface Spannable
extends Spanned
{
diff --git a/core/java/android/text/SpannableString.java b/core/java/android/text/SpannableString.java
index afb5df8..ee04a86 100644
--- a/core/java/android/text/SpannableString.java
+++ b/core/java/android/text/SpannableString.java
@@ -21,6 +21,7 @@
* markup objects can be attached and detached.
* For mutable text, see {@link SpannableStringBuilder}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SpannableString
extends SpannableStringInternal
implements CharSequence, GetChars, Spannable
diff --git a/core/java/android/text/SpannableStringBuilder.java b/core/java/android/text/SpannableStringBuilder.java
index 0e61eff..f8d7283 100644
--- a/core/java/android/text/SpannableStringBuilder.java
+++ b/core/java/android/text/SpannableStringBuilder.java
@@ -35,6 +35,7 @@
/**
* This is the class for text whose content and markup can both be changed.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SpannableStringBuilder implements CharSequence, GetChars, Spannable, Editable,
Appendable, GraphicsOperations {
private final static String TAG = "SpannableStringBuilder";
diff --git a/core/java/android/text/SpannableStringInternal.java b/core/java/android/text/SpannableStringInternal.java
index f2ab1bb..90d83d5 100644
--- a/core/java/android/text/SpannableStringInternal.java
+++ b/core/java/android/text/SpannableStringInternal.java
@@ -27,6 +27,7 @@
import java.lang.reflect.Array;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
/* package */ abstract class SpannableStringInternal
{
/* package */ SpannableStringInternal(CharSequence source,
diff --git a/core/java/android/text/Spanned.java b/core/java/android/text/Spanned.java
index a0d54c26c..6706ffd 100644
--- a/core/java/android/text/Spanned.java
+++ b/core/java/android/text/Spanned.java
@@ -22,6 +22,7 @@
* see {@link Spannable} for mutable markup and {@link Editable} for
* mutable text.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface Spanned
extends CharSequence
{
diff --git a/core/java/android/text/SpannedString.java b/core/java/android/text/SpannedString.java
index acee3c5..a3f1ee2 100644
--- a/core/java/android/text/SpannedString.java
+++ b/core/java/android/text/SpannedString.java
@@ -22,6 +22,7 @@
* For mutable markup, see {@link SpannableString}; for mutable text,
* see {@link SpannableStringBuilder}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class SpannedString
extends SpannableStringInternal
implements CharSequence, GetChars, Spanned
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java
index a5d52957..8193cd2 100644
--- a/core/java/android/text/StaticLayout.java
+++ b/core/java/android/text/StaticLayout.java
@@ -55,6 +55,7 @@
* float, float, android.graphics.Paint)
* Canvas.drawText()} directly.</p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class StaticLayout extends Layout {
/*
* The break iteration is done in native code. The protocol for using the native code is as
diff --git a/core/java/android/text/TextDirectionHeuristic.java b/core/java/android/text/TextDirectionHeuristic.java
index 8a4ba42..66cea85 100644
--- a/core/java/android/text/TextDirectionHeuristic.java
+++ b/core/java/android/text/TextDirectionHeuristic.java
@@ -19,6 +19,7 @@
/**
* Interface for objects that use a heuristic for guessing at the paragraph direction by examining text.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface TextDirectionHeuristic {
/**
* Guess if a chars array is in the RTL direction or not.
diff --git a/core/java/android/text/TextDirectionHeuristics.java b/core/java/android/text/TextDirectionHeuristics.java
index 85260f4..3af8fb7 100644
--- a/core/java/android/text/TextDirectionHeuristics.java
+++ b/core/java/android/text/TextDirectionHeuristics.java
@@ -32,6 +32,7 @@
* class.
*
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TextDirectionHeuristics {
/**
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index 3015791..091eb60 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -53,6 +53,7 @@
* @hide
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TextLine {
private static final boolean DEBUG = false;
diff --git a/core/java/android/text/TextPaint.java b/core/java/android/text/TextPaint.java
index 73825b1..ff063f2 100644
--- a/core/java/android/text/TextPaint.java
+++ b/core/java/android/text/TextPaint.java
@@ -25,6 +25,7 @@
* TextPaint is an extension of Paint that leaves room for some extra
* data used during text measuring and drawing.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TextPaint extends Paint {
// Special value 0 means no background paint
diff --git a/core/java/android/text/TextShaper.java b/core/java/android/text/TextShaper.java
index 6da0b63..6d17401 100644
--- a/core/java/android/text/TextShaper.java
+++ b/core/java/android/text/TextShaper.java
@@ -169,6 +169,7 @@
* @see TextShaper#shapeText(CharSequence, int, int, TextDirectionHeuristic, TextPaint,
* GlyphsConsumer)
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TextShaper {
private TextShaper() {}
diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java
index 6dc82c4..042966b 100644
--- a/core/java/android/text/TextUtils.java
+++ b/core/java/android/text/TextUtils.java
@@ -34,6 +34,7 @@
import android.icu.util.ULocale;
import android.os.Parcel;
import android.os.Parcelable;
+import android.ravenwood.annotation.RavenwoodKeepWholeClass;
import android.sysprop.DisplayProperties;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.AccessibilityClickableSpan;
@@ -85,8 +86,7 @@
import java.util.Locale;
import java.util.regex.Pattern;
-@android.ravenwood.annotation.RavenwoodKeepStaticInitializer
-@android.ravenwood.annotation.RavenwoodKeepPartialClass
+@RavenwoodKeepWholeClass
public class TextUtils {
private static final String TAG = "TextUtils";
@@ -147,7 +147,6 @@
private TextUtils() { /* cannot be instantiated */ }
- @android.ravenwood.annotation.RavenwoodKeep
public static void getChars(CharSequence s, int start, int end,
char[] dest, int destoff) {
Class<? extends CharSequence> c = s.getClass();
@@ -166,12 +165,10 @@
}
}
- @android.ravenwood.annotation.RavenwoodKeep
public static int indexOf(CharSequence s, char ch) {
return indexOf(s, ch, 0);
}
- @android.ravenwood.annotation.RavenwoodKeep
public static int indexOf(CharSequence s, char ch, int start) {
Class<? extends CharSequence> c = s.getClass();
@@ -181,7 +178,6 @@
return indexOf(s, ch, start, s.length());
}
- @android.ravenwood.annotation.RavenwoodKeep
public static int indexOf(CharSequence s, char ch, int start, int end) {
Class<? extends CharSequence> c = s.getClass();
@@ -219,12 +215,10 @@
return -1;
}
- @android.ravenwood.annotation.RavenwoodKeep
public static int lastIndexOf(CharSequence s, char ch) {
return lastIndexOf(s, ch, s.length() - 1);
}
- @android.ravenwood.annotation.RavenwoodKeep
public static int lastIndexOf(CharSequence s, char ch, int last) {
Class<? extends CharSequence> c = s.getClass();
@@ -234,7 +228,6 @@
return lastIndexOf(s, ch, 0, last);
}
- @android.ravenwood.annotation.RavenwoodKeep
public static int lastIndexOf(CharSequence s, char ch,
int start, int last) {
if (last < 0)
@@ -280,17 +273,14 @@
return -1;
}
- @android.ravenwood.annotation.RavenwoodKeep
public static int indexOf(CharSequence s, CharSequence needle) {
return indexOf(s, needle, 0, s.length());
}
- @android.ravenwood.annotation.RavenwoodKeep
public static int indexOf(CharSequence s, CharSequence needle, int start) {
return indexOf(s, needle, start, s.length());
}
- @android.ravenwood.annotation.RavenwoodKeep
public static int indexOf(CharSequence s, CharSequence needle,
int start, int end) {
int nlen = needle.length();
@@ -318,7 +308,6 @@
return -1;
}
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean regionMatches(CharSequence one, int toffset,
CharSequence two, int ooffset,
int len) {
@@ -351,7 +340,6 @@
* in that it does not preserve any style runs in the source sequence,
* allowing a more efficient implementation.
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static String substring(CharSequence source, int start, int end) {
if (source instanceof String)
return ((String) source).substring(start, end);
@@ -424,7 +412,6 @@
* calling object.toString(). If tokens is null, a NullPointerException will be thrown. If
* tokens is an empty array, an empty string will be returned.
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static String join(@NonNull CharSequence delimiter, @NonNull Object[] tokens) {
final int length = tokens.length;
if (length == 0) {
@@ -448,7 +435,6 @@
* calling object.toString(). If tokens is null, a NullPointerException will be thrown. If
* tokens is empty, an empty string will be returned.
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static String join(@NonNull CharSequence delimiter, @NonNull Iterable tokens) {
final Iterator<?> it = tokens.iterator();
if (!it.hasNext()) {
@@ -481,7 +467,6 @@
*
* @throws NullPointerException if expression or text is null
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static String[] split(String text, String expression) {
if (text.length() == 0) {
return EmptyArray.STRING;
@@ -507,7 +492,6 @@
*
* @throws NullPointerException if expression or text is null
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static String[] split(String text, Pattern pattern) {
if (text.length() == 0) {
return EmptyArray.STRING;
@@ -545,7 +529,6 @@
* be returned for the empty string after that delimeter. That is, splitting <tt>"a,b,"</tt> on
* comma will return <tt>"a", "b"</tt>, not <tt>"a", "b", ""</tt>.
*/
- @android.ravenwood.annotation.RavenwoodKeepWholeClass
public static class SimpleStringSplitter implements StringSplitter, Iterator<String> {
private String mString;
private char mDelimiter;
@@ -609,31 +592,26 @@
* @param str the string to be examined
* @return true if str is null or zero length
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isEmpty(@Nullable CharSequence str) {
return str == null || str.length() == 0;
}
/** {@hide} */
- @android.ravenwood.annotation.RavenwoodKeep
public static String nullIfEmpty(@Nullable String str) {
return isEmpty(str) ? null : str;
}
/** {@hide} */
- @android.ravenwood.annotation.RavenwoodKeep
public static String emptyIfNull(@Nullable String str) {
return str == null ? "" : str;
}
/** {@hide} */
- @android.ravenwood.annotation.RavenwoodKeep
public static String firstNotEmpty(@Nullable String a, @NonNull String b) {
return !isEmpty(a) ? a : Preconditions.checkStringNotEmpty(b);
}
/** {@hide} */
- @android.ravenwood.annotation.RavenwoodKeep
public static int length(@Nullable String s) {
return s != null ? s.length() : 0;
}
@@ -642,7 +620,6 @@
* @return interned string if it's null.
* @hide
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static String safeIntern(String s) {
return (s != null) ? s.intern() : null;
}
@@ -652,7 +629,6 @@
* spaces and ASCII control characters were trimmed from the start and end,
* as by {@link String#trim}.
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static int getTrimmedLength(CharSequence s) {
int len = s.length();
@@ -677,7 +653,6 @@
* @param b second CharSequence to check
* @return true if a and b are equal
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean equals(@Nullable CharSequence a, @Nullable CharSequence b) {
if (a == b) return true;
int length;
@@ -1713,7 +1688,6 @@
return true;
}
- @android.ravenwood.annotation.RavenwoodKeep
/* package */ static char[] obtain(int len) {
char[] buf;
@@ -1728,7 +1702,6 @@
return buf;
}
- @android.ravenwood.annotation.RavenwoodKeep
/* package */ static void recycle(char[] temp) {
if (temp.length > 1000)
return;
@@ -1743,7 +1716,6 @@
* @param s the string to be encoded
* @return the encoded string
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static String htmlEncode(String s) {
StringBuilder sb = new StringBuilder();
char c;
@@ -1830,7 +1802,6 @@
/**
* Returns whether the given CharSequence contains any printable characters.
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isGraphic(CharSequence str) {
final int len = str.length();
for (int cp, i=0; i<len; i+=Character.charCount(cp)) {
@@ -1857,7 +1828,6 @@
* @deprecated Use {@link #isGraphic(CharSequence)} instead.
*/
@Deprecated
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isGraphic(char c) {
int gc = Character.getType(c);
return gc != Character.CONTROL
@@ -1872,7 +1842,6 @@
/**
* Returns whether the given CharSequence contains only digits.
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isDigitsOnly(CharSequence str) {
final int len = str.length();
for (int cp, i = 0; i < len; i += Character.charCount(cp)) {
@@ -1887,7 +1856,6 @@
/**
* @hide
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isPrintableAscii(final char c) {
final int asciiFirst = 0x20;
final int asciiLast = 0x7E; // included
@@ -1898,7 +1866,6 @@
* @hide
*/
@UnsupportedAppUsage
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isPrintableAsciiOnly(final CharSequence str) {
final int len = str.length();
for (int i = 0; i < len; i++) {
@@ -1950,7 +1917,6 @@
* {@link #CAP_MODE_CHARACTERS}, {@link #CAP_MODE_WORDS}, and
* {@link #CAP_MODE_SENTENCES}.
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static int getCapsMode(CharSequence cs, int off, int reqModes) {
if (off < 0) {
return 0;
@@ -2162,7 +2128,6 @@
*
* Be careful: this code will need to be updated when vertical scripts will be supported
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static int getLayoutDirectionFromLocale(Locale locale) {
return ((locale != null && !locale.equals(Locale.ROOT)
&& ULocale.forLocale(locale).isRightToLeft())
@@ -2197,7 +2162,6 @@
* match the supported grammar described above.
* @hide
*/
- @android.ravenwood.annotation.RavenwoodKeep
public static @NonNull String formatSimple(@NonNull String format, Object... args) {
final StringBuilder sb = new StringBuilder(format);
int j = 0;
@@ -2387,7 +2351,6 @@
}
/** @hide */
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isNewline(int codePoint) {
int type = Character.getType(codePoint);
return type == Character.PARAGRAPH_SEPARATOR || type == Character.LINE_SEPARATOR
@@ -2395,19 +2358,16 @@
}
/** @hide */
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isWhitespace(int codePoint) {
return Character.isWhitespace(codePoint) || codePoint == NBSP_CODE_POINT;
}
/** @hide */
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isWhitespaceExceptNewline(int codePoint) {
return isWhitespace(codePoint) && !isNewline(codePoint);
}
/** @hide */
- @android.ravenwood.annotation.RavenwoodKeep
public static boolean isPunctuation(int codePoint) {
int type = Character.getType(codePoint);
return type == Character.CONNECTOR_PUNCTUATION
diff --git a/core/java/android/text/TextWatcher.java b/core/java/android/text/TextWatcher.java
index a0aef69..5963ca7 100644
--- a/core/java/android/text/TextWatcher.java
+++ b/core/java/android/text/TextWatcher.java
@@ -20,6 +20,7 @@
* When an object of this type is attached to an Editable, its methods will
* be called when the text is changed.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface TextWatcher extends NoCopySpan {
/**
* This method is called to notify you that, within <code>s</code>,
diff --git a/core/java/android/text/WordSegmentFinder.java b/core/java/android/text/WordSegmentFinder.java
index b0a70ea..b8702d7 100644
--- a/core/java/android/text/WordSegmentFinder.java
+++ b/core/java/android/text/WordSegmentFinder.java
@@ -33,6 +33,7 @@
* @see <a href="https://unicode.org/reports/tr29/#Word_Boundaries">Unicode Text Segmentation - Word
* Boundaries</a>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class WordSegmentFinder extends SegmentFinder {
private final CharSequence mText;
private final WordIterator mWordIterator;
diff --git a/core/java/android/text/format/DateFormat.java b/core/java/android/text/format/DateFormat.java
index e6dad27..ef60d30 100644
--- a/core/java/android/text/format/DateFormat.java
+++ b/core/java/android/text/format/DateFormat.java
@@ -63,6 +63,7 @@
* Note that the non-{@code format} methods in this class are implemented by
* {@code SimpleDateFormat}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DateFormat {
/**
* @deprecated Use a literal {@code '} instead.
diff --git a/core/java/android/text/format/DateIntervalFormat.java b/core/java/android/text/format/DateIntervalFormat.java
index 8dea322..5ec9561 100644
--- a/core/java/android/text/format/DateIntervalFormat.java
+++ b/core/java/android/text/format/DateIntervalFormat.java
@@ -37,6 +37,7 @@
* @hide
*/
@VisibleForTesting(visibility = PACKAGE)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class DateIntervalFormat {
private static final LruCache<String, android.icu.text.DateIntervalFormat> CACHED_FORMATTERS =
diff --git a/core/java/android/text/format/DateTimeFormat.java b/core/java/android/text/format/DateTimeFormat.java
index 064d717..c8dd61d 100644
--- a/core/java/android/text/format/DateTimeFormat.java
+++ b/core/java/android/text/format/DateTimeFormat.java
@@ -29,6 +29,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
class DateTimeFormat {
private static final FormatterCache CACHED_FORMATTERS = new FormatterCache();
diff --git a/core/java/android/text/format/DateUtils.java b/core/java/android/text/format/DateUtils.java
index 518a549..12ad764 100644
--- a/core/java/android/text/format/DateUtils.java
+++ b/core/java/android/text/format/DateUtils.java
@@ -44,6 +44,7 @@
* This class contains various date-related utilities for creating text for things like
* elapsed time and date ranges, strings for days of the week and months, and AM/PM text etc.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DateUtils
{
private static final Object sLock = new Object();
diff --git a/core/java/android/text/format/DateUtilsBridge.java b/core/java/android/text/format/DateUtilsBridge.java
index 92ec9cf..752a8c0 100644
--- a/core/java/android/text/format/DateUtilsBridge.java
+++ b/core/java/android/text/format/DateUtilsBridge.java
@@ -46,6 +46,7 @@
* @hide
*/
@VisibleForTesting(visibility = PACKAGE)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class DateUtilsBridge {
/**
diff --git a/core/java/android/text/format/Formatter.java b/core/java/android/text/format/Formatter.java
index 7653bdb..e7783dc 100644
--- a/core/java/android/text/format/Formatter.java
+++ b/core/java/android/text/format/Formatter.java
@@ -41,6 +41,7 @@
* Utility class to aid in formatting common values that are not covered
* by the {@link java.util.Formatter} class in {@link java.util}
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class Formatter {
/** {@hide} */
diff --git a/core/java/android/text/format/RelativeDateTimeFormatter.java b/core/java/android/text/format/RelativeDateTimeFormatter.java
index 9096469..6b940f8 100644
--- a/core/java/android/text/format/RelativeDateTimeFormatter.java
+++ b/core/java/android/text/format/RelativeDateTimeFormatter.java
@@ -42,6 +42,7 @@
* @hide
*/
@VisibleForTesting(visibility = PACKAGE)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class RelativeDateTimeFormatter {
public static final long SECOND_IN_MILLIS = 1000;
diff --git a/core/java/android/text/format/Time.java b/core/java/android/text/format/Time.java
index bac7c6c..1beb573 100644
--- a/core/java/android/text/format/Time.java
+++ b/core/java/android/text/format/Time.java
@@ -53,6 +53,7 @@
* @deprecated Use {@link java.util.GregorianCalendar} instead.
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Time {
private static final String Y_M_D_T_H_M_S_000 = "%Y-%m-%dT%H:%M:%S.000";
private static final String Y_M_D_T_H_M_S_000_Z = "%Y-%m-%dT%H:%M:%S.000Z";
diff --git a/core/java/android/text/format/TimeFormatter.java b/core/java/android/text/format/TimeFormatter.java
index e42ad63..dd703d8 100644
--- a/core/java/android/text/format/TimeFormatter.java
+++ b/core/java/android/text/format/TimeFormatter.java
@@ -40,6 +40,7 @@
*
* <p>This class is not thread safe.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
class TimeFormatter {
// An arbitrary value outside the range representable by a char.
private static final int FORCE_LOWER_CASE = -1;
diff --git a/core/java/android/text/format/TimeMigrationUtils.java b/core/java/android/text/format/TimeMigrationUtils.java
index 17bac8d..b2f5024 100644
--- a/core/java/android/text/format/TimeMigrationUtils.java
+++ b/core/java/android/text/format/TimeMigrationUtils.java
@@ -22,6 +22,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TimeMigrationUtils {
private TimeMigrationUtils() {}
diff --git a/core/java/android/text/method/AllCapsTransformationMethod.java b/core/java/android/text/method/AllCapsTransformationMethod.java
index 305b056..70dcc52 100644
--- a/core/java/android/text/method/AllCapsTransformationMethod.java
+++ b/core/java/android/text/method/AllCapsTransformationMethod.java
@@ -33,6 +33,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AllCapsTransformationMethod implements TransformationMethod2 {
private static final String TAG = "AllCapsTransformationMethod";
diff --git a/core/java/android/text/method/ArrowKeyMovementMethod.java b/core/java/android/text/method/ArrowKeyMovementMethod.java
index 37474e5..6099220 100644
--- a/core/java/android/text/method/ArrowKeyMovementMethod.java
+++ b/core/java/android/text/method/ArrowKeyMovementMethod.java
@@ -30,6 +30,7 @@
* A movement method that provides cursor movement and selection.
* Supports displaying the context menu on DPad Center.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ArrowKeyMovementMethod extends BaseMovementMethod implements MovementMethod {
private static boolean isSelecting(Spannable buffer) {
return ((MetaKeyKeyListener.getMetaState(buffer, MetaKeyKeyListener.META_SHIFT_ON) == 1) ||
diff --git a/core/java/android/text/method/BaseKeyListener.java b/core/java/android/text/method/BaseKeyListener.java
index e427908..5ebfd99 100644
--- a/core/java/android/text/method/BaseKeyListener.java
+++ b/core/java/android/text/method/BaseKeyListener.java
@@ -47,6 +47,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class BaseKeyListener extends MetaKeyKeyListener
implements KeyListener {
/* package */ static final Object OLD_SEL_START = new NoCopySpan.Concrete();
diff --git a/core/java/android/text/method/BaseMovementMethod.java b/core/java/android/text/method/BaseMovementMethod.java
index 7a4b3a0..0c2e52e 100644
--- a/core/java/android/text/method/BaseMovementMethod.java
+++ b/core/java/android/text/method/BaseMovementMethod.java
@@ -27,6 +27,7 @@
/**
* Base classes for movement methods.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BaseMovementMethod implements MovementMethod {
@Override
public boolean canSelectArbitrarily() {
diff --git a/core/java/android/text/method/CharacterPickerDialog.java b/core/java/android/text/method/CharacterPickerDialog.java
index 7d838e0..f084d03 100644
--- a/core/java/android/text/method/CharacterPickerDialog.java
+++ b/core/java/android/text/method/CharacterPickerDialog.java
@@ -38,6 +38,7 @@
/**
* Dialog for choosing accented characters related to a base character.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class CharacterPickerDialog extends Dialog
implements OnItemClickListener, OnClickListener {
private View mView;
diff --git a/core/java/android/text/method/DateKeyListener.java b/core/java/android/text/method/DateKeyListener.java
index 0accbf6..acf1822 100644
--- a/core/java/android/text/method/DateKeyListener.java
+++ b/core/java/android/text/method/DateKeyListener.java
@@ -35,6 +35,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DateKeyListener extends NumberKeyListener
{
public int getInputType() {
diff --git a/core/java/android/text/method/DateTimeKeyListener.java b/core/java/android/text/method/DateTimeKeyListener.java
index 1593db5..a46ae45 100644
--- a/core/java/android/text/method/DateTimeKeyListener.java
+++ b/core/java/android/text/method/DateTimeKeyListener.java
@@ -35,6 +35,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DateTimeKeyListener extends NumberKeyListener
{
public int getInputType() {
diff --git a/core/java/android/text/method/DialerKeyListener.java b/core/java/android/text/method/DialerKeyListener.java
index 17abed6..9eea51a 100644
--- a/core/java/android/text/method/DialerKeyListener.java
+++ b/core/java/android/text/method/DialerKeyListener.java
@@ -28,6 +28,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DialerKeyListener extends NumberKeyListener
{
@Override
diff --git a/core/java/android/text/method/DigitsKeyListener.java b/core/java/android/text/method/DigitsKeyListener.java
index d9f2dcf..c97d4af 100644
--- a/core/java/android/text/method/DigitsKeyListener.java
+++ b/core/java/android/text/method/DigitsKeyListener.java
@@ -40,6 +40,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DigitsKeyListener extends NumberKeyListener
{
private char[] mAccepted;
diff --git a/core/java/android/text/method/HideReturnsTransformationMethod.java b/core/java/android/text/method/HideReturnsTransformationMethod.java
index 40ce871..8b93b35 100644
--- a/core/java/android/text/method/HideReturnsTransformationMethod.java
+++ b/core/java/android/text/method/HideReturnsTransformationMethod.java
@@ -24,6 +24,7 @@
* to be hidden by displaying them as zero-width non-breaking space
* characters (\uFEFF).
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class HideReturnsTransformationMethod
extends ReplacementTransformationMethod {
private static char[] ORIGINAL = new char[] { '\r' };
diff --git a/core/java/android/text/method/InsertModeTransformationMethod.java b/core/java/android/text/method/InsertModeTransformationMethod.java
index 6c6576f..ace2d25 100644
--- a/core/java/android/text/method/InsertModeTransformationMethod.java
+++ b/core/java/android/text/method/InsertModeTransformationMethod.java
@@ -58,6 +58,7 @@
* the new transformed text: "hello abc\n\n world", and the highlight range will be [5, 11).
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class InsertModeTransformationMethod implements TransformationMethod, TextWatcher {
/** The start offset of the highlight range in the original text, inclusive. */
private int mStart;
diff --git a/core/java/android/text/method/KeyListener.java b/core/java/android/text/method/KeyListener.java
index ce7054c..447c4d9 100644
--- a/core/java/android/text/method/KeyListener.java
+++ b/core/java/android/text/method/KeyListener.java
@@ -34,6 +34,7 @@
* targetting Jelly Bean or later, and will only deliver it for some
* key presses to applications targetting Ice Cream Sandwich or earlier.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface KeyListener {
/**
* Return the type of text that this key listener is manipulating,
diff --git a/core/java/android/text/method/LinkMovementMethod.java b/core/java/android/text/method/LinkMovementMethod.java
index 9f4a0ae..484bc1a 100644
--- a/core/java/android/text/method/LinkMovementMethod.java
+++ b/core/java/android/text/method/LinkMovementMethod.java
@@ -33,6 +33,7 @@
* A movement method that traverses links in the text buffer and scrolls if necessary.
* Supports clicking on links with DPad Center or Enter.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LinkMovementMethod extends ScrollingMovementMethod {
private static final int CLICK = 1;
private static final int UP = 2;
diff --git a/core/java/android/text/method/MetaKeyKeyListener.java b/core/java/android/text/method/MetaKeyKeyListener.java
index d1d7c96..7c9c2f1 100644
--- a/core/java/android/text/method/MetaKeyKeyListener.java
+++ b/core/java/android/text/method/MetaKeyKeyListener.java
@@ -71,6 +71,7 @@
* }
* </code>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class MetaKeyKeyListener {
/**
* Flag that indicates that the SHIFT key is on.
diff --git a/core/java/android/text/method/MovementMethod.java b/core/java/android/text/method/MovementMethod.java
index f6fe575..5ea439d 100644
--- a/core/java/android/text/method/MovementMethod.java
+++ b/core/java/android/text/method/MovementMethod.java
@@ -32,6 +32,7 @@
* directly by applications.
* </p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface MovementMethod {
public void initialize(TextView widget, Spannable text);
public boolean onKeyDown(TextView widget, Spannable text, int keyCode, KeyEvent event);
diff --git a/core/java/android/text/method/MultiTapKeyListener.java b/core/java/android/text/method/MultiTapKeyListener.java
index 5770482..022853ab 100644
--- a/core/java/android/text/method/MultiTapKeyListener.java
+++ b/core/java/android/text/method/MultiTapKeyListener.java
@@ -36,6 +36,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class MultiTapKeyListener extends BaseKeyListener
implements SpanWatcher {
private static MultiTapKeyListener[] sInstance =
diff --git a/core/java/android/text/method/NumberKeyListener.java b/core/java/android/text/method/NumberKeyListener.java
index 2b038dd..e32ccd4 100644
--- a/core/java/android/text/method/NumberKeyListener.java
+++ b/core/java/android/text/method/NumberKeyListener.java
@@ -39,6 +39,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class NumberKeyListener extends BaseKeyListener
implements InputFilter
{
diff --git a/core/java/android/text/method/OffsetMapping.java b/core/java/android/text/method/OffsetMapping.java
index fcf3de6..99613d3 100644
--- a/core/java/android/text/method/OffsetMapping.java
+++ b/core/java/android/text/method/OffsetMapping.java
@@ -27,6 +27,7 @@
* {@link TransformationMethod} that alters the text length.
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface OffsetMapping {
/**
* The mapping strategy for a character offset.
diff --git a/core/java/android/text/method/PasswordTransformationMethod.java b/core/java/android/text/method/PasswordTransformationMethod.java
index 53553be..4a61d9a 100644
--- a/core/java/android/text/method/PasswordTransformationMethod.java
+++ b/core/java/android/text/method/PasswordTransformationMethod.java
@@ -33,6 +33,7 @@
import java.lang.ref.WeakReference;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PasswordTransformationMethod
implements TransformationMethod, TextWatcher
{
diff --git a/core/java/android/text/method/QwertyKeyListener.java b/core/java/android/text/method/QwertyKeyListener.java
index c43864d..27c58ea 100644
--- a/core/java/android/text/method/QwertyKeyListener.java
+++ b/core/java/android/text/method/QwertyKeyListener.java
@@ -37,6 +37,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class QwertyKeyListener extends BaseKeyListener {
private static QwertyKeyListener[] sInstance =
new QwertyKeyListener[Capitalize.values().length * 2];
diff --git a/core/java/android/text/method/ReplacementTransformationMethod.java b/core/java/android/text/method/ReplacementTransformationMethod.java
index d6f879a..05899d7 100644
--- a/core/java/android/text/method/ReplacementTransformationMethod.java
+++ b/core/java/android/text/method/ReplacementTransformationMethod.java
@@ -30,6 +30,7 @@
* array to be replaced by the corresponding characters in the
* {@link #getReplacement} array.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class ReplacementTransformationMethod
implements TransformationMethod
{
diff --git a/core/java/android/text/method/ScrollingMovementMethod.java b/core/java/android/text/method/ScrollingMovementMethod.java
index 4f422cb..2e0eda9 100644
--- a/core/java/android/text/method/ScrollingMovementMethod.java
+++ b/core/java/android/text/method/ScrollingMovementMethod.java
@@ -25,6 +25,7 @@
/**
* A movement method that interprets movement keys by scrolling the text buffer.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ScrollingMovementMethod extends BaseMovementMethod implements MovementMethod {
@Override
protected boolean left(TextView widget, Spannable buffer) {
diff --git a/core/java/android/text/method/SingleLineTransformationMethod.java b/core/java/android/text/method/SingleLineTransformationMethod.java
index 818526a..d6eff86 100644
--- a/core/java/android/text/method/SingleLineTransformationMethod.java
+++ b/core/java/android/text/method/SingleLineTransformationMethod.java
@@ -21,6 +21,7 @@
* displayed as spaces instead of causing line breaks, and causes
* carriage return characters (\r) to have no appearance.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SingleLineTransformationMethod
extends ReplacementTransformationMethod {
private static char[] ORIGINAL = new char[] { '\n', '\r' };
diff --git a/core/java/android/text/method/TextKeyListener.java b/core/java/android/text/method/TextKeyListener.java
index 2eb917b..1b0ae61 100644
--- a/core/java/android/text/method/TextKeyListener.java
+++ b/core/java/android/text/method/TextKeyListener.java
@@ -43,6 +43,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TextKeyListener extends BaseKeyListener implements SpanWatcher {
private static TextKeyListener[] sInstance =
new TextKeyListener[Capitalize.values().length * 2];
diff --git a/core/java/android/text/method/TimeKeyListener.java b/core/java/android/text/method/TimeKeyListener.java
index f11f400..337611c 100644
--- a/core/java/android/text/method/TimeKeyListener.java
+++ b/core/java/android/text/method/TimeKeyListener.java
@@ -35,6 +35,7 @@
* with hardware keyboards. Software input methods have no obligation to trigger
* the methods in this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TimeKeyListener extends NumberKeyListener
{
public int getInputType() {
diff --git a/core/java/android/text/method/Touch.java b/core/java/android/text/method/Touch.java
index 44811cb..85aadba 100644
--- a/core/java/android/text/method/Touch.java
+++ b/core/java/android/text/method/Touch.java
@@ -25,6 +25,7 @@
import android.view.ViewConfiguration;
import android.widget.TextView;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Touch {
private Touch() { }
diff --git a/core/java/android/text/method/TransformationMethod.java b/core/java/android/text/method/TransformationMethod.java
index 8f3b334..5246baa 100644
--- a/core/java/android/text/method/TransformationMethod.java
+++ b/core/java/android/text/method/TransformationMethod.java
@@ -24,6 +24,7 @@
* characters of passwords with dots, or keeping the newline characters
* from causing line breaks in single-line text fields.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface TransformationMethod
{
/**
diff --git a/core/java/android/text/method/TransformationMethod2.java b/core/java/android/text/method/TransformationMethod2.java
index 8d5ec24..6e0feb419 100644
--- a/core/java/android/text/method/TransformationMethod2.java
+++ b/core/java/android/text/method/TransformationMethod2.java
@@ -23,6 +23,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface TransformationMethod2 extends TransformationMethod {
/**
* Relax the contract of TransformationMethod to allow length changes,
diff --git a/core/java/android/text/method/TranslationTransformationMethod.java b/core/java/android/text/method/TranslationTransformationMethod.java
index 43d186e..8f43d3d 100644
--- a/core/java/android/text/method/TranslationTransformationMethod.java
+++ b/core/java/android/text/method/TranslationTransformationMethod.java
@@ -33,6 +33,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TranslationTransformationMethod implements TransformationMethod2 {
private static final String TAG = "TranslationTransformationMethod";
diff --git a/core/java/android/text/method/WordIterator.java b/core/java/android/text/method/WordIterator.java
index 2956f84..d57fa9b 100644
--- a/core/java/android/text/method/WordIterator.java
+++ b/core/java/android/text/method/WordIterator.java
@@ -37,6 +37,7 @@
* Also provides methods to determine word boundaries.
* {@hide}
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class WordIterator implements Selection.PositionIterator {
// Size of the window for the word iterator, should be greater than the longest word's length
private static final int WINDOW_WIDTH = 50;
diff --git a/core/java/android/text/style/AbsoluteSizeSpan.java b/core/java/android/text/style/AbsoluteSizeSpan.java
index 6d4f05a..1bc5d71 100644
--- a/core/java/android/text/style/AbsoluteSizeSpan.java
+++ b/core/java/android/text/style/AbsoluteSizeSpan.java
@@ -32,6 +32,7 @@
* <img src="{@docRoot}reference/android/images/text/style/absolutesizespan.png" />
* <figcaption>Text with text size updated.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AbsoluteSizeSpan extends MetricAffectingSpan implements ParcelableSpan {
private final int mSize;
diff --git a/core/java/android/text/style/AccessibilityClickableSpan.java b/core/java/android/text/style/AccessibilityClickableSpan.java
index ee8d156..5741f2a 100644
--- a/core/java/android/text/style/AccessibilityClickableSpan.java
+++ b/core/java/android/text/style/AccessibilityClickableSpan.java
@@ -43,6 +43,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AccessibilityClickableSpan extends ClickableSpan
implements ParcelableSpan {
// The id of the span this one replaces
diff --git a/core/java/android/text/style/AccessibilityReplacementSpan.java b/core/java/android/text/style/AccessibilityReplacementSpan.java
index e4fc147..af3a324 100644
--- a/core/java/android/text/style/AccessibilityReplacementSpan.java
+++ b/core/java/android/text/style/AccessibilityReplacementSpan.java
@@ -31,6 +31,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AccessibilityReplacementSpan extends ReplacementSpan
implements ParcelableSpan {
diff --git a/core/java/android/text/style/AccessibilityURLSpan.java b/core/java/android/text/style/AccessibilityURLSpan.java
index e280bdf..1fb76e7 100644
--- a/core/java/android/text/style/AccessibilityURLSpan.java
+++ b/core/java/android/text/style/AccessibilityURLSpan.java
@@ -27,6 +27,7 @@
* @hide
*/
@SuppressWarnings("ParcelableCreator")
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AccessibilityURLSpan extends URLSpan implements Parcelable {
final AccessibilityClickableSpan mAccessibilityClickableSpan;
diff --git a/core/java/android/text/style/AlignmentSpan.java b/core/java/android/text/style/AlignmentSpan.java
index 31db78a..53cbd63 100644
--- a/core/java/android/text/style/AlignmentSpan.java
+++ b/core/java/android/text/style/AlignmentSpan.java
@@ -25,6 +25,7 @@
/**
* Span that allows defining the alignment of text at the paragraph level.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface AlignmentSpan extends ParagraphStyle {
/**
diff --git a/core/java/android/text/style/BackgroundColorSpan.java b/core/java/android/text/style/BackgroundColorSpan.java
index 13647d9..bb04d0ff 100644
--- a/core/java/android/text/style/BackgroundColorSpan.java
+++ b/core/java/android/text/style/BackgroundColorSpan.java
@@ -34,6 +34,7 @@
* <img src="{@docRoot}reference/android/images/text/style/backgroundcolorspan.png" />
* <figcaption>Set a background color for the text.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BackgroundColorSpan extends CharacterStyle
implements UpdateAppearance, ParcelableSpan {
diff --git a/core/java/android/text/style/BulletSpan.java b/core/java/android/text/style/BulletSpan.java
index f70e6c5..24ae6e2 100644
--- a/core/java/android/text/style/BulletSpan.java
+++ b/core/java/android/text/style/BulletSpan.java
@@ -63,6 +63,7 @@
* <img src="{@docRoot}reference/android/images/text/style/custombulletspan.png" />
* <figcaption>Customized BulletSpan.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BulletSpan implements LeadingMarginSpan, ParcelableSpan {
// Bullet is slightly bigger to avoid aliasing artifacts on mdpi devices.
private static final int STANDARD_BULLET_RADIUS = 4;
diff --git a/core/java/android/text/style/CharacterStyle.java b/core/java/android/text/style/CharacterStyle.java
index 5b95f1a..2ea05e6 100644
--- a/core/java/android/text/style/CharacterStyle.java
+++ b/core/java/android/text/style/CharacterStyle.java
@@ -23,6 +23,7 @@
* class. Most extend its subclass {@link MetricAffectingSpan}, but simple
* ones may just implement {@link UpdateAppearance}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class CharacterStyle {
public abstract void updateDrawState(TextPaint tp);
diff --git a/core/java/android/text/style/ClickableSpan.java b/core/java/android/text/style/ClickableSpan.java
index 238da55..9e35d75 100644
--- a/core/java/android/text/style/ClickableSpan.java
+++ b/core/java/android/text/style/ClickableSpan.java
@@ -36,6 +36,7 @@
* <img src="{@docRoot}reference/android/images/text/style/clickablespan.png" />
* <figcaption>Text with <code>ClickableSpan</code>.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class ClickableSpan extends CharacterStyle implements UpdateAppearance {
private static int sIdCounter = 0;
diff --git a/core/java/android/text/style/ForegroundColorSpan.java b/core/java/android/text/style/ForegroundColorSpan.java
index 5c97426..337c49f 100644
--- a/core/java/android/text/style/ForegroundColorSpan.java
+++ b/core/java/android/text/style/ForegroundColorSpan.java
@@ -34,6 +34,7 @@
* <img src="{@docRoot}reference/android/images/text/style/foregroundcolorspan.png" />
* <figcaption>Set a text color.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ForegroundColorSpan extends CharacterStyle
implements UpdateAppearance, ParcelableSpan {
diff --git a/core/java/android/text/style/IconMarginSpan.java b/core/java/android/text/style/IconMarginSpan.java
index a6c5139..cc946e9 100644
--- a/core/java/android/text/style/IconMarginSpan.java
+++ b/core/java/android/text/style/IconMarginSpan.java
@@ -44,6 +44,7 @@
* @see DrawableMarginSpan for working with a {@link android.graphics.drawable.Drawable} instead of
* a {@link Bitmap}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class IconMarginSpan implements LeadingMarginSpan, LineHeightSpan {
@NonNull
diff --git a/core/java/android/text/style/LeadingMarginSpan.java b/core/java/android/text/style/LeadingMarginSpan.java
index 5bd2d60..60c4578 100644
--- a/core/java/android/text/style/LeadingMarginSpan.java
+++ b/core/java/android/text/style/LeadingMarginSpan.java
@@ -32,6 +32,7 @@
* LeadingMarginSpans should be attached from the first character to the last
* character of a single paragraph.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface LeadingMarginSpan
extends ParagraphStyle
{
diff --git a/core/java/android/text/style/LineBackgroundSpan.java b/core/java/android/text/style/LineBackgroundSpan.java
index 7cb9147..c2d38ce 100644
--- a/core/java/android/text/style/LineBackgroundSpan.java
+++ b/core/java/android/text/style/LineBackgroundSpan.java
@@ -28,6 +28,7 @@
/**
* Used to change the background of lines where the span is attached to.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface LineBackgroundSpan extends ParagraphStyle
{
/**
diff --git a/core/java/android/text/style/LineBreakConfigSpan.java b/core/java/android/text/style/LineBreakConfigSpan.java
index eeb6383..1af1eed 100644
--- a/core/java/android/text/style/LineBreakConfigSpan.java
+++ b/core/java/android/text/style/LineBreakConfigSpan.java
@@ -31,6 +31,7 @@
* LineBreakSpan for changing line break style of the specific region of the text.
*/
@FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class LineBreakConfigSpan implements ParcelableSpan {
private final LineBreakConfig mLineBreakConfig;
diff --git a/core/java/android/text/style/LineHeightSpan.java b/core/java/android/text/style/LineHeightSpan.java
index ae565d1..71e8932 100644
--- a/core/java/android/text/style/LineHeightSpan.java
+++ b/core/java/android/text/style/LineHeightSpan.java
@@ -30,6 +30,7 @@
/**
* The classes that affect the line height of paragraph should implement this interface.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface LineHeightSpan extends ParagraphStyle, WrapTogetherSpan {
/**
* Classes that implement this should define how the height is being calculated.
diff --git a/core/java/android/text/style/LocaleSpan.java b/core/java/android/text/style/LocaleSpan.java
index 489ceea..be5525a 100644
--- a/core/java/android/text/style/LocaleSpan.java
+++ b/core/java/android/text/style/LocaleSpan.java
@@ -32,6 +32,7 @@
/**
* Changes the {@link Locale} of the text to which the span is attached.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LocaleSpan extends MetricAffectingSpan implements ParcelableSpan {
@NonNull
private final LocaleList mLocales;
diff --git a/core/java/android/text/style/MaskFilterSpan.java b/core/java/android/text/style/MaskFilterSpan.java
index 587d1b4..44db012 100644
--- a/core/java/android/text/style/MaskFilterSpan.java
+++ b/core/java/android/text/style/MaskFilterSpan.java
@@ -30,6 +30,7 @@
* <img src="{@docRoot}reference/android/images/text/style/maskfilterspan.png" />
* <figcaption>Text blurred with the <code>MaskFilterSpan</code>.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class MaskFilterSpan extends CharacterStyle implements UpdateAppearance {
private MaskFilter mFilter;
diff --git a/core/java/android/text/style/MetricAffectingSpan.java b/core/java/android/text/style/MetricAffectingSpan.java
index 61b7947..f30fdc1 100644
--- a/core/java/android/text/style/MetricAffectingSpan.java
+++ b/core/java/android/text/style/MetricAffectingSpan.java
@@ -23,6 +23,7 @@
* The classes that affect character-level text formatting in a way that
* changes the width or height of characters extend this class.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class MetricAffectingSpan
extends CharacterStyle
implements UpdateLayout {
diff --git a/core/java/android/text/style/NoWritingToolsSpan.java b/core/java/android/text/style/NoWritingToolsSpan.java
index 90f85aa..c7dfcfa 100644
--- a/core/java/android/text/style/NoWritingToolsSpan.java
+++ b/core/java/android/text/style/NoWritingToolsSpan.java
@@ -32,6 +32,7 @@
* tools should only rewrite the user input text, and not modify the quoted text.
*/
@FlaggedApi(FLAG_WRITING_TOOLS)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class NoWritingToolsSpan implements ParcelableSpan {
/**
diff --git a/core/java/android/text/style/ParagraphStyle.java b/core/java/android/text/style/ParagraphStyle.java
index 423156e..27c1e26 100644
--- a/core/java/android/text/style/ParagraphStyle.java
+++ b/core/java/android/text/style/ParagraphStyle.java
@@ -20,6 +20,7 @@
* The classes that affect paragraph-level text formatting implement
* this interface.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface ParagraphStyle
{
diff --git a/core/java/android/text/style/QuoteSpan.java b/core/java/android/text/style/QuoteSpan.java
index 393ede6..99c9574 100644
--- a/core/java/android/text/style/QuoteSpan.java
+++ b/core/java/android/text/style/QuoteSpan.java
@@ -57,6 +57,7 @@
* <img src="{@docRoot}reference/android/images/text/style/customquotespan.png" />
* <figcaption>Customized <code>QuoteSpan</code>.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class QuoteSpan implements LeadingMarginSpan, ParcelableSpan {
/**
* Default stripe width in pixels.
diff --git a/core/java/android/text/style/RasterizerSpan.java b/core/java/android/text/style/RasterizerSpan.java
index f0be50a..cf8599c 100644
--- a/core/java/android/text/style/RasterizerSpan.java
+++ b/core/java/android/text/style/RasterizerSpan.java
@@ -22,6 +22,7 @@
/**
* @removed Rasterizer is not supported for hw-accerlerated and PDF rendering
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RasterizerSpan extends CharacterStyle implements UpdateAppearance {
private Rasterizer mRasterizer;
diff --git a/core/java/android/text/style/RelativeSizeSpan.java b/core/java/android/text/style/RelativeSizeSpan.java
index 5c91b20..38d5d38 100644
--- a/core/java/android/text/style/RelativeSizeSpan.java
+++ b/core/java/android/text/style/RelativeSizeSpan.java
@@ -34,6 +34,7 @@
* <img src="{@docRoot}reference/android/images/text/style/relativesizespan.png" />
* <figcaption>Text increased by 50% with <code>RelativeSizeSpan</code>.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RelativeSizeSpan extends MetricAffectingSpan implements ParcelableSpan {
private final float mProportion;
diff --git a/core/java/android/text/style/ReplacementSpan.java b/core/java/android/text/style/ReplacementSpan.java
index 9430fd3..a6fe1fe 100644
--- a/core/java/android/text/style/ReplacementSpan.java
+++ b/core/java/android/text/style/ReplacementSpan.java
@@ -23,6 +23,7 @@
import android.graphics.Paint;
import android.text.TextPaint;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class ReplacementSpan extends MetricAffectingSpan {
private CharSequence mContentDescription = null;
diff --git a/core/java/android/text/style/ScaleXSpan.java b/core/java/android/text/style/ScaleXSpan.java
index d022b07..009973e 100644
--- a/core/java/android/text/style/ScaleXSpan.java
+++ b/core/java/android/text/style/ScaleXSpan.java
@@ -36,6 +36,7 @@
* <img src="{@docRoot}reference/android/images/text/style/scalexspan.png" />
* <figcaption>Text scaled by 100% with <code>ScaleXSpan</code>.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ScaleXSpan extends MetricAffectingSpan implements ParcelableSpan {
private final float mProportion;
diff --git a/core/java/android/text/style/SpanUtils.java b/core/java/android/text/style/SpanUtils.java
index 6b4bd1a..21a96cd 100644
--- a/core/java/android/text/style/SpanUtils.java
+++ b/core/java/android/text/style/SpanUtils.java
@@ -30,6 +30,7 @@
/**
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SpanUtils {
private SpanUtils() {} // Do not instantiate
diff --git a/core/java/android/text/style/SpellCheckSpan.java b/core/java/android/text/style/SpellCheckSpan.java
index e8ec3c6..39cd279 100644
--- a/core/java/android/text/style/SpellCheckSpan.java
+++ b/core/java/android/text/style/SpellCheckSpan.java
@@ -28,6 +28,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SpellCheckSpan implements ParcelableSpan {
private boolean mSpellCheckInProgress;
diff --git a/core/java/android/text/style/StrikethroughSpan.java b/core/java/android/text/style/StrikethroughSpan.java
index 65ee347..3654870 100644
--- a/core/java/android/text/style/StrikethroughSpan.java
+++ b/core/java/android/text/style/StrikethroughSpan.java
@@ -32,6 +32,7 @@
* <img src="{@docRoot}reference/android/images/text/style/strikethroughspan.png" />
* <figcaption>Strikethrough text.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class StrikethroughSpan extends CharacterStyle
implements UpdateAppearance, ParcelableSpan {
diff --git a/core/java/android/text/style/StyleSpan.java b/core/java/android/text/style/StyleSpan.java
index 378682b..c01e134 100644
--- a/core/java/android/text/style/StyleSpan.java
+++ b/core/java/android/text/style/StyleSpan.java
@@ -44,6 +44,7 @@
* <img src="{@docRoot}reference/android/images/text/style/stylespan.png" />
* <figcaption>Text styled bold and italic with the <code>StyleSpan</code>.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan {
private final int mStyle;
diff --git a/core/java/android/text/style/SubscriptSpan.java b/core/java/android/text/style/SubscriptSpan.java
index 729a9ad..54c765d 100644
--- a/core/java/android/text/style/SubscriptSpan.java
+++ b/core/java/android/text/style/SubscriptSpan.java
@@ -37,6 +37,7 @@
* Note: Since the span affects the position of the text, if the text is on the last line of a
* TextView, it may appear cut.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SubscriptSpan extends MetricAffectingSpan implements ParcelableSpan {
/**
diff --git a/core/java/android/text/style/SuggestionRangeSpan.java b/core/java/android/text/style/SuggestionRangeSpan.java
index 1eee99a..640fae4 100644
--- a/core/java/android/text/style/SuggestionRangeSpan.java
+++ b/core/java/android/text/style/SuggestionRangeSpan.java
@@ -27,6 +27,7 @@
* A SuggestionRangeSpan is used to show which part of an EditText is affected by a suggestion
* popup window.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class SuggestionRangeSpan extends CharacterStyle implements ParcelableSpan {
private int mBackgroundColor;
diff --git a/core/java/android/text/style/SuggestionSpan.java b/core/java/android/text/style/SuggestionSpan.java
index 0cf96f6..d819062 100644
--- a/core/java/android/text/style/SuggestionSpan.java
+++ b/core/java/android/text/style/SuggestionSpan.java
@@ -48,6 +48,7 @@
*
* @see TextView#isSuggestionsEnabled()
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SuggestionSpan extends CharacterStyle implements ParcelableSpan {
private static final String TAG = "SuggestionSpan";
diff --git a/core/java/android/text/style/SuperscriptSpan.java b/core/java/android/text/style/SuperscriptSpan.java
index 5610223..d3b339c 100644
--- a/core/java/android/text/style/SuperscriptSpan.java
+++ b/core/java/android/text/style/SuperscriptSpan.java
@@ -35,6 +35,7 @@
* TextView, it may appear cut. This can be avoided by decreasing the text size with an {@link
* AbsoluteSizeSpan}
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SuperscriptSpan extends MetricAffectingSpan implements ParcelableSpan {
/**
* Creates a {@link SuperscriptSpan}.
diff --git a/core/java/android/text/style/TabStopSpan.java b/core/java/android/text/style/TabStopSpan.java
index 8128475..e6733a2 100644
--- a/core/java/android/text/style/TabStopSpan.java
+++ b/core/java/android/text/style/TabStopSpan.java
@@ -24,6 +24,7 @@
* the leading margin of the line. <code>TabStopSpan</code> will only affect the first tab
* encountered on the first line of the text.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface TabStopSpan extends ParagraphStyle {
/**
diff --git a/core/java/android/text/style/TextAppearanceSpan.java b/core/java/android/text/style/TextAppearanceSpan.java
index 245a9db..7ede349 100644
--- a/core/java/android/text/style/TextAppearanceSpan.java
+++ b/core/java/android/text/style/TextAppearanceSpan.java
@@ -58,6 +58,7 @@
* @attr ref android.R.styleable#TextAppearance_fontVariationSettings
*
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TextAppearanceSpan extends MetricAffectingSpan implements ParcelableSpan {
private final String mFamilyName;
private final int mStyle;
diff --git a/core/java/android/text/style/TtsSpan.java b/core/java/android/text/style/TtsSpan.java
index e0d4ec1..6d776d1 100644
--- a/core/java/android/text/style/TtsSpan.java
+++ b/core/java/android/text/style/TtsSpan.java
@@ -42,6 +42,7 @@
* The inner classes are there for convenience and provide builders for each
* TtsSpan type.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TtsSpan implements ParcelableSpan {
private final String mType;
private final PersistableBundle mArgs;
diff --git a/core/java/android/text/style/TypefaceSpan.java b/core/java/android/text/style/TypefaceSpan.java
index bdfc772..86f7f76 100644
--- a/core/java/android/text/style/TypefaceSpan.java
+++ b/core/java/android/text/style/TypefaceSpan.java
@@ -50,6 +50,7 @@
* <figcaption>Text with <code>TypefaceSpan</code>s constructed based on a font from resource and
* from a font family.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TypefaceSpan extends MetricAffectingSpan implements ParcelableSpan {
@Nullable
diff --git a/core/java/android/text/style/URLSpan.java b/core/java/android/text/style/URLSpan.java
index 9969d29..f06627d 100644
--- a/core/java/android/text/style/URLSpan.java
+++ b/core/java/android/text/style/URLSpan.java
@@ -41,6 +41,7 @@
* <img src="{@docRoot}reference/android/images/text/style/urlspan.png" />
* <figcaption>Text with <code>URLSpan</code>.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class URLSpan extends ClickableSpan implements ParcelableSpan {
private final String mURL;
diff --git a/core/java/android/text/style/UnderlineSpan.java b/core/java/android/text/style/UnderlineSpan.java
index 075e70b..b3bb142 100644
--- a/core/java/android/text/style/UnderlineSpan.java
+++ b/core/java/android/text/style/UnderlineSpan.java
@@ -32,6 +32,7 @@
* <img src="{@docRoot}reference/android/images/text/style/underlinespan.png" />
* <figcaption>Underlined text.</figcaption>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class UnderlineSpan extends CharacterStyle
implements UpdateAppearance, ParcelableSpan {
diff --git a/core/java/android/text/style/UpdateAppearance.java b/core/java/android/text/style/UpdateAppearance.java
index 7112347..7b0a6d3 100644
--- a/core/java/android/text/style/UpdateAppearance.java
+++ b/core/java/android/text/style/UpdateAppearance.java
@@ -22,5 +22,6 @@
* that if the class also impacts size or other metrics, it should instead
* implement {@link UpdateLayout}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface UpdateAppearance {
}
diff --git a/core/java/android/text/style/UpdateLayout.java b/core/java/android/text/style/UpdateLayout.java
index 591075e..5af4141 100644
--- a/core/java/android/text/style/UpdateLayout.java
+++ b/core/java/android/text/style/UpdateLayout.java
@@ -22,4 +22,5 @@
* this interface. This interface also includes {@link UpdateAppearance}
* since such a change implicitly also impacts the appearance.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface UpdateLayout extends UpdateAppearance { }
diff --git a/core/java/android/text/style/WrapTogetherSpan.java b/core/java/android/text/style/WrapTogetherSpan.java
index 11721a8..cf74c1b 100644
--- a/core/java/android/text/style/WrapTogetherSpan.java
+++ b/core/java/android/text/style/WrapTogetherSpan.java
@@ -16,6 +16,7 @@
package android.text.style;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface WrapTogetherSpan
extends ParagraphStyle
{
diff --git a/core/java/android/text/util/Rfc822Token.java b/core/java/android/text/util/Rfc822Token.java
index 2f207db..d6e987b 100644
--- a/core/java/android/text/util/Rfc822Token.java
+++ b/core/java/android/text/util/Rfc822Token.java
@@ -22,6 +22,7 @@
* This class stores an RFC 822-like name, address, and comment,
* and provides methods to convert them to quoted strings.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Rfc822Token {
@Nullable
private String mName, mAddress, mComment;
diff --git a/core/java/android/text/util/Rfc822Tokenizer.java b/core/java/android/text/util/Rfc822Tokenizer.java
index 68334e4..8a9252a 100644
--- a/core/java/android/text/util/Rfc822Tokenizer.java
+++ b/core/java/android/text/util/Rfc822Tokenizer.java
@@ -27,6 +27,7 @@
* a string of addresses (such as might be typed into such a field)
* into a series of Rfc822Tokens.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Rfc822Tokenizer implements MultiAutoCompleteTextView.Tokenizer {
/**
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 0903d22..c4347f0 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -3080,6 +3080,21 @@
}
/**
+ * Changes the default ApplyToken.
+ *
+ * ApplyToken is used to determine the order in which Transactions are applied.
+ * Transactions applied with the same ApplyToken will be applied in the order
+ * they were queued in SurfaceFlinger. Transactions are sent via binder so the
+ * caller should be aware of the order in which binder calls are executed in
+ * SurfaceFlinger. This along with the ApplyToken will determine the order
+ * in which Transactions are applied. Transactions with different apply tokens
+ * will be applied in arbitrary order regardless of when they were queued in
+ * SurfaceFlinger.
+ *
+ * Caller must keep track of the previous ApplyToken if they want to restore it.
+ *
+ * Note each buffer producer should have its own ApplyToken in order to ensure
+ * that Transactions are not delayed by Transactions from other buffer producers.
*
* @hide
*/
@@ -3088,6 +3103,7 @@
}
/**
+ * Returns the default ApplyToken.
*
* @hide
*/
@@ -3096,8 +3112,10 @@
}
/**
- * Apply the transaction, clearing it's state, and making it usable
+ * Apply the transaction, clearing its state, and making it usable
* as a new transaction.
+ *
+ * This method will also increment the transaction ID for debugging purposes.
*/
public void apply() {
apply(/*sync*/ false);
@@ -3116,7 +3134,7 @@
/**
- * Clear the transaction object, without applying it.
+ * Clear the transaction object, without applying it. The transction ID is preserved.
*
* @hide
*/
@@ -3375,6 +3393,9 @@
* If two siblings share the same Z order the ordering is undefined. Surfaces
* with a negative Z will be placed below the parent surface.
*
+ * Calling setLayer after setRelativeLayer will reset the relative layer
+ * in the same transaction.
+ *
* @param sc The SurfaceControl to set the Z order on
* @param z The Z-order
* @return This Transaction.
@@ -3392,6 +3413,22 @@
}
/**
+ * Set the Z-order for a given SurfaceControl, relative to the specified SurfaceControl.
+ * The SurfaceControl with a negative z will be placed below the relativeTo
+ * SurfaceControl and the SurfaceControl with a positive z will be placed above the
+ * relativeTo SurfaceControl.
+ *
+ * Calling setLayer will reset the relative layer. Calling setRelativeLayer after setLayer
+ * will override the setLayer call.
+ *
+ * If a layer is set to be relative to a layer that is destroyed, the layer will be
+ * offscreen until setLayer is called or setRelativeLayer is called with a valid
+ * SurfaceControl.
+ *
+ * @param sc The SurfaceControl to set the Z order on
+ * @param relativeTo The SurfaceControl to set the Z order relative to
+ * @param z The Z-order
+ * @return This Transaction.
* @hide
*/
public Transaction setRelativeLayer(SurfaceControl sc, SurfaceControl relativeTo, int z) {
@@ -3405,6 +3442,9 @@
}
/**
+ * The hint from the buffer producer as to what portion of the layer is
+ * transparent.
+ *
* @hide
*/
public Transaction setTransparentRegionHint(SurfaceControl sc, Region transparentRegion) {
@@ -3438,6 +3478,10 @@
}
/**
+ * Sets the input channel for a given SurfaceControl. The position and order of the
+ * SurfaceControl in conjunction with the touchable region in the InputWindowHandle
+ * determines the hit region.
+ *
* @hide
*/
public Transaction setInputWindowInfo(SurfaceControl sc, InputWindowHandle handle) {
@@ -3549,6 +3593,8 @@
* surface. If no crop is specified and the surface has no buffer, the surface bounds is
* only constrained by the size of its parent bounds.
*
+ * To unset the crop, pass in an invalid Rect (0, 0, -1, -1)
+ *
* @param sc SurfaceControl to set crop of.
* @param crop Bounds of the crop to apply.
* @hide
@@ -3578,6 +3624,8 @@
* surface. If no crop is specified and the surface has no buffer, the surface bounds is
* only constrained by the size of its parent bounds.
*
+ * To unset the crop, pass in an invalid Rect (0, 0, -1, -1)
+ *
* @param sc SurfaceControl to set crop of.
* @param crop Bounds of the crop to apply.
* @return this This transaction for chaining
@@ -3625,6 +3673,8 @@
* surface. If no crop is specified and the surface has no buffer, the surface bounds is
* only constrained by the size of its parent bounds.
*
+ * To unset the crop, pass in an invalid Rect (0, 0, -1, -1)
+ *
* @param sc SurfaceControl to set crop of.
* @param crop Bounds of the crop to apply.
* @return this This transaction for chaining
@@ -3643,7 +3693,12 @@
}
/**
- * Sets the corner radius of a {@link SurfaceControl}.
+ * Sets the corner radius of a {@link SurfaceControl}. This corner radius is applied to the
+ * SurfaceControl and its children. The API expects a crop to be set on the SurfaceControl
+ * to ensure that the corner radius is applied to the correct region. If the crop does not
+ * intersect with the SurfaceControl's visible content, the corner radius will not be
+ * applied.
+ *
* @param sc SurfaceControl
* @param cornerRadius Corner radius in pixels.
* @return Itself.
@@ -3753,6 +3808,9 @@
}
/**
+ * Associates a layer with a display. The layer will be drawn on the display with the
+ * specified layer stack. If the layer is not a root layer, this call has no effect.
+ *
* @hide
*/
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.O)
@@ -3791,6 +3849,7 @@
/**
* Fills the surface with the specified color.
+ *
* @param color A float array with three values to represent r, g, b in range [0..1]. An
* invalid color will remove the color fill.
* @hide
@@ -3809,8 +3868,9 @@
/**
* Removes color fill.
- * @hide
- */
+ *
+ * @hide
+ */
public Transaction unsetColor(SurfaceControl sc) {
checkPreconditions(sc);
if (SurfaceControlRegistry.sCallStackDebuggingEnabled) {
@@ -3898,6 +3958,8 @@
}
/**
+ * Sets the surface to render contents of the display to.
+ *
* @hide
*/
public Transaction setDisplaySurface(IBinder displayToken, Surface surface) {
@@ -3916,6 +3978,9 @@
}
/**
+ * Sets the layer stack of the display.
+ *
+ * All layers with the same layer stack will be drawn on this display.
* @hide
*/
public Transaction setDisplayLayerStack(IBinder displayToken, int layerStack) {
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index dd32947..b98f4db 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -16,6 +16,7 @@
package android.view;
+import static android.view.flags.Flags.FLAG_DEPRECATE_SURFACE_VIEW_Z_ORDER_APIS;
import static android.view.flags.Flags.FLAG_SURFACE_VIEW_GET_SURFACE_PACKAGE;
import static android.view.flags.Flags.FLAG_SURFACE_VIEW_SET_COMPOSITION_ORDER;
import static android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
@@ -812,7 +813,12 @@
* window is attached to the window manager.
*
* <p>Calling this overrides any previous call to {@link #setZOrderOnTop}.
+ *
+ * @deprecated Use {@link #setCompositionOrder(int)} instead. It provides more
+ * control over the Z ordering behavior.
*/
+ @Deprecated
+ @FlaggedApi(FLAG_DEPRECATE_SURFACE_VIEW_Z_ORDER_APIS)
public void setZOrderMediaOverlay(boolean isMediaOverlay) {
mRequestedSubLayer = isMediaOverlay
? APPLICATION_MEDIA_OVERLAY_SUBLAYER : APPLICATION_MEDIA_SUBLAYER;
@@ -834,7 +840,12 @@
* <p>Calling this overrides any previous call to {@link #setZOrderMediaOverlay}.
*
* @param onTop Whether to show the surface on top of this view's window.
+ *
+ * @deprecated Use {@link #setCompositionOrder(int)} instead. It provides more
+ * control over the Z ordering behavior.
*/
+ @Deprecated
+ @FlaggedApi(FLAG_DEPRECATE_SURFACE_VIEW_Z_ORDER_APIS)
public void setZOrderOnTop(boolean onTop) {
// In R and above we allow dynamic layer changes.
final boolean allowDynamicChange = getContext().getApplicationInfo().targetSdkVersion
@@ -866,7 +877,11 @@
* @return Whether the Z ordering changed.
*
* @hide
+ *
+ * @deprecated Use {@link #setCompositionOrder(int)} instead. It provides more control
+ * over the Z ordering behavior.
*/
+ @Deprecated
public boolean setZOrderedOnTop(boolean onTop, boolean allowDynamicChange) {
final int subLayer;
if (onTop) {
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 93eed37..24647f4 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -1199,6 +1199,43 @@
"android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE";
/**
+ * Application-level [PackageManager][android.content.pm.PackageManager.Property] tag that (when
+ * set to false) informs the system the app has opted out of the camera compatibility treatment
+ * for fixed-orientation apps, which simulates running on a portrait device, in the orientation
+ * requested by the app.
+ *
+ * <p>This treatment aims to mitigate camera issues on large screens, like stretched or sideways
+ * previews. It simulates running on a portrait device by:
+ * <ul>
+ * <li>Letterboxing the app window,
+ * <li>Cropping the camera buffer to match the app's requested orientation,
+ * <li>Setting the camera sensor orientation to portrait.
+ * <li>Setting the display rotation to match the app's requested orientation, given portrait
+ * natural orientation,
+ * <li>Refreshes the activity to trigger new camera setup, with sandboxed values.
+ * </ul>
+ *
+ * <p>To opt out of the camera compatibility treatment, add this property to your app manifest
+ * and set the value to {@code false}.
+ *
+ * <p>Not setting this property at all, or setting this property to {@code true} has no effect.
+ *
+ * <p><b>Syntax:</b>
+ * <pre>
+ * <application>
+ * <property
+ * android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION"
+ * android:value="true|false"/>
+ * </application>
+ * </pre>
+ *
+ * @hide
+ */
+ //TODO(b/394590412): Make this property public.
+ String PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION =
+ "android.window.PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION";
+
+ /**
* Application level {@link android.content.pm.PackageManager.Property PackageManager.Property}
* for an app to inform the system that the app should be excluded from the compatibility
* override for orientation set by the device manufacturer. When the orientation override is
diff --git a/core/java/android/view/flags/view_flags.aconfig b/core/java/android/view/flags/view_flags.aconfig
index f6fdec9..d06f885 100644
--- a/core/java/android/view/flags/view_flags.aconfig
+++ b/core/java/android/view/flags/view_flags.aconfig
@@ -129,6 +129,14 @@
}
flag {
+ name: "deprecate_surface_view_z_order_apis"
+ namespace: "window_surfaces"
+ description: "Deprecate SurfaceView z order control APIs."
+ bug: "341021569"
+ is_fixed_read_only: true
+}
+
+flag {
name: "use_refactored_round_scrollbar"
namespace: "wear_frameworks"
description: "Use refactored round scrollbar."
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 421001f..0b34600 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -532,6 +532,7 @@
final H mH;
// Our generic input connection if the current target does not have its own.
+ @NonNull
private final RemoteInputConnectionImpl mFallbackInputConnection;
private final int mDisplayId;
diff --git a/core/java/android/view/textclassifier/intent/OWNERS b/core/java/android/view/textclassifier/intent/OWNERS
index 3465fe6..dc18514 100644
--- a/core/java/android/view/textclassifier/intent/OWNERS
+++ b/core/java/android/view/textclassifier/intent/OWNERS
@@ -1,6 +1,5 @@
# Bug component: 709498
-mns@google.com
toki@google.com
svetoslavganov@android.com
svetoslavganov@google.com
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 0a5c14e..222a7b3 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -9216,6 +9216,7 @@
public static RemoteResponse fromFillInIntent(@NonNull Intent fillIntent) {
RemoteResponse response = new RemoteResponse();
response.mFillIntent = fillIntent;
+ fillIntent.collectExtraIntentKeys();
return response;
}
@@ -9224,6 +9225,7 @@
RemoteResponse response = new RemoteResponse();
response.mPendingIntent = pendingIntent;
response.mFillIntent = intent;
+ intent.collectExtraIntentKeys();
return response;
}
diff --git a/core/java/android/window/DesktopModeFlags.java b/core/java/android/window/DesktopModeFlags.java
index 4ba9738..4aeedbb 100644
--- a/core/java/android/window/DesktopModeFlags.java
+++ b/core/java/android/window/DesktopModeFlags.java
@@ -102,9 +102,14 @@
ENABLE_HOLD_TO_DRAG_APP_HANDLE(Flags::enableHoldToDragAppHandle, true),
ENABLE_MINIMIZE_BUTTON(Flags::enableMinimizeButton, true),
ENABLE_MODALS_FULLSCREEN_WITH_PERMISSIONS(Flags::enableModalsFullscreenWithPermission, false),
+ ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS(
+ Flags::enableOpaqueBackgroundForTransparentWindows, false),
+ ENABLE_QUICKSWITCH_DESKTOP_SPLIT_BUGFIX(Flags::enableQuickswitchDesktopSplitBugfix, true),
ENABLE_RESIZING_METRICS(Flags::enableResizingMetrics, true),
ENABLE_RESTORE_TO_PREVIOUS_SIZE_FROM_DESKTOP_IMMERSIVE(
Flags::enableRestoreToPreviousSizeFromDesktopImmersive, true),
+ ENABLE_START_LAUNCH_TRANSITION_FROM_TASKBAR_BUGFIX(
+ Flags::enableStartLaunchTransitionFromTaskbarBugfix, true),
ENABLE_TASKBAR_OVERFLOW(Flags::enableTaskbarOverflow, false),
ENABLE_TASK_RESIZING_KEYBOARD_SHORTCUTS(Flags::enableTaskResizingKeyboardShortcuts, true),
ENABLE_TASK_STACK_OBSERVER_IN_SHELL(Flags::enableTaskStackObserverInShell, true),
@@ -118,6 +123,8 @@
ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS(
Flags::enableWindowingTransitionHandlersObservers, false),
EXCLUDE_CAPTION_FROM_APP_BOUNDS(Flags::excludeCaptionFromAppBounds, false),
+ IGNORE_ASPECT_RATIO_RESTRICTIONS_FOR_RESIZEABLE_FREEFORM_ACTIVITIES(
+ Flags::ignoreAspectRatioRestrictionsForResizeableFreeformActivities, true),
INCLUDE_TOP_TRANSPARENT_FULLSCREEN_TASK_IN_DESKTOP_HEURISTIC(
Flags::includeTopTransparentFullscreenTaskInDesktopHeuristic, true)
// go/keep-sorted end
diff --git a/core/java/android/window/TransitionFilter.java b/core/java/android/window/TransitionFilter.java
index 61fc622..d8d2011 100644
--- a/core/java/android/window/TransitionFilter.java
+++ b/core/java/android/window/TransitionFilter.java
@@ -31,8 +31,6 @@
import android.os.Parcelable;
import android.view.WindowManager;
-import com.android.window.flags.Flags;
-
/**
* A parcelable filter that can be used for rerouting transitions to a remote. This is a local
* representation so that the transition system doesn't need to make blocking queries over
@@ -261,9 +259,7 @@
// only applies to activity/task
&& (change.getTaskInfo() != null
|| change.getActivityComponent() != null)) {
- final TransitionInfo.AnimationOptions opts =
- Flags.moveAnimationOptionsToChange() ? change.getAnimationOptions()
- : info.getAnimationOptions();
+ final TransitionInfo.AnimationOptions opts = change.getAnimationOptions();
if (opts != null) {
boolean canActuallyOverride = change.getTaskInfo() == null
|| opts.getOverrideTaskTransition();
diff --git a/core/java/android/window/TransitionInfo.java b/core/java/android/window/TransitionInfo.java
index 4f34aa3..32175f1 100644
--- a/core/java/android/window/TransitionInfo.java
+++ b/core/java/android/window/TransitionInfo.java
@@ -57,8 +57,6 @@
import android.view.SurfaceControl;
import android.view.WindowManager;
-import com.android.window.flags.Flags;
-
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -220,10 +218,6 @@
private final ArrayList<Change> mChanges = new ArrayList<>();
private final ArrayList<Root> mRoots = new ArrayList<>();
- // TODO(b/327332488): Clean-up usages after the flag is fully enabled.
- @Deprecated
- private AnimationOptions mOptions;
-
/** This is only a BEST-EFFORT id used for log correlation. DO NOT USE for any real work! */
private int mDebugId = -1;
@@ -238,7 +232,6 @@
mFlags = in.readInt();
in.readTypedList(mChanges, Change.CREATOR);
in.readTypedList(mRoots, Root.CREATOR);
- mOptions = in.readTypedObject(AnimationOptions.CREATOR);
mDebugId = in.readInt();
mTrack = in.readInt();
}
@@ -250,7 +243,6 @@
dest.writeInt(mFlags);
dest.writeTypedList(mChanges);
dest.writeTypedList(mRoots, flags);
- dest.writeTypedObject(mOptions, flags);
dest.writeInt(mDebugId);
dest.writeInt(mTrack);
}
@@ -286,18 +278,6 @@
mRoots.add(other);
}
- /**
- * @deprecated Set {@link AnimationOptions} to change. This method is only used if
- * {@link Flags#FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE} is disabled.
- */
- @Deprecated
- public void setAnimationOptions(@Nullable AnimationOptions options) {
- if (Flags.moveAnimationOptionsToChange()) {
- return;
- }
- mOptions = options;
- }
-
public @TransitionType int getType() {
return mType;
}
@@ -360,16 +340,6 @@
}
/**
- * @deprecated Use {@link Change#getAnimationOptions()} instead. This method is called only
- * if {@link Flags#FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE} is disabled.
- */
- @Deprecated
- @Nullable
- public AnimationOptions getAnimationOptions() {
- return mOptions;
- }
-
- /**
* @return the list of {@link Change}s in this transition. The list is sorted top-to-bottom
* in Z (meaning index 0 is the top-most container).
*/
@@ -455,9 +425,6 @@
StringBuilder sb = new StringBuilder();
sb.append("{id=").append(mDebugId).append(" t=").append(transitTypeToString(mType))
.append(" f=0x").append(Integer.toHexString(mFlags)).append(" trk=").append(mTrack);
- if (mOptions != null) {
- sb.append(" opt=").append(mOptions);
- }
sb.append(" r=[");
for (int i = 0; i < mRoots.size(); ++i) {
if (i > 0) {
@@ -656,8 +623,6 @@
for (int i = 0; i < mRoots.size(); ++i) {
out.mRoots.add(mRoots.get(i).localRemoteCopy());
}
- // Doesn't have any native stuff, so no need for actual copy
- out.mOptions = mOptions;
return out;
}
@@ -860,9 +825,6 @@
* Sets {@link AnimationOptions} to override animation.
*/
public void setAnimationOptions(@Nullable AnimationOptions options) {
- if (!Flags.moveAnimationOptionsToChange()) {
- return;
- }
mAnimationOptions = options;
}
diff --git a/core/java/android/window/flags/lse_desktop_experience.aconfig b/core/java/android/window/flags/lse_desktop_experience.aconfig
index 8265d25..2e36e9a 100644
--- a/core/java/android/window/flags/lse_desktop_experience.aconfig
+++ b/core/java/android/window/flags/lse_desktop_experience.aconfig
@@ -206,6 +206,13 @@
}
flag {
+ name: "enable_camera_compat_for_desktop_windowing_opt_out_api"
+ namespace: "lse_desktop_experience"
+ description: "Introduces a developer API to opt-out of Camera Compat treatment for fixed-orientation apps in desktop windowing mode"
+ bug: "397165621"
+}
+
+flag {
name: "enable_task_stack_observer_in_shell"
namespace: "lse_desktop_experience"
description: "Introduces a new observer in shell to track the task stack."
@@ -681,6 +688,16 @@
}
flag {
+ name: "enable_opaque_background_for_transparent_windows"
+ namespace: "lse_desktop_experience"
+ description: "Whether an opaque background should be forcefully set for windows with only transparent background."
+ bug: "397219542"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "enable_desktop_mode_through_dev_option"
namespace: "lse_desktop_experience"
description: "Enables support for desktop mode through developer options for devices eligible for desktop mode."
@@ -778,3 +795,20 @@
description: "Show recent apps in the taskbar overflow."
bug: "368119679"
}
+
+flag {
+ name: "enable_projected_display_desktop_mode"
+ namespace: "lse_desktop_experience"
+ description: "Enable Desktop Mode on Projected Mode devices but constrained to the external display."
+ bug: "384568161"
+}
+
+flag {
+ name: "enable_persisting_density_scale_for_connected_displays"
+ namespace: "lse_desktop_experience"
+ description: "Enables persisting density scale on resolution change for connected displays."
+ bug: "392855657"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
\ No newline at end of file
diff --git a/core/java/android/window/flags/windowing_sdk.aconfig b/core/java/android/window/flags/windowing_sdk.aconfig
index 54d0eef..6e45d3d 100644
--- a/core/java/android/window/flags/windowing_sdk.aconfig
+++ b/core/java/android/window/flags/windowing_sdk.aconfig
@@ -62,16 +62,6 @@
flag {
namespace: "windowing_sdk"
- name: "move_animation_options_to_change"
- description: "Move AnimationOptions from TransitionInfo to each Change"
- bug: "327332488"
- metadata {
- purpose: PURPOSE_BUGFIX
- }
-}
-
-flag {
- namespace: "windowing_sdk"
name: "rear_display_disable_force_desktop_system_decorations"
description: "Block system decorations from being added to a rear display when desktop mode is forced"
bug: "346103150"
diff --git a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
index a27eeb8..1281a78 100644
--- a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
+++ b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
@@ -97,6 +97,8 @@
new ComponentName("com.android.server.accessibility", "ReduceBrightColors");
public static final ComponentName FONT_SIZE_COMPONENT_NAME =
new ComponentName("com.android.server.accessibility", "FontSize");
+ public static final ComponentName AUTOCLICK_COMPONENT_NAME =
+ new ComponentName("com.android.server.accessibility", "Autoclick");
// The component name for the sub setting of Accessibility button in Accessibility settings
public static final ComponentName ACCESSIBILITY_BUTTON_COMPONENT_NAME =
@@ -163,7 +165,7 @@
getFrameworkShortcutFeaturesMap() {
if (sFrameworkShortcutFeaturesMap == null) {
- Map<ComponentName, FrameworkFeatureInfo> featuresMap = new ArrayMap<>(4);
+ Map<ComponentName, FrameworkFeatureInfo> featuresMap = new ArrayMap<>(8);
featuresMap.put(COLOR_INVERSION_COMPONENT_NAME,
new ToggleableFrameworkFeatureInfo(
Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED,
@@ -174,6 +176,11 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
"1" /* Value to enable */, "0" /* Value to disable */,
R.string.color_correction_feature_name));
+ featuresMap.put(AUTOCLICK_COMPONENT_NAME,
+ new ToggleableFrameworkFeatureInfo(
+ Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED,
+ "1" /* Value to enable */, "0" /* Value to disable */,
+ R.string.autoclick_feature_name));
if (SUPPORT_ONE_HANDED_MODE) {
featuresMap.put(ONE_HANDED_COMPONENT_NAME,
new ToggleableFrameworkFeatureInfo(
diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java
index b187eb4..6498c53 100644
--- a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java
+++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java
@@ -17,6 +17,7 @@
package com.android.internal.accessibility.dialog;
import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
+import static com.android.internal.accessibility.AccessibilityShortcutController.AUTOCLICK_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
@@ -214,6 +215,19 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED);
targets.add(colorInversion);
+ // TODO(b/394683600): Update Icon with the autoclick asset.
+ final ToggleAllowListingFeatureTarget autoclick =
+ new ToggleAllowListingFeatureTarget(context,
+ shortcutType,
+ isShortcutContained(context, shortcutType,
+ AUTOCLICK_COMPONENT_NAME.flattenToString()),
+ AUTOCLICK_COMPONENT_NAME.flattenToString(),
+ uid,
+ context.getString(R.string.autoclick_feature_name),
+ context.getDrawable(R.drawable.ic_accessibility_generic),
+ Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED);
+ targets.add(autoclick);
+
if (SUPPORT_ONE_HANDED_MODE) {
final ToggleAllowListingFeatureTarget oneHandedMode =
new ToggleAllowListingFeatureTarget(context,
diff --git a/core/java/com/android/internal/app/MediaRouteControllerContentManager.java b/core/java/com/android/internal/app/MediaRouteControllerContentManager.java
index dc4caa3..3a8b94f 100644
--- a/core/java/com/android/internal/app/MediaRouteControllerContentManager.java
+++ b/core/java/com/android/internal/app/MediaRouteControllerContentManager.java
@@ -17,7 +17,12 @@
package com.android.internal.app;
import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.AnimationDrawable;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.StateListDrawable;
import android.media.MediaRouter;
+import android.util.TypedValue;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.SeekBar;
@@ -35,9 +40,14 @@
*/
public interface Delegate {
/**
- * Updates the title of the cast device
+ * Updates the title of the media route device
*/
- void setCastDeviceTitle(CharSequence title);
+ void setMediaRouteDeviceTitle(CharSequence title);
+
+ /**
+ * Updates the icon of the media route device
+ */
+ void setMediaRouteDeviceIcon(Drawable icon);
/**
* Dismiss the UI to transition to a different workflow.
@@ -45,6 +55,7 @@
void dismissView();
}
+ private final Context mContext;
private final Delegate mDelegate;
// Time to wait before updating the volume when the user lets go of the seek bar
@@ -53,15 +64,25 @@
private static final int VOLUME_UPDATE_DELAY_MILLIS = 250;
private final MediaRouter mRouter;
+ private final MediaRouteControllerContentManager.MediaRouterCallback mCallback;
private final MediaRouter.RouteInfo mRoute;
+ private Drawable mMediaRouteButtonDrawable;
+ private final int[] mMediaRouteConnectingState = { R.attr.state_checked, R.attr.state_enabled };
+ private final int[] mMediaRouteOnState = { R.attr.state_activated, R.attr.state_enabled };
+ private Drawable mCurrentIconDrawable;
+
+ private boolean mAttachedToWindow;
+
private LinearLayout mVolumeLayout;
private SeekBar mVolumeSlider;
private boolean mVolumeSliderTouched;
public MediaRouteControllerContentManager(Context context, Delegate delegate) {
+ mContext = context;
mDelegate = delegate;
mRouter = context.getSystemService(MediaRouter.class);
+ mCallback = new MediaRouteControllerContentManager.MediaRouterCallback();
mRoute = mRouter.getSelectedRoute();
}
@@ -70,7 +91,7 @@
* given container view.
*/
public void bindViews(View containerView) {
- mDelegate.setCastDeviceTitle(mRoute.getName());
+ mDelegate.setMediaRouteDeviceTitle(mRoute.getName());
mVolumeLayout = containerView.findViewById(R.id.media_route_volume_layout);
mVolumeSlider = containerView.findViewById(R.id.media_route_volume_slider);
mVolumeSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@@ -108,20 +129,58 @@
}
}
});
+
+ mMediaRouteButtonDrawable = obtainMediaRouteButtonDrawable();
+ }
+
+ /**
+ * Called when this UI is attached to a window..
+ */
+ public void onAttachedToWindow() {
+ mAttachedToWindow = true;
+ mRouter.addCallback(0, mCallback, MediaRouter.CALLBACK_FLAG_UNFILTERED_EVENTS);
+ update();
+ }
+
+ /**
+ * Called when this UI is detached from a window..
+ */
+ public void onDetachedFromWindow() {
+ mRouter.removeCallback(mCallback);
+ mAttachedToWindow = false;
}
/**
* Updates all the views to reflect new states.
*/
public void update() {
- mDelegate.setCastDeviceTitle(mRoute.getName());
+ if (!mRoute.isSelected() || mRoute.isDefault()) {
+ mDelegate.dismissView();
+ }
+
+ mDelegate.setMediaRouteDeviceTitle(mRoute.getName());
updateVolume();
+
+ Drawable icon = getIconDrawable();
+ if (icon != mCurrentIconDrawable) {
+ mCurrentIconDrawable = icon;
+ if (icon instanceof AnimationDrawable animDrawable) {
+ if (!mAttachedToWindow && !mRoute.isConnecting()) {
+ // When the route is already connected before the view is attached, show the
+ // last frame of the connected animation immediately.
+ if (animDrawable.isRunning()) {
+ animDrawable.stop();
+ }
+ icon = animDrawable.getFrame(animDrawable.getNumberOfFrames() - 1);
+ } else if (!animDrawable.isRunning()) {
+ animDrawable.start();
+ }
+ }
+ mDelegate.setMediaRouteDeviceIcon(icon);
+ }
}
- /**
- * Updates the volume layout and slider.
- */
- public void updateVolume() {
+ private void updateVolume() {
if (!mVolumeSliderTouched) {
if (isVolumeControlAvailable()) {
mVolumeLayout.setVisibility(View.VISIBLE);
@@ -150,4 +209,61 @@
private boolean isVolumeControlAvailable() {
return mRoute.getVolumeHandling() == MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE;
}
+
+ private Drawable obtainMediaRouteButtonDrawable() {
+ TypedValue value = new TypedValue();
+ if (!mContext.getTheme().resolveAttribute(R.attr.mediaRouteButtonStyle, value, true)) {
+ return null;
+ }
+ int[] drawableAttrs = new int[] { R.attr.externalRouteEnabledDrawable };
+ TypedArray a = mContext.obtainStyledAttributes(value.data, drawableAttrs);
+ Drawable drawable = a.getDrawable(0);
+ a.recycle();
+ return drawable;
+ }
+
+ private Drawable getIconDrawable() {
+ if (!(mMediaRouteButtonDrawable instanceof StateListDrawable)) {
+ return mMediaRouteButtonDrawable;
+ } else if (mRoute.isConnecting()) {
+ StateListDrawable stateListDrawable = (StateListDrawable) mMediaRouteButtonDrawable;
+ stateListDrawable.setState(mMediaRouteConnectingState);
+ return stateListDrawable.getCurrent();
+ } else {
+ StateListDrawable stateListDrawable = (StateListDrawable) mMediaRouteButtonDrawable;
+ stateListDrawable.setState(mMediaRouteOnState);
+ return stateListDrawable.getCurrent();
+ }
+ }
+
+ private final class MediaRouterCallback extends MediaRouter.SimpleCallback {
+ @Override
+ public void onRouteUnselected(MediaRouter router, int type, MediaRouter.RouteInfo info) {
+ update();
+ }
+
+ @Override
+ public void onRouteChanged(MediaRouter router, MediaRouter.RouteInfo route) {
+ update();
+ }
+
+ @Override
+ public void onRouteVolumeChanged(MediaRouter router, MediaRouter.RouteInfo route) {
+ if (route == mRoute) {
+ updateVolume();
+ }
+ }
+
+ @Override
+ public void onRouteGrouped(MediaRouter router, MediaRouter.RouteInfo info,
+ MediaRouter.RouteGroup group, int index) {
+ update();
+ }
+
+ @Override
+ public void onRouteUngrouped(MediaRouter router, MediaRouter.RouteInfo info,
+ MediaRouter.RouteGroup group) {
+ update();
+ }
+ }
}
diff --git a/core/java/com/android/internal/app/MediaRouteControllerDialog.java b/core/java/com/android/internal/app/MediaRouteControllerDialog.java
index 45a4a13..5899963 100644
--- a/core/java/com/android/internal/app/MediaRouteControllerDialog.java
+++ b/core/java/com/android/internal/app/MediaRouteControllerDialog.java
@@ -21,15 +21,9 @@
import android.app.MediaRouteButton;
import android.content.Context;
import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
-import android.graphics.drawable.StateListDrawable;
import android.media.MediaRouter;
-import android.media.MediaRouter.RouteGroup;
-import android.media.MediaRouter.RouteInfo;
import android.os.Bundle;
-import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.View;
@@ -48,19 +42,11 @@
*/
public class MediaRouteControllerDialog extends AlertDialog implements
MediaRouteControllerContentManager.Delegate {
- // TODO(b/360050020): Eventually these 3 variables should be in the content manager instead of
+ // TODO(b/360050020): Eventually these 2 variables should be in the content manager instead of
// here. So these should be removed when the migration is completed.
private final MediaRouter mRouter;
- private final MediaRouterCallback mCallback;
private final MediaRouter.RouteInfo mRoute;
- private Drawable mMediaRouteButtonDrawable;
- private int[] mMediaRouteConnectingState = { R.attr.state_checked, R.attr.state_enabled };
- private int[] mMediaRouteOnState = { R.attr.state_activated, R.attr.state_enabled };
- private Drawable mCurrentIconDrawable;
-
- private boolean mAttachedToWindow;
-
private final MediaRouteControllerContentManager mContentManager;
public MediaRouteControllerDialog(Context context, int theme) {
@@ -68,7 +54,6 @@
mContentManager = new MediaRouteControllerContentManager(context, this);
mRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
- mCallback = new MediaRouterCallback();
mRoute = mRouter.getSelectedRoute();
}
@@ -87,24 +72,18 @@
customPanelView.setMinimumHeight(0);
}
- mMediaRouteButtonDrawable = obtainMediaRouteButtonDrawable();
- update();
+ mContentManager.update();
}
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
- mAttachedToWindow = true;
-
- mRouter.addCallback(0, mCallback, MediaRouter.CALLBACK_FLAG_UNFILTERED_EVENTS);
- update();
+ mContentManager.onAttachedToWindow();
}
@Override
public void onDetachedFromWindow() {
- mRouter.removeCallback(mCallback);
- mAttachedToWindow = false;
-
+ mContentManager.onDetachedFromWindow();
super.onDetachedFromWindow();
}
@@ -128,95 +107,17 @@
}
@Override
- public void setCastDeviceTitle(CharSequence title) {
+ public void setMediaRouteDeviceTitle(CharSequence title) {
setTitle(title);
}
@Override
+ public void setMediaRouteDeviceIcon(Drawable icon) {
+ setIcon(icon);
+ }
+
+ @Override
public void dismissView() {
dismiss();
}
-
- private void update() {
- if (!mRoute.isSelected() || mRoute.isDefault()) {
- dismissView();
- }
-
- mContentManager.update();
-
- Drawable icon = getIconDrawable();
- if (icon != mCurrentIconDrawable) {
- mCurrentIconDrawable = icon;
- if (icon instanceof AnimationDrawable animDrawable) {
- if (!mAttachedToWindow && !mRoute.isConnecting()) {
- // When the route is already connected before the view is attached, show the
- // last frame of the connected animation immediately.
- if (animDrawable.isRunning()) {
- animDrawable.stop();
- }
- icon = animDrawable.getFrame(animDrawable.getNumberOfFrames() - 1);
- } else if (!animDrawable.isRunning()) {
- animDrawable.start();
- }
- }
- setIcon(icon);
- }
- }
-
- private Drawable obtainMediaRouteButtonDrawable() {
- Context context = getContext();
- TypedValue value = new TypedValue();
- if (!context.getTheme().resolveAttribute(R.attr.mediaRouteButtonStyle, value, true)) {
- return null;
- }
- int[] drawableAttrs = new int[] { R.attr.externalRouteEnabledDrawable };
- TypedArray a = context.obtainStyledAttributes(value.data, drawableAttrs);
- Drawable drawable = a.getDrawable(0);
- a.recycle();
- return drawable;
- }
-
- private Drawable getIconDrawable() {
- if (!(mMediaRouteButtonDrawable instanceof StateListDrawable)) {
- return mMediaRouteButtonDrawable;
- } else if (mRoute.isConnecting()) {
- StateListDrawable stateListDrawable = (StateListDrawable) mMediaRouteButtonDrawable;
- stateListDrawable.setState(mMediaRouteConnectingState);
- return stateListDrawable.getCurrent();
- } else {
- StateListDrawable stateListDrawable = (StateListDrawable) mMediaRouteButtonDrawable;
- stateListDrawable.setState(mMediaRouteOnState);
- return stateListDrawable.getCurrent();
- }
- }
-
- private final class MediaRouterCallback extends MediaRouter.SimpleCallback {
- @Override
- public void onRouteUnselected(MediaRouter router, int type, RouteInfo info) {
- update();
- }
-
- @Override
- public void onRouteChanged(MediaRouter router, MediaRouter.RouteInfo route) {
- update();
- }
-
- @Override
- public void onRouteVolumeChanged(MediaRouter router, MediaRouter.RouteInfo route) {
- if (route == mRoute) {
- mContentManager.updateVolume();
- }
- }
-
- @Override
- public void onRouteGrouped(MediaRouter router, RouteInfo info, RouteGroup group,
- int index) {
- update();
- }
-
- @Override
- public void onRouteUngrouped(MediaRouter router, RouteInfo info, RouteGroup group) {
- update();
- }
- }
}
diff --git a/core/java/com/android/internal/os/LongArrayMultiStateCounter.java b/core/java/com/android/internal/os/LongArrayMultiStateCounter.java
index fe616e0..5e9c87a 100644
--- a/core/java/com/android/internal/os/LongArrayMultiStateCounter.java
+++ b/core/java/com/android/internal/os/LongArrayMultiStateCounter.java
@@ -16,6 +16,7 @@
package com.android.internal.os;
+import android.annotation.CheckResult;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;
@@ -196,7 +197,8 @@
/**
* Populates the array with the accumulated counts for the specified state.
*/
- public void getCounts(long[] counts, int state) {
+ @CheckResult
+ public boolean getCounts(long[] counts, int state) {
if (state < 0 || state >= mStateCount) {
throw new IllegalArgumentException(
"State: " + state + ", outside the range: [0-" + mStateCount + "]");
@@ -205,7 +207,7 @@
throw new IllegalArgumentException(
"Invalid array length: " + counts.length + ", expected: " + mLength);
}
- native_getCounts(mNativeObject, counts, state);
+ return native_getCounts(mNativeObject, counts, state);
}
@Override
@@ -282,7 +284,8 @@
@FastNative
@RavenwoodRedirect
- private static native void native_getCounts(long nativeObject, long[] counts, int state);
+ @CheckResult
+ private static native boolean native_getCounts(long nativeObject, long[] counts, int state);
@FastNative
@RavenwoodRedirect
diff --git a/core/java/com/android/internal/os/LongArrayMultiStateCounter_ravenwood.java b/core/java/com/android/internal/os/LongArrayMultiStateCounter_ravenwood.java
index 4f5f37d..403e8c1 100644
--- a/core/java/com/android/internal/os/LongArrayMultiStateCounter_ravenwood.java
+++ b/core/java/com/android/internal/os/LongArrayMultiStateCounter_ravenwood.java
@@ -168,8 +168,20 @@
}
}
- public void getValues(long[] values, int state) {
- System.arraycopy(mStates[state].mCounter, 0, values, 0, mArrayLength);
+ public boolean getValues(long[] values, int state) {
+ long[] counts = mStates[state].mCounter;
+ boolean allZeros = true;
+ for (int i = 0; i < counts.length; i++) {
+ if (counts[i] != 0) {
+ allZeros = false;
+ break;
+ }
+ }
+ if (allZeros) {
+ return false;
+ }
+ System.arraycopy(counts, 0, values, 0, mArrayLength);
+ return true;
}
public void reset() {
@@ -316,8 +328,8 @@
getInstance(instanceId).addCounts(counts);
}
- public static void native_getCounts(long instanceId, long[] counts, int state) {
- getInstance(instanceId).getValues(counts, state);
+ public static boolean native_getCounts(long instanceId, long[] counts, int state) {
+ return getInstance(instanceId).getValues(counts, state);
}
public static void native_reset(long instanceId) {
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index 06702e2..92a841f 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -76,6 +76,9 @@
srcs: [
"android_animation_PropertyValuesHolder.cpp",
"android_content_res_ApkAssets.cpp",
+ "android_media_ImageReader.cpp",
+ "android_media_PublicFormatUtils.cpp",
+ "android_media_Utils.cpp",
"android_os_SystemClock.cpp",
"android_os_SystemProperties.cpp",
"android_text_AndroidCharacter.cpp",
@@ -134,10 +137,7 @@
"android_app_ActivityThread.cpp",
"android_app_NativeActivity.cpp",
"android_app_admin_SecurityLog.cpp",
- "android_media_ImageReader.cpp",
"android_media_ImageWriter.cpp",
- "android_media_PublicFormatUtils.cpp",
- "android_media_Utils.cpp",
"android_opengl_EGL14.cpp",
"android_opengl_EGL15.cpp",
"android_opengl_EGLExt.cpp",
@@ -489,6 +489,7 @@
"libsqlite",
"libgui_window_info_static",
"libbinder",
+ "libbinder_ndk",
"libhidlbase", // libhwbinder is in here
],
version_script: "platform/linux/libandroid_runtime_export.txt",
diff --git a/core/jni/android_graphics_BLASTBufferQueue.cpp b/core/jni/android_graphics_BLASTBufferQueue.cpp
index a526783..1a7490e6 100644
--- a/core/jni/android_graphics_BLASTBufferQueue.cpp
+++ b/core/jni/android_graphics_BLASTBufferQueue.cpp
@@ -26,6 +26,7 @@
#include <nativehelper/JNIHelp.h>
#include <utils/Log.h>
#include <utils/RefBase.h>
+#include <utils/StrongPointer.h>
#include "core_jni_helpers.h"
@@ -124,7 +125,7 @@
static jlong nativeCreate(JNIEnv* env, jclass clazz, jstring jName,
jboolean updateDestinationFrame) {
ScopedUtfChars name(env, jName);
- sp<BLASTBufferQueue> queue = new BLASTBufferQueue(name.c_str(), updateDestinationFrame);
+ sp<BLASTBufferQueue> queue = sp<BLASTBufferQueue>::make(name.c_str(), updateDestinationFrame);
queue->incStrong((void*)nativeCreate);
return reinterpret_cast<jlong>(queue.get());
}
diff --git a/core/jni/android_media_ImageReader.cpp b/core/jni/android_media_ImageReader.cpp
index 20b9c57..a34cb39 100644
--- a/core/jni/android_media_ImageReader.cpp
+++ b/core/jni/android_media_ImageReader.cpp
@@ -25,13 +25,22 @@
#include <android_runtime/android_view_Surface.h>
#include <com_android_graphics_libgui_flags.h>
#include <cutils/atomic.h>
+#ifdef __ANDROID__
#include <grallocusage/GrallocUsageConversion.h>
+#else
+#define GRALLOC_USAGE_PROTECTED 0
+#define GRALLOC_USAGE_SW_READ_OFTEN 0
+#define GRALLOC_USAGE_SW_WRITE_OFTEN 0
+#endif
#include <gui/BufferItemConsumer.h>
#include <gui/Surface.h>
#include <inttypes.h>
#include <jni.h>
+#include <jni_wrappers.h>
#include <nativehelper/JNIHelp.h>
+#ifdef __ANDROID__
#include <private/android/AHardwareBufferHelpers.h>
+#endif
#include <stdint.h>
#include <ui/Rect.h>
#include <utils/List.h>
@@ -393,8 +402,12 @@
String8 consumerName = String8::format("ImageReader-%dx%df%xm%d-%d-%d",
width, height, nativeHalFormat, maxImages, getpid(),
createProcessUniqueId());
+#ifdef __ANDROID__
uint64_t consumerUsage =
android_hardware_HardwareBuffer_convertToGrallocUsageBits(ndkUsage);
+#else
+ uint64_t consumerUsage = 0;
+#endif
#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
sp<BufferItemConsumer> bufferConsumer = new BufferItemConsumer(consumerUsage, maxImages,
@@ -773,6 +786,7 @@
return true;
}
+#ifdef __ANDROID__
static void ImageReader_unlockGraphicBuffer(JNIEnv* env, jobject /*thiz*/,
jobject buffer) {
sp<GraphicBuffer> graphicBuffer =
@@ -856,6 +870,7 @@
return imagePlanes;
}
+#endif
static jobjectArray Image_createSurfacePlanes(JNIEnv* env, jobject thiz,
int numPlanes, int halReaderFormat, uint64_t ndkReaderUsage)
@@ -964,6 +979,7 @@
}
}
+#ifdef __ANDROID__
static jobject Image_getHardwareBuffer(JNIEnv* env, jobject thiz) {
BufferItem* buffer = Image_getBufferItem(env, thiz);
if (buffer == nullptr) {
@@ -976,45 +992,48 @@
// to link against libandroid.so
return android_hardware_HardwareBuffer_createFromAHardwareBuffer(env, b);
}
+#endif
} // extern "C"
// ----------------------------------------------------------------------------
-static const JNINativeMethod gImageReaderMethods[] = {
- {"nativeClassInit", "()V", (void*)ImageReader_classInit },
- {"nativeInit", "(Ljava/lang/Object;IIIJII)V", (void*)ImageReader_init },
- {"nativeClose", "()V", (void*)ImageReader_close },
- {"nativeReleaseImage", "(Landroid/media/Image;)V", (void*)ImageReader_imageRelease },
- {"nativeImageSetup", "(Landroid/media/Image;)I", (void*)ImageReader_imageSetup },
- {"nativeGetSurface", "()Landroid/view/Surface;", (void*)ImageReader_getSurface },
- {"nativeDetachImage", "(Landroid/media/Image;Z)I", (void*)ImageReader_detachImage },
- {"nativeCreateImagePlanes",
- "(ILandroid/graphics/GraphicBuffer;IIIIII)[Landroid/media/ImageReader$ImagePlane;",
- (void*)ImageReader_createImagePlanes },
- {"nativeUnlockGraphicBuffer",
- "(Landroid/graphics/GraphicBuffer;)V", (void*)ImageReader_unlockGraphicBuffer },
- {"nativeDiscardFreeBuffers", "()V", (void*)ImageReader_discardFreeBuffers }
-};
+static const JNINativeMethod gImageReaderMethods[] =
+ {{"nativeClassInit", "()V", (void*)ImageReader_classInit},
+ {"nativeInit", "(Ljava/lang/Object;IIIJII)V", (void*)ImageReader_init},
+ {"nativeClose", "()V", (void*)ImageReader_close},
+ {"nativeReleaseImage", "(Landroid/media/Image;)V", (void*)ImageReader_imageRelease},
+ {"nativeImageSetup", "(Landroid/media/Image;)I", (void*)ImageReader_imageSetup},
+ {"nativeGetSurface", "()Landroid/view/Surface;", (void*)ImageReader_getSurface},
+ {"nativeDetachImage", "(Landroid/media/Image;Z)I", (void*)ImageReader_detachImage},
+#ifdef __ANDROID__
+ {"nativeCreateImagePlanes",
+ "(ILandroid/graphics/GraphicBuffer;IIIIII)[Landroid/media/ImageReader$ImagePlane;",
+ (void*)ImageReader_createImagePlanes},
+ {"nativeUnlockGraphicBuffer", "(Landroid/graphics/GraphicBuffer;)V",
+ (void*)ImageReader_unlockGraphicBuffer},
+#endif
+ {"nativeDiscardFreeBuffers", "()V", (void*)ImageReader_discardFreeBuffers}};
static const JNINativeMethod gImageMethods[] = {
- {"nativeCreatePlanes", "(IIJ)[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;",
- (void*)Image_createSurfacePlanes },
- {"nativeGetWidth", "()I", (void*)Image_getWidth },
- {"nativeGetHeight", "()I", (void*)Image_getHeight },
- {"nativeGetFormat", "(I)I", (void*)Image_getFormat },
- {"nativeGetFenceFd", "()I", (void*)Image_getFenceFd },
- {"nativeGetHardwareBuffer", "()Landroid/hardware/HardwareBuffer;",
- (void*)Image_getHardwareBuffer },
+ {"nativeCreatePlanes", "(IIJ)[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;",
+ (void*)Image_createSurfacePlanes},
+ {"nativeGetWidth", "()I", (void*)Image_getWidth},
+ {"nativeGetHeight", "()I", (void*)Image_getHeight},
+ {"nativeGetFormat", "(I)I", (void*)Image_getFormat},
+ {"nativeGetFenceFd", "()I", (void*)Image_getFenceFd},
+#ifdef __ANDROID__
+ {"nativeGetHardwareBuffer", "()Landroid/hardware/HardwareBuffer;",
+ (void*)Image_getHardwareBuffer},
+#endif
};
int register_android_media_ImageReader(JNIEnv *env) {
+ int ret1 = RegisterMethodsOrDie(env, "android/media/ImageReader", gImageReaderMethods,
+ NELEM(gImageReaderMethods));
- int ret1 = AndroidRuntime::registerNativeMethods(env,
- "android/media/ImageReader", gImageReaderMethods, NELEM(gImageReaderMethods));
-
- int ret2 = AndroidRuntime::registerNativeMethods(env,
- "android/media/ImageReader$SurfaceImage", gImageMethods, NELEM(gImageMethods));
+ int ret2 = RegisterMethodsOrDie(env, "android/media/ImageReader$SurfaceImage", gImageMethods,
+ NELEM(gImageMethods));
return (ret1 || ret2);
}
diff --git a/core/jni/android_media_PublicFormatUtils.cpp b/core/jni/android_media_PublicFormatUtils.cpp
index 04494ad..bcdf654 100644
--- a/core/jni/android_media_PublicFormatUtils.cpp
+++ b/core/jni/android_media_PublicFormatUtils.cpp
@@ -16,10 +16,10 @@
#define LOG_TAG "PublicFormatUtils_JNI"
-#include <utils/misc.h>
-#include <ui/PublicFormat.h>
-#include <android_runtime/AndroidRuntime.h>
#include <jni.h>
+#include <jni_wrappers.h>
+#include <ui/PublicFormat.h>
+#include <utils/misc.h>
using namespace android;
@@ -53,7 +53,6 @@
};
int register_android_media_PublicFormatUtils(JNIEnv *env) {
- return AndroidRuntime::registerNativeMethods(env,
- "android/media/PublicFormatUtils", gMethods, NELEM(gMethods));
+ return RegisterMethodsOrDie(env, "android/media/PublicFormatUtils", gMethods, NELEM(gMethods));
}
diff --git a/core/jni/android_media_Utils.cpp b/core/jni/android_media_Utils.cpp
index e8f8644..e484141 100644
--- a/core/jni/android_media_Utils.cpp
+++ b/core/jni/android_media_Utils.cpp
@@ -19,10 +19,12 @@
#include "android_media_Utils.h"
+#ifdef __ANDROID__ // Layoutlib does not support hardware
#include <aidl/android/hardware/graphics/common/PixelFormat.h>
#include <aidl/android/hardware/graphics/common/PlaneLayoutComponentType.h>
#include <ui/GraphicBufferMapper.h>
#include <ui/GraphicTypes.h>
+#endif
#include <utils/Log.h>
#define ALIGN(x, mask) ( ((x) + (mask) - 1) & ~((mask) - 1) )
@@ -34,7 +36,13 @@
// -----------Utility functions used by ImageReader/Writer JNI-----------------
+#ifdef __ANDROID__
using AidlPixelFormat = aidl::android::hardware::graphics::common::PixelFormat;
+#else
+namespace AidlPixelFormat {
+const int32_t YCBCR_P210 = 60;
+}
+#endif
enum {
IMAGE_MAX_NUM_PLANES = 3,
@@ -517,6 +525,7 @@
return OK;
}
+#ifdef __ANDROID__
static status_t extractP010Gralloc4PlaneLayout(
sp<GraphicBuffer> buffer, void *pData, int format, LockedImage *outputImage) {
using aidl::android::hardware::graphics::common::PlaneLayoutComponent;
@@ -663,6 +672,7 @@
outputImage->chromaStep = 4;
return OK;
}
+#endif
status_t lockImageFromBuffer(sp<GraphicBuffer> buffer, uint32_t inUsage,
const Rect& rect, int fenceFd, LockedImage* outputImage) {
@@ -701,6 +711,7 @@
ALOGE("Lock buffer failed!");
return res;
}
+#ifdef __ANDROID__
if (isPossibly10BitYUV(format)) {
if (format == HAL_PIXEL_FORMAT_YCBCR_P010 &&
OK == extractP010Gralloc4PlaneLayout(buffer, pData, format, outputImage)) {
@@ -713,6 +724,7 @@
return OK;
}
}
+#endif
}
outputImage->data = reinterpret_cast<uint8_t*>(pData);
diff --git a/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp b/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp
index 8f36ecb..7d94ef8 100644
--- a/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp
+++ b/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp
@@ -116,17 +116,26 @@
counter->reset();
}
-static void native_getCounts(JNIEnv *env, jclass, jlong nativePtr, jlongArray values, jint state) {
+static bool native_getCounts(JNIEnv *env, jclass, jlong nativePtr, jlongArray values, jint state) {
auto *counter = reinterpret_cast<LongArrayMultiStateCounter *>(nativePtr);
- ScopedLongArrayRW scopedArray(env, values);
auto *data = counter->getCount(state).data();
- auto size = env->GetArrayLength(values);
- auto *outData = scopedArray.get();
if (data == nullptr) {
- memset(outData, 0, size * sizeof(uint64_t));
- } else {
- memcpy(outData, data, size * sizeof(uint64_t));
+ return false;
}
+ auto size = env->GetArrayLength(values);
+ bool allZeros = true;
+ for (int i = 0; i < size; i++) {
+ if (data[i]) {
+ allZeros = false;
+ break;
+ }
+ }
+ if (allZeros) {
+ return false;
+ }
+ ScopedLongArrayRW scopedArray(env, values);
+ memcpy(scopedArray.get(), data, size * sizeof(uint64_t));
+ return true;
}
static jobject native_toString(JNIEnv *env, jclass, jlong nativePtr) {
@@ -255,7 +264,7 @@
// @CriticalNative
{"native_reset", "(J)V", (void *)native_reset},
// @FastNative
- {"native_getCounts", "(J[JI)V", (void *)native_getCounts},
+ {"native_getCounts", "(J[JI)Z", (void *)native_getCounts},
// @FastNative
{"native_toString", "(J)Ljava/lang/String;", (void *)native_toString},
// @FastNative
diff --git a/core/jni/jni_wrappers.h b/core/jni/jni_wrappers.h
index e3e17ee..1f44994 100644
--- a/core/jni/jni_wrappers.h
+++ b/core/jni/jni_wrappers.h
@@ -22,6 +22,8 @@
#include <log/log.h>
#include <nativehelper/JNIHelp.h>
+#include <string>
+
namespace android {
static inline jclass FindClassOrDie(JNIEnv* env, const char* class_name) {
diff --git a/core/jni/platform/host/HostRuntime.cpp b/core/jni/platform/host/HostRuntime.cpp
index 1a03283..746740b 100644
--- a/core/jni/platform/host/HostRuntime.cpp
+++ b/core/jni/platform/host/HostRuntime.cpp
@@ -48,6 +48,8 @@
* (see AndroidRuntime.cpp).
*/
+extern int register_android_media_ImageReader(JNIEnv* env);
+extern int register_android_media_PublicFormatUtils(JNIEnv* env);
extern int register_android_os_Binder(JNIEnv* env);
extern int register_libcore_util_NativeAllocationRegistry(JNIEnv* env);
@@ -126,6 +128,10 @@
{"android.database.sqlite.SQLiteDebug", REG_JNI(register_android_database_SQLiteDebug)},
{"android.database.sqlite.SQLiteRawStatement",
REG_JNI(register_android_database_SQLiteRawStatement)},
+#endif
+ {"android.media.ImageReader", REG_JNI(register_android_media_ImageReader)},
+ {"android.media.PublicFormatUtils", REG_JNI(register_android_media_PublicFormatUtils)},
+#ifdef __linux__
{"android.os.Binder", REG_JNI(register_android_os_Binder)},
{"android.os.FileObserver", REG_JNI(register_android_os_FileObserver)},
{"android.os.MessageQueue", REG_JNI(register_android_os_MessageQueue)},
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 78526ad..ee6899c 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -7759,7 +7759,17 @@
@FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies")
@hide -->
<permission android:name="android.permission.READ_BLOCKED_NUMBERS"
- android:protectionLevel="signature" />
+ android:protectionLevel="signature"
+ android:featureFlag="!android.permission.flags.grant_read_blocked_numbers_to_system_ui_intelligence" />
+
+ <!-- Allows the holder to read blocked numbers. See
+ {@link android.provider.BlockedNumberContract}.
+ @SystemApi
+ @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies")
+ @hide -->
+ <permission android:name="android.permission.READ_BLOCKED_NUMBERS"
+ android:protectionLevel="signature|role"
+ android:featureFlag="android.permission.flags.grant_read_blocked_numbers_to_system_ui_intelligence" />
<!-- Allows the holder to write blocked numbers. See
{@link android.provider.BlockedNumberContract}.
diff --git a/core/res/res/color-night/surface_effect_2_color.xml b/core/res/res/color-night/surface_effect_2_color.xml
new file mode 100644
index 0000000..6485017
--- /dev/null
+++ b/core/res/res/color-night/surface_effect_2_color.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2025 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.
+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="@android:color/system_accent1_100"
+ android:alpha="0.15"/>
+</selector>
diff --git a/core/res/res/color-night/surface_effect_3_color.xml b/core/res/res/color-night/surface_effect_3_color.xml
new file mode 100644
index 0000000..a7a7f8d
--- /dev/null
+++ b/core/res/res/color-night/surface_effect_3_color.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2025 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.
+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="@android:color/system_accent1_100"
+ android:alpha="0.10"/>
+</selector>
diff --git a/core/res/res/color/surface_effect_2_color.xml b/core/res/res/color/surface_effect_2_color.xml
new file mode 100644
index 0000000..91c8409
--- /dev/null
+++ b/core/res/res/color/surface_effect_2_color.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2025 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.
+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="@android:color/system_accent1_0"
+ android:alpha="0.32"/>
+</selector>
diff --git a/core/res/res/color/surface_effect_3_color.xml b/core/res/res/color/surface_effect_3_color.xml
new file mode 100644
index 0000000..d766a32
--- /dev/null
+++ b/core/res/res/color/surface_effect_3_color.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2025 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.
+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="@android:color/system_accent1_600"
+ android:alpha="0.15"/>
+</selector>
diff --git a/core/res/res/layout/notification_2025_template_collapsed_call.xml b/core/res/res/layout/notification_2025_template_collapsed_call.xml
index f1729b3..ee691e4 100644
--- a/core/res/res/layout/notification_2025_template_collapsed_call.xml
+++ b/core/res/res/layout/notification_2025_template_collapsed_call.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!--
- ~ Copyright (C) 2024 The Android Open Source Project
+ ~ Copyright (C) 2025 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.
@@ -25,55 +25,177 @@
android:theme="@style/Theme.DeviceDefault.Notification"
>
- <!-- CallLayout shares visual appearance with ConversationLayout, so shares layouts -->
- <include layout="@layout/notification_2025_conversation_icon_container" />
-
<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:minHeight="@dimen/notification_2025_min_height"
- android:orientation="horizontal"
+ android:clipChildren="false"
+ android:orientation="vertical"
>
- <LinearLayout
- android:id="@+id/notification_main_column"
+ <com.android.internal.widget.NotificationMaxHeightFrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_marginStart="@dimen/notification_2025_content_margin_start"
- android:orientation="vertical"
- android:paddingBottom="@dimen/notification_2025_margin"
+ android:minHeight="@dimen/notification_2025_min_height"
+ android:clipChildren="false"
>
- <include
- layout="@layout/notification_template_conversation_header"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ <ImageView
+ android:id="@+id/left_icon"
+ android:layout_width="@dimen/notification_2025_left_icon_size"
+ android:layout_height="@dimen/notification_2025_left_icon_size"
+ android:layout_alignParentStart="true"
+ android:layout_margin="@dimen/notification_2025_margin"
+ android:background="@drawable/notification_large_icon_outline"
+ android:clipToOutline="true"
+ android:importantForAccessibility="no"
+ android:scaleType="centerCrop"
+ android:visibility="gone"
/>
- <include layout="@layout/notification_template_text"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/notification_text_height"
+ <!-- CallLayout shares visual appearance with ConversationLayout, so shares layouts -->
+ <include layout="@layout/notification_2025_conversation_icon_container" />
+
+ <FrameLayout
+ android:id="@+id/alternate_expand_target"
+ android:layout_width="@dimen/notification_2025_content_margin_start"
+ android:layout_height="match_parent"
+ android:layout_gravity="start"
+ android:importantForAccessibility="no"
+ android:focusable="false"
/>
+ <LinearLayout
+ android:id="@+id/notification_headerless_view_row"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginStart="@dimen/notification_2025_content_margin_start"
+ android:orientation="horizontal"
+ android:clipChildren="false"
+ >
+
+ <LinearLayout
+ android:id="@+id/notification_headerless_view_column"
+ android:layout_width="0px"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ android:layout_marginBottom="@dimen/notification_2025_margin"
+ android:layout_marginTop="@dimen/notification_2025_margin"
+ android:clipChildren="false"
+ android:orientation="vertical"
+ >
+
+ <NotificationTopLineView
+ android:id="@+id/notification_top_line"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:minHeight="@dimen/notification_headerless_line_height"
+ android:clipChildren="false"
+ android:theme="@style/Theme.DeviceDefault.Notification"
+ >
+
+ <!--
+ NOTE: The notification_2025_top_line_views layout contains the app_name_text.
+ In order to include the title view at the beginning, the Notification.Builder
+ has logic to hide that view whenever this title view is to be visible.
+ -->
+
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="@dimen/notification_header_separating_margin"
+ android:ellipsize="end"
+ android:fadingEdge="horizontal"
+ android:singleLine="true"
+ android:textAlignment="viewStart"
+ android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Title"
+ />
+
+ <include layout="@layout/notification_2025_top_line_views" />
+
+ </NotificationTopLineView>
+
+ <LinearLayout
+ android:id="@+id/notification_main_column"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:clipChildren="false"
+ >
+ <com.android.internal.widget.NotificationVanishingFrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="@dimen/notification_headerless_line_height"
+ >
+ <!-- This is the simplest way to keep this text vertically centered without
+ gravity="center_vertical" which causes jumpiness in expansion animations. -->
+ <include
+ layout="@layout/notification_2025_text"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/notification_text_height"
+ android:layout_gravity="center_vertical"
+ android:layout_marginTop="0dp"
+ />
+ </com.android.internal.widget.NotificationVanishingFrameLayout>
+ </LinearLayout>
+
+ </LinearLayout>
+
+ <ImageView
+ android:id="@+id/right_icon"
+ android:layout_width="@dimen/notification_right_icon_size"
+ android:layout_height="@dimen/notification_right_icon_size"
+ android:layout_gravity="center_vertical|end"
+ android:layout_marginTop="@dimen/notification_right_icon_headerless_margin"
+ android:layout_marginBottom="@dimen/notification_right_icon_headerless_margin"
+ android:layout_marginStart="@dimen/notification_right_icon_content_margin"
+ android:background="@drawable/notification_large_icon_outline"
+ android:clipToOutline="true"
+ android:importantForAccessibility="no"
+ android:scaleType="centerCrop"
+ />
+
+ <FrameLayout
+ android:id="@+id/expand_button_touch_container"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:minWidth="@dimen/notification_content_margin_end"
+ >
+
+ <include layout="@layout/notification_2025_expand_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="top|end"
+ />
+
+ </FrameLayout>
+
+ </LinearLayout>
+
+ <include layout="@layout/notification_close_button"
+ android:id="@+id/close_button"
+ android:layout_width="@dimen/notification_close_button_size"
+ android:layout_height="@dimen/notification_close_button_size"
+ android:layout_gravity="top|end" />
+
+ </com.android.internal.widget.NotificationMaxHeightFrameLayout>
+
+ <LinearLayout
+ android:id="@+id/notification_action_list_margin_target"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="-20dp"
+ android:clipChildren="false"
+ android:orientation="vertical">
+ <include layout="@layout/notification_template_smart_reply_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/notification_content_margin"
+ android:layout_marginStart="@dimen/notification_2025_content_margin_start"
+ android:layout_marginEnd="@dimen/notification_content_margin_end" />
+ <include layout="@layout/notification_material_action_list" />
</LinearLayout>
-
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:minWidth="@dimen/notification_content_margin_end"
- >
-
- <include
- layout="@layout/notification_2025_expand_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="top|end"
- />
-
- </FrameLayout>
-
</LinearLayout>
</com.android.internal.widget.CallLayout>
diff --git a/core/res/res/layout/notification_2025_template_expanded_call.xml b/core/res/res/layout/notification_2025_template_expanded_call.xml
index 2114831..bbc2966 100644
--- a/core/res/res/layout/notification_2025_template_expanded_call.xml
+++ b/core/res/res/layout/notification_2025_template_expanded_call.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- ~ Copyright (C) 2024 The Android Open Source Project
+ ~ Copyright (C) 2025 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.
@@ -27,83 +27,47 @@
>
<!-- CallLayout shares visual appearance with ConversationLayout, so shares layouts -->
- <include layout="@layout/notification_2025_conversation_icon_container" />
+ <include layout="@layout/notification_2025_conversation_header"/>
- <LinearLayout
+ <com.android.internal.widget.RemeasuringLinearLayout
android:id="@+id/notification_action_list_margin_target"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/notification_content_margin"
- android:orientation="vertical"
- >
+ android:layout_gravity="top"
+ android:clipChildren="false"
+ android:orientation="vertical">
- <LinearLayout
+ <!-- Note: the top margin is being set in code based on the estimated space needed for
+ the header text. -->
+ <com.android.internal.widget.RemeasuringLinearLayout
+ android:id="@+id/notification_main_column"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_gravity="top"
android:layout_weight="1"
- android:orientation="horizontal"
- >
-
- <LinearLayout
- android:id="@+id/notification_main_column"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/notification_2025_content_margin_start"
- android:layout_weight="1"
- android:orientation="vertical"
- android:minHeight="68dp"
- >
-
- <include
- layout="@layout/notification_template_conversation_header"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
-
- <include layout="@layout/notification_template_text_multiline" />
-
- <include
- android:layout_width="match_parent"
- android:layout_height="@dimen/notification_progress_bar_height"
- android:layout_marginTop="@dimen/notification_progress_margin_top"
- layout="@layout/notification_template_progress"
- />
- </LinearLayout>
-
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:minWidth="@dimen/notification_content_margin_end"
- >
-
- <include
- layout="@layout/notification_expand_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
-
- </FrameLayout>
-
- </LinearLayout>
-
- <ViewStub
- android:layout="@layout/notification_material_reply_text"
- android:id="@+id/notification_material_reply_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- />
-
- <include
- layout="@layout/notification_template_smart_reply_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
android:layout_marginStart="@dimen/notification_2025_content_margin_start"
android:layout_marginEnd="@dimen/notification_content_margin_end"
+ android:orientation="vertical"
+ android:clipChildren="false"
+ >
+
+ <include layout="@layout/notification_template_part_line1"/>
+
+ <include layout="@layout/notification_template_text_multiline" />
+
+ </com.android.internal.widget.RemeasuringLinearLayout>
+
+ <include layout="@layout/notification_template_smart_reply_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
android:layout_marginTop="@dimen/notification_content_margin"
- />
+ android:layout_marginStart="@dimen/notification_2025_content_margin_start"
+ android:layout_marginEnd="@dimen/notification_content_margin_end" />
<include layout="@layout/notification_material_action_list" />
- </LinearLayout>
+ </com.android.internal.widget.RemeasuringLinearLayout>
+
+ <include layout="@layout/notification_template_right_icon" />
</com.android.internal.widget.CallLayout>
diff --git a/core/res/res/layout/notification_2025_template_header.xml b/core/res/res/layout/notification_2025_template_header.xml
index 5aae678..72b3798 100644
--- a/core/res/res/layout/notification_2025_template_header.xml
+++ b/core/res/res/layout/notification_2025_template_header.xml
@@ -59,7 +59,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
- android:layout_toStartOf="@id/expand_button_container"
+ android:layout_toStartOf="@id/expand_button"
android:layout_alignWithParentIfMissing="true"
android:layout_marginVertical="@dimen/notification_2025_margin"
android:clipChildren="false"
@@ -81,30 +81,12 @@
android:focusable="false"
/>
-
- <LinearLayout
- android:id="@+id/expand_button_container"
+ <include layout="@layout/notification_2025_expand_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentEnd="true"
- android:orientation="vertical"
- >
- <FrameLayout
- android:id="@+id/expand_button_spacer"
- android:layout_width="@dimen/notification_2025_expand_button_pill_width"
- android:layout_height="@dimen/notification_2025_expand_button_pill_height"
- android:layout_centerVertical="true"
- android:layout_alignParentEnd="true"
- android:layout_margin="@dimen/notification_2025_margin"
- android:visibility="gone" />
+ android:layout_gravity="top|end"
+ android:layout_alignParentEnd="true" />
- <include layout="@layout/notification_2025_expand_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="top|end"
- android:layout_alignParentEnd="true" />
-
- </LinearLayout>
<include layout="@layout/notification_close_button"
android:id="@+id/close_button"
android:layout_width="@dimen/notification_close_button_size"
diff --git a/core/res/res/layout/notification_2025_top_line_views.xml b/core/res/res/layout/notification_2025_top_line_views.xml
index a9bde9d..7431c42 100644
--- a/core/res/res/layout/notification_2025_top_line_views.xml
+++ b/core/res/res/layout/notification_2025_top_line_views.xml
@@ -108,6 +108,42 @@
android:visibility="gone"
/>
+ <TextView
+ android:id="@+id/verification_divider"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Info"
+ android:layout_marginStart="@dimen/notification_header_separating_margin"
+ android:layout_marginEnd="@dimen/notification_header_separating_margin"
+ android:text="@string/notification_header_divider_symbol"
+ android:singleLine="true"
+ android:visibility="gone"
+ />
+
+ <ImageView
+ android:id="@+id/verification_icon"
+ android:layout_width="@dimen/notification_2025_badge_size"
+ android:layout_height="@dimen/notification_2025_badge_size"
+ android:layout_marginStart="@dimen/notification_header_separating_margin"
+ android:layout_marginEnd="@dimen/notification_header_separating_margin"
+ android:baseline="@dimen/notification_2025_badge_baseline"
+ android:scaleType="fitCenter"
+ android:visibility="gone"
+ />
+
+ <TextView
+ android:id="@+id/verification_text"
+ android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Info"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/notification_header_separating_margin"
+ android:layout_marginEnd="@dimen/notification_header_separating_margin"
+ android:layout_weight="100"
+ android:showRelative="true"
+ android:singleLine="true"
+ android:visibility="gone"
+ />
+
<ImageButton
android:id="@+id/feedback"
android:layout_width="@dimen/notification_feedback_size"
diff --git a/core/res/res/layout/notification_template_header.xml b/core/res/res/layout/notification_template_header.xml
index b7fd737..5795936 100644
--- a/core/res/res/layout/notification_template_header.xml
+++ b/core/res/res/layout/notification_template_header.xml
@@ -62,7 +62,7 @@
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
- android:layout_toStartOf="@id/expand_button_container"
+ android:layout_toStartOf="@id/expand_button"
android:layout_alignWithParentIfMissing="true"
android:clipChildren="false"
android:gravity="center_vertical"
@@ -83,28 +83,12 @@
android:focusable="false"
/>
- <LinearLayout
- android:id="@+id/expand_button_container"
+ <include layout="@layout/notification_expand_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentEnd="true"
- android:orientation="vertical"
- >
- <FrameLayout
- android:id="@+id/expand_button_spacer"
- android:layout_width="@dimen/notification_expand_button_pill_height"
- android:layout_height="@dimen/notification_header_height"
- android:layout_centerVertical="true"
- android:layout_alignParentEnd="true"
- android:layout_marginHorizontal="16dp"
- android:visibility="gone" />
+ android:layout_centerVertical="true"
+ android:layout_alignParentEnd="true" />
- <include layout="@layout/notification_expand_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_alignParentEnd="true" />
- </LinearLayout>
<include layout="@layout/notification_close_button"
android:id="@+id/close_button"
android:layout_width="@dimen/notification_close_button_size"
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 788d5f7..3203195 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"toegang te verkry tot sensordata oor jou lewenstekens"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Kennisgewings"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"wys kennisgewings"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"UR-nasporingdata"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"toegang tot UR-data oor jou en die omgewing rondom jou te verkry"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"sensitiewe UR-nasporingdata"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"toegang tot sensitiewe nasporingdata, soos oogblik, te verkry"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Venster-inhoud ophaal"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Die inhoud ondersoek van \'n venster waarmee jy interaksie het."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Verken-met-raak aanskakel"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Laat die app toe om jou fotoversameling te wysig."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"lees liggings in jou mediaversameling"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Laat die app toe om liggings in jou mediaversameling te lees."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"jou benaderde oogblik na te spoor"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Laat die app toe om jou benaderde oogblik na te spoor."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"waar jy kyk na te spoor"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Gee die app toegang tot presiese oogblikdata."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"jou gesig na te spoor"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Gee die app toegang tot gesignasporingdata."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"jou hande na te spoor"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Gee die app toegang tot handbewegingnasporingdata."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"jou kop na te spoor"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Gee die app toegang tot kopsporingdata."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"jou onmiddellike omgewing te verstaan"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Gee die app toegang tot nasporingdata oor die omgewing direk rondom jou."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"jou onmiddellike omgewing in fyn detail te verstaan"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Gee die app toegang tot hoogs gedetailleerde spoordata oor die omgewing direk rondom jou."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"toegang tot UR-data te verkry terwyl dit nie op die voorgrond is nie"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Gee die app toegang tot UR-data terwyl dit nie in die voorgrond is nie."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Gebruik biometrie"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Gebruik biometrie of skermslot"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifieer dat dit jy is"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index ca145e5..f4dabdb 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"ስለአስፈላጊ ምልክቶችዎ ያሉ የዳሳሽ ውሂብ ይድረሱ"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"ማሳወቂያዎች"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"ማሳወቂያዎች አሳይ"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR የመከታተያ ውሂብ"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"ስለ እርስዎ እና በዙሪያዎ ስላለው አካባቢ XR ውሂብ ይድረሱ"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"ልዩ ጥንቃቄ የሚያስፈልገው XR የመከታተያ ውሂብ"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"እንደ የዓይን ትኩረት ያለ ልዩ ጥንቃቄ የሚያስፈልገው የመከታተያ ውሂብ ይድረሱ"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"የመስኮት ይዘት ሰርስረው ያውጡ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"መስተጋበር የሚፈጥሩት የመስኮት ይዘት ይመርምሩ።"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"በመንካት ያስሱን ያብሩ"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"መተግበሪያው የፎቶ ስብስብዎን እንዲቀይረው ያስችለዋል።"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"አካባቢዎችን ከሚዲያ ስብስብዎ ማንበብ"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"መተግበሪያው አካባቢዎችን ከሚዲያ ስብስብዎ እንዲያነብብ ያስችለዋል።"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"የእርዎን ግምታዊ የዓይን ትኩረት ይከታተሉ"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"መተግበሪያው የእርስዎን ግምታዊ የዓይን ትኩረት እንዲከታተል ይፈቅዳል።"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"የሚመልከቱበትን ቦታ ይከታተሉ"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"መተግበሪያው ትክክለኛ የዓይን ትኩረት ውሂብን እንዲከታተል ይፈቅዳል።"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"መልክዎን ይከታተሉ"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"መተግበሪያው የመልክ መከታተያ ውሂብን እንዲደርስ ይፈቅዳል።"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"እጆችዎን ይከታተሉ"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"መተግበሪያው የእጅ ክትትል ውሂብን እንዲደርስ ይፈቅዳል።"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"ጭንቅላትዎን ይከታተሉ"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"መተግበሪያው የጭንቅላት መከታተያ ውሂብን እንዲደርስ ይፈቅዳል።"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"የእርስዎን ቅርብ አካባቢ ይረዱ"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"መተግበሪያው በቀጥታ በዙሪያዎ ስላለው አካባቢ ውሂብ መከታተልን እንዲደርስ ይፈቅዳል።"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"የእርስዎን ቅርብ አካባቢ በከፍተኛ ዝርዝር ይረዱ"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"መተግበሪያው በቀጥታ በዙሪያዎ ስላለው አካባቢ በከፍተኛ ዝርዝር የመከታተያ ውሂብ እንዲደርስ ይፈቅዳል።"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"የፊት ገፅ ውስጥ ሳይሆን ሳለ XR ውሂብ ይድረሱ"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"መተግበሪያው የፊት ገፅ ውስጥ ሳይሆን XR ውሂብ እንዲደርስ ይፈቅዳል።"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ባዮሜትሪኮችን ይጠቀሙ"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ባዮሜትሪክስ ወይም ማያ ገፅ መቆለፊያን ይጠቀሙ"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"እርስዎን መሆንዎን ያረጋግጡ"</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 397afe2..2b9a20a 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ অৱস্থাৰ বিষয়ে ছেন্সৰৰ ডেটা লাভ কৰিব পাৰে"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"জাননী"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"জাননী দেখুৱাওক"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ট্ৰেকিং ডেটা"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"আপোনাৰ আৰু আপোনাৰ চৌপাশৰ পৰিৱেশ সম্পৰ্কীয় XR ডেটা এক্সেছ কৰা"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"সংবেদনশীল XR ট্ৰেকিং ডেটা"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"চকুৰ দৃষ্টিৰ দৰে সংবেদনশীল ট্ৰেকিং ডেটা এক্সেছ কৰা"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ৱিণ্ড’ সমল বিচাৰি উলিওৱাৰ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"আপুনি চাই থকা ৱিণ্ড’খনৰ সমল পৰীক্ষা কৰাৰ।"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"স্পৰ্শৰ দ্বাৰা অন্বেষণ কৰাৰ সুবিধা অন কৰাৰ"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"এপক আপোনাৰ ফট’ সংগ্ৰহ সালসলনি কৰিবলৈ দিয়ে।"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"আপোনাৰ মিডিয়া সংগ্ৰহৰ অৱস্থান পঢ়িবলৈ"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"এপক আপোনাৰ মিডিয়া সংগ্ৰহৰ অৱস্থান পঢ়িবলৈ দিয়ে।"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"আপোনাৰ আনুমানিক চকুৰ দৃষ্টি ট্ৰেক কৰা"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"এপ্টোক আপোনাৰ চকুৰ আনুমানিক দৃষ্টি ট্ৰেক কৰিবলৈ দিয়ে।"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"আপুনি কোনফালে চাই আছে সেয়া ট্ৰেক কৰা"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"এপ্টোক আপোনাৰ চকুৰ সঠিক দৃষ্টি সম্পৰ্কীয় ডেটা এক্সেছ কৰিবলৈ দিয়ে।"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"আপোনাৰ মুখাৱয়ব ট্ৰেক কৰা"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"এপ্টোক মুখাৱয়ব ট্ৰেক কৰাৰ ডেটা এক্সেছ কৰিবলৈ দিয়ে।"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"আপোনাৰ হাত ট্ৰেক কৰা"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"এপ্টোক হাতৰ ট্ৰেকিং সম্পৰ্কীয় ডেটা এক্সেছ কৰিবলৈ দিয়ে।"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"আপোনাৰ মূৰ ট্ৰেক কৰা"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"এপ্টোক হে’ড ট্ৰেকিং সম্পৰ্কীয় ডেটা এক্সেছ কৰিবলৈ দিয়ে।"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"আপোনাৰ একেবাৰেই আশ-পাশৰ পৰিৱেশ বুজা"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"এপ্টোক আপোনাৰ একেবাৰেই আশা-পাশৰ পৰিৱেশ সম্পৰ্কীয় ট্ৰেকিং ডেটা এক্সেছ কৰিবলৈ দিয়ে।"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"বিস্তৃত সবিশেষৰ সৈতে আপোনাৰ একেবাৰেই আশ-পাশৰ পৰিৱেশ বুজা"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"এপ্টোক বিতং সবিশেষৰ সৈতে আপোনাৰ একেবাৰেই আশা-পাশৰ পৰিৱেশ সম্পৰ্কীয় ট্ৰেকিং ডেটা এক্সেছ কৰিবলৈ দিয়ে।"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"অগ্ৰভূমিত নথকাৰ সময়ত XR ডেটা এক্সেছ কৰা"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"অগ্ৰভূমিত নথকাৰ সময়ত এপ্টোক XR ডেটা এক্সেছ কৰিবলৈ দিয়ে।"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"বায়\'মেট্ৰিক ব্যৱহাৰ কৰক"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"বায়\'মেট্ৰিক অথবা স্ক্ৰীন লক ব্যৱহাৰ কৰক"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"এইয়া আপুনিয়েই বুলি সত্যাপন কৰক"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 96c77e4..e5bfb29 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"Həyati əlamətlər haqqında sensor dataya daxil olun"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Bildirişlər"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"bildirişləri göstərmək"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR izləmə datası"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"siz və ətrafınızdakı mühit haqqında XR datasına giriş"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"həssas XR izləmə datası"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"baxış kimi həssas izləmə datasına giriş"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Pəncərənin məzmununu əldə edin"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Əlaqədə olduğunuz pəncərənin məzmununu nəzərdən keçirin."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Toxunuşla öyrənmə funksiyasını aktiv edin"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Tətbiqin foto kolleksiyanıza düzəliş etməsinə icazə verir."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"media kolleksiyanızdan məkanları oxuyun"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Tətbiqin media kolleksiyanızdan məkanları oxumasına icazə verin."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"təxmini baxışınızı izləmək"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Tətbiqə təxmini baxışınızı izləmək icazəsi verir."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"baxdığınız yeri izləmək"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Tətbiqə dəqiq baxış datasına daxil olmaq icazəsi verir."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"üzünüzü izləmək"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Tətbiqə üz izləmə datasına daxil olmaq icazəsi verir."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"əllərinizi izləmək"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Tətbiqə əl izləmə datasına daxil olmaq icazəsi verir."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"başınızı izləmək"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Tətbiqə baş izləmə datasına daxil olmaq icazəsi verir."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"yaxın ətrafınızı anlamaq"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Tətbiqə ətrafınızdakı mühit haqqında izləmə datasına daxil olmaq icazəsi verir."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"yaxın ətrafınızı yüksək detallarla anlamaq"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Tətbiqə çox yüksək detallar ilə ətrafınızdakı mühit haqqında izləmə datasına daxil olmaq icazəsi verir."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ön planda olmadıqda XR datasına giriş"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Tətbiqə ön planda olmadıqda XR datasına daxil olmaq icazəsi verir."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrik məlumatlardan istifadə edin"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrik məlumatlardan və ya ekran kilidindən istifadə edin"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Kimliyinizi doğrulayın"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 6a68f8d..3e67233 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"pristupa podacima senzora o vitalnim funkcijama"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Obaveštenja"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"prikazivanje obaveštenja"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"podaci o praćenju proširene stvarnosti"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"pristupa podacima proširene stvarnosti o vama i okruženju oko vas"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"osetljivi podaci o XR praćenju"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"pristupa osetljivim podacima o praćenju, na primer podacima o pogledu"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"da preuzima sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Proverava sadržaj prozora sa kojim ostvarujete interakciju."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"da uključi Istraživanja dodirom"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Dozvoljava aplikaciji da menja kolekciju slika."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"čitanje lokacija iz medijske kolekcije"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Dozvoljava aplikaciji da čita lokacije iz medijske kolekcije."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"praćenje približnih podataka o pogledu"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Dozvoljava aplikaciji da prati približne podatke o pogledu."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"praćenje pogleda"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Dozvoljava aplikaciji da pristupa preciznim podacima o pogledu."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"praćenje lica"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Dozvoljava aplikaciji da pristupa podacima o praćenju lica."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"praćenje ruku"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Dozvoljava aplikaciji da pristupa podacima o praćenju ruku."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"praćenje glave"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Dozvoljava aplikaciji da pristupa podacima o praćenju glave."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"razumevanje neposrednog okruženja"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Dozvoljava aplikaciji da pristupa podacima o praćenju vašeg neposrednog okruženja."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"razumevanje neposrednog okruženja sa mnoštvom detalja"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Dozvoljava aplikaciji da pristupa podacima o praćenju vašeg neposrednog okruženja koji sadrže mnoštvo detalja."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"pristup podacima proširene stvarnosti kada nije u prvom planu"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Dozvoljava aplikaciji da pristupa podacima proširene stvarnosti kada nije u prvom planu."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Koristite biometriju"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Koristite biometriju ili otključavanje ekrana"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrdite identitet"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 69271ba..d01af94 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -355,14 +355,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"атрымліваць з датчыка даныя асноўных фізіялагічных паказчыкаў"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Апавяшчэнні"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"паказваць апавяшчэнні"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"даныя XR адсочвання"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"атрымліваць доступ да даных XR пра вас і ваша блізкае асяроддзе"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"канфідэнцыяльныя даныя XR адсочвання"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"атрымліваць доступ да канфідэнцыяльных даных адсочвання, напрыклад позірку"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Атрымліваць змесціва вакна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Аналізаваць змесціва актыўнага вакна."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Уключаць Азнаямленне дотыкам"</string>
@@ -658,38 +654,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Праграма зможа змяняць фотакалекцыю."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"паказваць месцазнаходжанне ў калекцыі мультымедыя"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Праграма зможа паказваць месцазнаходжанне ў калекцыі мультымедыя."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"адсочваць прыблізны напрамак позірку"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Дазваляе праграме адсочваць прыблізны напрамак позірку."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"адсочваць, куды вы гледзіце"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Дазваляе праграме атрымліваць доступ да дакладных даных позірку."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"адсочваць рухі твару"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Дазваляе праграме атрымліваць доступ да даных адсочвання рухаў твару."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"адсочваць рухі рук"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Дазваляе праграме атрымліваць доступ да даных адсочвання рухаў рук."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"адсочваць рухі галавы"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Дазваляе праграме атрымліваць доступ да даных адсочвання рухаў галавы."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"счытваць ваша блізкае асяроддзе"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Дазваляе праграме атрымліваць доступ да даных адсочвання вашага блізкага асяроддзя."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"счытваць ваша блізкае асяроддзе з высокай дэталізацыяй"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Дазваляе праграме атрымліваць доступ да даных адсочвання вашага блізкага асяроддзя з вялікай дэталізацыяй."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"атрымліваць доступ да даных XR, калі праграма не ў актыўным рэжыме"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Дазваляе праграме атрымліваць доступ да даных XR, калі яна працуе не ў актыўным рэжыме."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Выкарыстоўваць біяметрыю"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Выкарыстоўваць біяметрыю ці блакіроўку экрана"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Спраўдзіце, што гэта вы"</string>
@@ -1846,7 +1826,7 @@
<string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Пераключыцца"</string>
<string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Налады"</string>
<string name="user_switched" msgid="7249833311585228097">"Бягучы карыстальнік <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="user_switching_message" msgid="1912993630661332336">"Пераход у рэжым \"<xliff:g id="NAME">%1$s</xliff:g>\"..."</string>
+ <string name="user_switching_message" msgid="1912993630661332336">"Пераключэнне на карыстальніка \"<xliff:g id="NAME">%1$s</xliff:g>\"…"</string>
<string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> выходзіць з сістэмы…"</string>
<string name="owner_name" msgid="8713560351570795743">"Уладальнік"</string>
<string name="guest_name" msgid="8502103277839834324">"Госць"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 1581ab8..0083dde 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"достъп до сензорните данни за жизнените ви показатели"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Известия"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"показване на известията"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Данни за XR за проследяване"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"достъп до данните за XR за вас и заобикалящата ви среда"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"поверителни данни за XR за проследяване"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"достъп до поверителните данни за проследяване, като например погледа"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Извлича съдържанието от прозореца"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Инспектира съдържанието на прозорец, с който взаимодействате."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Включи изследването чрез докосване"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Разрешава на приложението да променя колекцията ви от снимки."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"да чете местоположенията от мултимедийната ви колекция"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Разрешава на приложението да чете местоположенията от мултимедийната ви колекция."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"проследяване на погледа ви с ниска точност"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Разрешава на приложението да проследява погледа ви с ниска точност."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"проследяване на погледа ви"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Разрешава на приложението да осъществява достъп до данните за погледа ви с висока точност."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"проследяване на лицето ви"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Разрешава на приложението да осъществява достъп до данните за проследяване на лицето."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"проследяване на ръцете ви"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Разрешава на приложението да осъществява достъп до данните за проследяване на ръцете."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"проследяване на движенията на главата ви"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Разрешава на приложението да осъществява достъп до данните за проследяване на движенията на главата."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"разбиране на заобикалящата ви среда"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Разрешава на приложението да осъществява достъп до данните за проследяване на заобикалящата ви среда."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"разпознаване на заобикалящата ви среда с висока детайлност"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Разрешава на приложението да осъществява достъп до данните за проследяване на заобикалящата ви среда с много висока детайлност."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"достъп до данните за XR, когато не е на преден план"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Разрешава на приложението да осъществява достъп до данните за XR, когато не е на преден план."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Използване на биометр. данни"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Използване на биометрични данни или опцията за заключване на екрана"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Потвърдете, че сте вие"</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index c05ea6d..298be51 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"আপনার অত্যাবশ্যক লক্ষণগুলির সম্পর্কে সেন্সর ডেটা অ্যাক্সেস করে"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"বিজ্ঞপ্তি"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"বিজ্ঞপ্তি দেখুন"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ট্র্যাকিং ডেটা"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"আপনার এবং আপনার চারপাশের পরিবেশ সম্পর্কে XR ডেটা অ্যাক্সেস করুন"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"সংবেদনশীল XR ট্র্যাকিং ডেটা"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"সংবেদনশীল ট্র্যাকিং ডেটা অ্যাক্সেস করুন, যেমন চোখের দৃষ্টি"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"উইন্ডোর কন্টেন্ট ফিরিয়ে আনুন"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ব্যবহার করছেন এমন একটি উইন্ডোর কন্টেন্ট পরীক্ষা করে৷"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"স্পর্শের মাধ্যমে অন্বেষণ করা চালু করুন"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"অ্যাপকে আপনার ফটো সংগ্রহ পরিবর্তন করার অনুমতি দিন।"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ডিয়া সংগ্রহ থেকে লোকেশন দেখতে দিন"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"আপনার মিডিয়া সংগ্রহ থেকে লোকেশন দেখতে অ্যাপকে অনুমতি দিন।"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"আপনার আনুমানিক চোখের দৃষ্টি ট্র্যাক করুন"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"অ্যাপটিকে আপনার আনুমানিক চোখের দৃষ্টি ট্র্যাক করার অনুমতি দেয়।"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"কোনদিকে দেখছেন তা ট্র্যাক করুন"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"অ্যাপটিকে আপনার চোখের দৃষ্টি সম্পর্কিত নির্দিষ্ট ডেটা অ্যাক্সেস করার অনুমতি দেয়।"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"নিজের ফেস ট্র্যাক করুন"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"অ্যাপটিকে ফেস ট্র্যাকিং ডেটা অ্যাক্সেস করার অনুমতি দেয়।"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"হাত ট্র্যাক করুন"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"অ্যাপটিকে হ্যান্ড ট্র্যাকিং ডেটা অ্যাক্সেস করার অনুমতি দেয়।"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"আপনার মাথা ট্র্যাক করুন"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"অ্যাপটিকে হেড ট্র্যাকিং ডেটা অ্যাক্সেস করার অনুমতি দেয়।"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"আপনার চারপাশের পরিবেশ সম্পর্কে বুঝুন"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"অ্যাপটিকে সরাসরি আপনার চারপাশের পরিবেশ সম্পর্কে ট্র্যাকিং ডেটা অ্যাক্সেস করার অনুমতি দেয়।"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"সূক্ষ্ম বিশদ বিবরণ সহ আপনার চারপাশের পরিবেশ সম্পর্কে বুঝুন"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"অ্যাপটিকে সরাসরি আপনার চারপাশের পরিবেশ সম্পর্কে সূক্ষ্ম বিবরণ সহ ট্র্যাকিং ডেটা অ্যাক্সেস করার অনুমতি দেয়।"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ফোরগ্রাউন্ডে না থাকাকালীন XR ডেটা অ্যাক্সেস করুন"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"অ্যাপটিকে ফোরগ্রাউন্ডে না থাকাকালীন XR ডেটা অ্যাক্সেস করার অনুমতি দেয়।"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"বায়োমেট্রিক্স ব্যবহার করুন"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"বায়োমেট্রিক্স অথবা স্ক্রিন লক ব্যবহার করুন"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"আপনার পরিচয় যাচাই করুন"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index ebef234..6a54f65 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"pristupa podacima senzora o vašim vitalnim funkcijama"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Obavještenja"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"prikaz obavještenja"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"podaci o XR praćenju"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"pristup XR podacima o vama i vašoj okolini"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"osjetljivi podaci o XR praćenju"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"pristup osjetljivim podacima o praćenju, npr. praćenju pogleda"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"preuzimati sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Pregleda sadržaj prozora koji trenutno koristite."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"uključiti Istraživanje dodirom"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Omogućava aplikaciji da mijenja vašu kolekciju fotografija."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"čitanje lokacija iz kolekcije medija"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Omogućava aplikaciji da čita lokacije iz vaše kolekcije medija."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"približno praćenje vašeg pogleda"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Dozvoljava aplikaciji da približno prati vaš pogled."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"praćenje u šta gledate"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Dozvoljava aplikaciji da pristupa preciznim podacima o pogledu."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"praćenje vašeg lica"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Dozvoljava aplikaciji da pristupa podacima o praćenju lica."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"praćenje vaših ruku"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Dozvoljava aplikaciji da pristupa podacima o praćenju ruku."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"praćenje položaja vaše glave"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Dozvoljava aplikaciji da pristupa podacima o praćenju položaja glave."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"utvrđivanje vaše neposredne okoline"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Dozvoljava aplikaciji da pristupa podacima o praćenju vaše neposredne okoline."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"veoma detaljno utvrđivanje vaše neposredne okoline"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Dozvoljava aplikaciji da pristupa podacima o veoma detaljnom praćenju vaše neposredne okoline."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"pristup XR podacima dok aplikacija nije u prvom planu"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Dozvoljava aplikaciji da pristupa XR podacima dok nije u prvom planu."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Koristi biometriju"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Koristi biometriju ili zaključavanje ekrana"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrdite identitet"</string>
@@ -2187,7 +2167,7 @@
<string name="etws_primary_default_message_tsunami" msgid="5828171463387976279">"Odmah se evakuirajte iz priobalnih područja i područja oko rijeka na sigurnije mjesto kao što su viši predjeli."</string>
<string name="etws_primary_default_message_earthquake_and_tsunami" msgid="4888224011071875068">"Ostanite smireni i potražite sklonište u blizini."</string>
<string name="etws_primary_default_message_test" msgid="4583367373909549421">"Test poruka za hitne slučajeve"</string>
- <string name="notification_reply_button_accessibility" msgid="5235776156579456126">"Odgovori"</string>
+ <string name="notification_reply_button_accessibility" msgid="5235776156579456126">"Odgovorite"</string>
<string name="etws_primary_default_message_others" msgid="7958161706019130739"></string>
<string name="mmcc_authentication_reject" msgid="4891965994643876369">"SIM kartica nije dozvoljena za govor"</string>
<string name="mmcc_imsi_unknown_in_hlr" msgid="227760698553988751">"SIM kartica nije dodijeljena za govor"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 6ddfeaf..63fbb07 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"accedir a les dades del sensor sobre les constants vitals"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificacions"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostra notificacions"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"dades de seguiment d\'XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"accedir a les dades d\'XR sobre tu i l\'entorn que t\'envolta"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"dades de seguiment d\'XR sensibles"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"accedir a les dades de seguiment sensibles, com ara la mirada"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Recuperar el contingut de la finestra"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspeccionar el contingut d\'una finestra amb què estàs interaccionant."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activar Exploració tàctil"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permet que l\'aplicació modifiqui la teva col·lecció de fotos."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"llegir les ubicacions de les teves col·leccions multimèdia"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Permet que l\'aplicació llegeixi les ubicacions de les teves col·leccions multimèdia."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"seguir la teva mirada aproximada"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Permet que l\'aplicació segueixi la teva mirada aproximada."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"seguir on estàs mirant"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Permet que l\'aplicació accedeixi a les dades precises de la mirada."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"seguir la teva cara"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Permet que l\'aplicació accedeixi a les dades de seguiment de la cara."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"seguir les teves mans"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Permet que l\'aplicació accedeixi a les dades de seguiment de mans."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"seguir el teu cap"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Permet que l\'aplicació accedeixi a les dades de seguiment del cap."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"entendre l\'entorn que t\'envolta directament"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Permet que l\'aplicació accedeixi a les dades de seguiment de l\'entorn que t\'envolta directament."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"entendre l\'entorn que t\'envolta directament amb molt de detall"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Permet que l\'aplicació accedeixi a les dades de seguiment de l\'entorn que t\'envolta directament amb molt de detall."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"accedir a les dades d\'XR quan no s\'utilitzi en primer pla"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Permet que l\'aplicació accedeixi a les dades d\'XR quan no s\'utilitzi en primer pla."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Utilitza la biometria"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Fes servir la biometria o el bloqueig de pantalla"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifica la teva identitat"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 5e596fc..5d0edf3 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -355,14 +355,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"přístup k datům ze senzorů vašich životních funkcí"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Oznámení"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"zobrazovat oznámení"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"data pro rozšířenou realitu"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"přístup k datům o vás a okolním prostředí pro rozšířenou realitu"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"citlivá data pro rozšířenou realitu"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"přístup k citlivým datům o sledování, jako je například směr pohledu"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Načítat obsah oken"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Může prozkoumávat obsah oken, se kterými pracujete."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Zapnout funkci Prozkoumání dotykem"</string>
@@ -658,38 +654,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Umožňuje aplikaci upravit vaši sbírku fotek."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"čtení míst ze sbírky médií"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Umožňuje aplikaci číst místa z vaší sbírky médií."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"sledování přibližného směru pohledu"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Umožňuje aplikaci sledovat, kam se přibližně díváte."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"sledování, kam se díváte"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Umožňuje aplikaci přistupovat k přesným údajům o tom, kam se díváte."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"sledování obličeje"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Umožňuje aplikaci přistupovat k datům o sledování obličeje."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"sledování rukou"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Umožňuje aplikaci přistupovat k datům o sledování rukou."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"sledování hlavy"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Umožňuje aplikaci přistupovat k datům o sledování hlavy."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"porozumění bezprostřednímu okolí"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Umožňuje aplikaci přistupovat k datům o prostředí kolem vás."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"detailní porozumění bezprostřednímu okolí"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Umožňuje aplikaci přistupovat k velmi detailním datům o prostředí kolem vás."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"přístup k datům pro rozšířenou realitu na pozadí"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Umožňuje aplikaci přistupovat k datům pro rozšířenou reality, když není v popředí."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Použít biometrii"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Použít biometrii nebo zámek obrazovky"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrďte, že jste to vy"</string>
@@ -2144,7 +2124,7 @@
<string name="app_category_video" msgid="2590183854839565814">"Filmy a video"</string>
<string name="app_category_image" msgid="7307840291864213007">"Fotky a obrázky"</string>
<string name="app_category_social" msgid="2278269325488344054">"Sociální sítě a komunikace"</string>
- <string name="app_category_news" msgid="1172762719574964544">"Zprávy a časopisy"</string>
+ <string name="app_category_news" msgid="1172762719574964544">"Noviny a časopisy"</string>
<string name="app_category_maps" msgid="6395725487922533156">"Mapy a navigace"</string>
<string name="app_category_productivity" msgid="1844422703029557883">"Produktivita"</string>
<string name="app_category_accessibility" msgid="6643521607848547683">"Přístupnost"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 8cc1cfe..a853076 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"få adgang til sensordata om dine vitale værdier"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifikationer"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"vise notifikationer"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-sporingsdata"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"tilgå XR-data om dig og dine nærmeste omgivelser"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"følsomme XR-sporingsdata"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"tilgå følsomme sporingsdata, f.eks. øjenbevægelser"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Hente indholdet i vinduet"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Undersøge indholdet i et vindue, du interagerer med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Aktivere Udforsk ved berøring"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Tillader, at appen kan ændre din billedsamling."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"læse lokationer fra din mediesamling"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Tillader, at appen kan læse lokationer fra din mediesamling."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"registrer dine omtrentlige øjenbevægelser"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Tillader, at appen registrerer dine omtrentlige øjenbevægelser."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"registrer, hvor du kigger hen"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Tillader, at appen kan få adgang til præcise data om øjenbevægelser."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"registrer dit ansigt"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Tillader, at appen kan få adgang til data om ansigtssporing."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"registrer dine hænder"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Tillader, at appen kan få adgang til data om registrering af håndbevægelser."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"registrer dit hoved"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Tillader, at appen kan få adgang til data om registrering af hovedbevægelser."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"forstå dine nærmeste omgivelser"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Tillader, at appen kan få adgang til sporingsdata om omgivelser i nærheden."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"forstå dine nærmeste omgivelser i detaljer"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Tillader, at appen kan få adgang til sporingsdata om omgivelser i nærheden med meget detaljerede oplysninger."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"tilgå XR-data, når appen ikke kører i forgrunden"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Tillader, at appen kan få adgang til XR-data, når den ikke kører i forgrunden."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Brug biometri"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Brug biometri eller skærmlås"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verificer, at det er dig"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 7d5672b..81a331d 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"auf Sensordaten zu deinen Vitaldaten zugreifen"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Benachrichtigungen"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"Benachrichtigungen anzeigen"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-Trackingdaten"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"auf XR-Daten zu dir und deiner Umgebung zugreifen"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"sensible XR-Trackingdaten"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"auf sensible Trackingdaten wie Daten zu Blickbewegungen zugreifen"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Fensterinhalte abrufen"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Die Inhalte eines Fensters, mit dem du interagierst, werden abgerufen."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"\"Tippen & Entdecken\" aktivieren"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Ermöglicht der App, deine Fotosammlung zu ändern."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"Standorte aus meiner Mediensammlung abrufen"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Ermöglicht der App, Standorte aus deiner Mediensammlung abzurufen."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ungefähre Blickbewegungen erfassen"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Ermöglicht der App, deine ungefähren Blickbewegungen zu erfassen."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"erfassen, wo du gerade hinschaust"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Ermöglicht der App, auf präzise Daten zu Blickbewegungen zuzugreifen."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"Gesichtsbewegungen erfassen"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Ermöglicht der App, auf Daten zur Erfassung von Gesichtsbewegungen zuzugreifen."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"Handbewegungen erfassen"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Ermöglicht der App, auf Daten zur Erfassung von Handbewegungen zuzugreifen."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"Kopfbewegungen erfassen"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Ermöglicht der App, auf Daten zur Erfassung von Kopfbewegungen zuzugreifen."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"auf Daten zu deiner unmittelbaren Umgebung zugreifen"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Ermöglicht der App, auf Trackingdaten zu deiner unmittelbaren Umgebung zuzugreifen."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"auf sehr detaillierte Daten zu deiner unmittelbaren Umgebung zugreifen"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Ermöglicht der App, auf sehr detaillierte Trackingdaten zu deiner unmittelbaren Umgebung zuzugreifen."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"auf XR-Daten zugreifen, wenn die App im Hintergrund ausgeführt wird"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Ermöglicht der App, auf XR-Daten zuzugreifen, wenn sie im Hintergrund ausgeführt wird."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrisches Verfahren nutzen"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrisches Verfahren oder Displaysperre verwenden"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Deine Identität bestätigen"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 84ca5b7..f4fb932 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"πρόσβαση στα δεδομένα αισθητήρα σχετικά με τις ζωτικές ενδείξεις σας"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Ειδοποιήσεις"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"εμφάνιση ειδοποιήσεων"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Δεδομένα παρακολούθησης XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"πρόσβαση σε δεδομένα XR για εσάς και το περιβάλλον γύρω σας"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"ευαίσθητα δεδομένα παρακολούθησης XR"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"πρόσβαση σε ευαίσθητα δεδομένα παρακολούθησης, όπως είναι η εστίαση των ματιών"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Ανάκτηση του περιεχομένου του παραθύρου"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Έλεγχος του περιεχομένου ενός παραθύρου με το οποίο αλληλεπιδράτε."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ενεργοποίηση της \"Εξερεύνησης με άγγιγμα\""</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Επιτρέπει στην εφαρμογή να τροποποιήσει τη συλλογή φωτογραφιών σας."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ανάγνωση τοποθεσιών από τη συλλογή πολυμέσων σας"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Επιτρέπει στην εφαρμογή να διαβάσει τοποθεσίες από τη συλλογή πολυμέσων σας."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"παρακολούθηση της εστίασης των ματιών κατά προσέγγιση"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Επιτρέπει στην εφαρμογή να παρακολουθεί την εστίαση των ματιών κατά προσέγγιση."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"παρακολούθηση του σημείου που κοιτάτε"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση σε ακριβή δεδομένα της εστίασης των ματιών."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"παρακολούθηση του προσώπου"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση σε δεδομένα παρακολούθησης προσώπου."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"παρακολούθηση των κινήσεων των χεριών"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση σε δεδομένα παρακολούθησης χεριού."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"παρακολούθηση της κίνησης του κεφαλιού"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση σε δεδομένα παρακολούθησης κίνησης κεφαλιού."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"κατανόηση του άμεσου περιβάλλοντος"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση σε δεδομένα παρακολούθησης του περιβάλλοντος γύρω σας."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"κατανόηση του άμεσου περιβάλλοντος με μεγάλη λεπτομέρεια"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση σε δεδομένα παρακολούθησης του περιβάλλοντος γύρω σας με εξαιρετική λεπτομέρεια."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"πρόσβαση σε δεδομένα XR, όταν δεν βρίσκεται στο προσκήνιο"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση σε δεδομένα XR, όταν δεν βρίσκεται στο προσκήνιο."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Χρήση βιομετρικών"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Χρήση βιομετρικών ή κλειδώματος οθόνης"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Επαλήθευση ταυτότητας"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index ef7238c..3b4f52c 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"access sensor data about your vital signs"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"show notifications"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR tracking data"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"access XR data about you and the environment around you"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"sensitive XR tracking data"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"access sensitive tracking data, such as eye gaze"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspect the content of a window you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Turn on Explore by Touch"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Allows the app to modify your photo collection."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"read locations from your media collection"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Allows the app to read locations from your media collection."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"track your approximate eye gaze"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Allows the app to track your approximate eye gaze."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"track where you are looking"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Allows the app to access precise eye-gaze data."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"track your face"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Allows the app to access face-tracking data."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"track your hands"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Allows the app to access hand-tracking data."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"track your head"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Allows the app to access head-tracking data."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"understand your immediate environment"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Allows the app to access tracking data about the environment directly around you."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"understand your immediate environment at high detail"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Allows the app to access tracking data about the environment directly around you with very high detail."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"access XR data while not in the foreground"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Allows the app to access XR data while not in the foreground."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Use biometrics"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Use biometrics or screen lock"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verify that it’s you"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 7e83739..79020c58 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"access sensor data about your vital signs"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"show notifications"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR tracking data"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"access XR data about you and the environment around you"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"sensitive XR tracking data"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"access sensitive tracking data, such as eye gaze"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspect the content of a window you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Turn on Explore by Touch"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Allows the app to modify your photo collection."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"read locations from your media collection"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Allows the app to read locations from your media collection."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"track your approximate eye gaze"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Allows the app to track your approximate eye gaze."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"track where you are looking"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Allows the app to access precise eye gaze data."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"track your face"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Allows the app to access face tracking data."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"track your hands"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Allows the app to access hand tracking data."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"track your head"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Allows the app to access head tracking data."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"understand your immediate environment"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Allows the app to access tracking data about the environment directly around you."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"understand your immediate environment at high detail"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Allows the app to access tracking data about the environment directly around you with very high detail."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"access XR data while not in the foreground"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Allows the app to access XR data while not in the foreground."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Use biometrics"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Use biometrics or screen lock"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verify it’s you"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 5b99b57..2c5cf4d 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"access sensor data about your vital signs"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"show notifications"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR tracking data"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"access XR data about you and the environment around you"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"sensitive XR tracking data"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"access sensitive tracking data, such as eye gaze"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Turn on Explore by Touch"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Allows the app to modify your photo collection."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"read locations from your media collection"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Allows the app to read locations from your media collection."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"track your approximate eye gaze"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Allows the app to track your approximate eye gaze."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"track where you are looking"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Allows the app to access precise eye-gaze data."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"track your face"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Allows the app to access face-tracking data."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"track your hands"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Allows the app to access hand-tracking data."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"track your head"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Allows the app to access head-tracking data."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"understand your immediate environment"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Allows the app to access tracking data about the environment directly around you."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"understand your immediate environment at high detail"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Allows the app to access tracking data about the environment directly around you with very high detail."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"access XR data while not in the foreground"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Allows the app to access XR data while not in the foreground."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Use biometrics"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Use biometrics or screen lock"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verify that it’s you"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 5ba765b..65ebd0d 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"access sensor data about your vital signs"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"show notifications"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR tracking data"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"access XR data about you and the environment around you"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"sensitive XR tracking data"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"access sensitive tracking data, such as eye gaze"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspect the content of a window you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Turn on Explore by Touch"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Allows the app to modify your photo collection."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"read locations from your media collection"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Allows the app to read locations from your media collection."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"track your approximate eye gaze"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Allows the app to track your approximate eye gaze."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"track where you are looking"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Allows the app to access precise eye-gaze data."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"track your face"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Allows the app to access face-tracking data."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"track your hands"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Allows the app to access hand-tracking data."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"track your head"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Allows the app to access head-tracking data."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"understand your immediate environment"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Allows the app to access tracking data about the environment directly around you."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"understand your immediate environment at high detail"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Allows the app to access tracking data about the environment directly around you with very high detail."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"access XR data while not in the foreground"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Allows the app to access XR data while not in the foreground."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Use biometrics"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Use biometrics or screen lock"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verify that it’s you"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index d3258dd..c9bb39c 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -282,7 +282,7 @@
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modo silencioso"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"El sonido está Desactivado"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"El sonido está Activado"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"Modo de avión"</string>
+ <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"Modo avión"</string>
<string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"El modo avión está Activado"</string>
<string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"El modo avión está Desactivado"</string>
<string name="global_action_settings" msgid="4671878836947494217">"Configuración"</string>
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"acceder a los datos de sensores acerca de tus signos vitales"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificaciones"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificaciones"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"datos de seguimiento de realidad extendida"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"acceder a datos de realidad extendida sobre ti y el entorno que te rodea"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"datos sensibles de seguimiento de realidad extendida"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"acceder a datos de seguimiento sensibles, como la mirada"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Recuperar el contenido de las ventanas"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspeccionará el contenido de la ventana con la que estés interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activar la Exploración táctil"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que la app modifique tu colección de fotos."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"leer ubicaciones de tu colección de contenido multimedia"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que la app lea las ubicaciones de tu colección de contenido multimedia."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"seguimiento aproximado de la mirada"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Permite que la app haga un seguimiento aproximado de tu mirada."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"seguimiento de la dirección de la mirada"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Permite que la app acceda a datos precisos de la mirada."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"seguimiento de tu rostro"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Permite que la app acceda a los datos de seguimiento de rostros."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"seguimiento de tus manos"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Permite que la app acceda a los datos de seguimiento de manos."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"seguimiento de tu cabeza"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Permite que la app acceda a los datos de seguimiento de la cabeza."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"comprensión de tu entorno inmediato"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Permite que la app acceda a los datos de seguimiento del entorno que te rodea directamente."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"comprensión de tu entorno inmediato con gran detalle"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Permite que la app acceda a datos de seguimiento del entorno que te rodea directamente con mucho detalle."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"acceso a los datos de realidad extendida cuando no está en primer plano"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Permite que la app acceda a los datos de realidad extendida cuando no está en primer plano."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar datos biométricos"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar datos biométricos o bloqueo de pantalla"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Comprueba que eres tú"</string>
@@ -2260,7 +2240,7 @@
<string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"Hoja de cálculo <xliff:g id="EXTENSION">%1$s</xliff:g>"</string>
<string name="mime_type_presentation" msgid="1145384236788242075">"Presentación"</string>
<string name="mime_type_presentation_ext" msgid="8761049335564371468">"Presentación <xliff:g id="EXTENSION">%1$s</xliff:g>"</string>
- <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"La conexión Bluetooth permanecerá activa durante el modo de avión"</string>
+ <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"La conexión Bluetooth permanecerá activa durante el modo avión"</string>
<string name="car_loading_profile" msgid="8219978381196748070">"Cargando"</string>
<string name="file_count" msgid="3220018595056126969">"{count,plural, =1{{file_name} y # archivo más}many{{file_name} y # archivos más}other{{file_name} y # archivos más}}"</string>
<string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"No hay personas recomendadas con quienes compartir"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index c021a8a..63fc276 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"acceder a datos de sensores de tus constantes vitales"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificaciones"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificaciones"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"datos de seguimiento de RE"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"acceder a datos de RE sobre ti y el entorno que te rodea"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"datos de seguimiento de RE sensibles"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"acceder a datos de seguimiento sensibles, como la mirada"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Comprobar el contenido de la ventana"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecciona el contenido de una ventana con la que estés interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activar la exploración táctil"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que la aplicación modifique tu colección de fotos."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"leer las ubicaciones de tu colección de contenido multimedia"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que la aplicación lea las ubicaciones de tu colección de contenido multimedia."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"hacer un seguimiento de tu mirada de forma aproximada"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Permite que la aplicación haga un seguimiento de tu mirada de forma aproximada."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"hacer un seguimiento de hacia dónde miras"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Permite que la aplicación acceda a los datos precisos de la mirada."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"hacer un seguimiento de tu cara"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Permite que la aplicación acceda a los datos de seguimiento facial."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"hacer un seguimiento de tus manos"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Permite que la aplicación acceda a los datos de seguimiento de manos."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"hacer un seguimiento de tu cabeza"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Permite que la aplicación acceda a los datos de seguimiento de cabeza."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"entender tu entorno inmediato"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Permite que la aplicación acceda a los datos de seguimiento sobre el entorno que te rodea de forma directa."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"entender tu entorno inmediato con un nivel alto de detalle"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Permite que la aplicación acceda a datos de seguimiento sobre el entorno que te rodea de forma directa con un nivel de detalle muy alto."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"acceder a datos de RE cuando no está en primer plano"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Permite que la aplicación acceda a los datos de RE cuando no está en primer plano."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar biometría"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar biometría o bloqueo de pantalla"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifica que eres tú"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index ae21583..c9b29c3a 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"juurdepääs anduri andmetele teie eluliste näitajate kohta"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Märguanded"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"märguannete kuvamine"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-i jälgimise andmed"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"juurdepääs XR-i andmetele teie ja teid ümbritseva keskkonna kohta"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"delikaatsed XR-i jälgimise andmed"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"juurdepääs delikaatsetele jälgimisandmetele, näiteks pilgule"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Akna sisu toomine"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Kasutatava akna sisu kontrollimine."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Puudutusega sirvimise sisselülitamine"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Võimaldab rakendusel muuta teie fotokogu."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"Lugeda teie meediakogus olevaid asukohti"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Võimaldab rakendusel lugeda teie meediakogus olevaid asukohti."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ligikaudse pilgu jälgimine"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Võimaldab rakendusel teie pilku ligikaudselt jälgida."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"pilgu suuna jälgimine"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Võimaldab rakendusel juurde pääseda täpsetele pilguandmetele."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"näo jälgimine"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Võimaldab rakendusel juurde pääseda näo jälgimise andmetele."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"käteliigutuste jälgimine"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Võimaldab rakendusel juurde pääseda käeliigutuste jälgimise andmetele."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"pea jälgimine"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Võimaldab rakendusel juurde pääseda peajälgimise andmetele."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"vahetu keskkonna mõistmine"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Võimaldab rakendusel juurde pääseda teie vahetu keskkonna jälgimisandmetele."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"vahetu keskkonna väga üksikasjalik mõistmine"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Võimaldab rakendusel pääseda väga üksikasjalikult juurde teie vahetu keskkonna jälgimisandmetele."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"juurdepääs XR-i andmetele, kui see pole esiplaanil"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Võimaldab rakendusel pääseda juurde XR-i andmetele, kui see pole esiplaanil."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Biomeetria kasutamine"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biomeetria või ekraaniluku kasutamine"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Kinnitage oma isik"</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index a78754f..88bb3c9 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"atzitu bizi-konstanteei buruzko sentsorearen datuak"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Jakinarazpenak"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"jakinarazpenak erakutsi"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"EHko jarraipen-datuak"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"zuri eta inguruko inguruneari buruzko EHko datuak erabili"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"kontuzko EHko jarraipen-datuak"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"kontuzko jarraipen-datuak erabili, hala nola begiradari buruzkoak"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Leihoko edukia eskuratu."</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Arakatu irekita daukazun leihoko edukia."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"\"Arakatu ukituta\" aktibatu."</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Argazki bilduma aldatzeko baimena ematen dio aplikazioari."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"multimedia-edukien bildumako kokapena irakurri"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Multimedia-edukien bildumako kokapena irakurtzeko baimena ematen dio aplikazioari."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"begiradaren gutxi gorabeherako datuen jarraipena egin"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Zure begiradaren gutxi gorabeherako datuen jarraipena egiteko baimena ematen dio aplikazioari."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"begiradaren jarraipena egin"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Zure begiradaren datu zehatzen jarraipena egiteko baimena ematen dio aplikazioari."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"aurpegiaren jarraipena egin"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Aurpegiaren jarraipen-datuak erabiltzeko baimena ematen dio aplikazioari."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"eskuen jarraipena egin"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Eskuen jarraipen-datuak erabiltzeko baimena ematen dio aplikazioari."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"buruaren jarraipena egin"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Buruaren jarraipen-datuak erabiltzeko baimena ematen dio aplikazioari."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"inguruan duzun ingurunea aztertu"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Inguruan duzun ingurunearen jarraipen datuak erabiltzeko baimena ematen dio aplikazioari."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"inguruan duzun ingurunea xehetasunez aztertu"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Inguruan duzun ingurunearen jarraipen datu oso xeheak erabiltzeko baimena ematen dio aplikazioari."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"aurreko planoan egon gabe ere EHko datuak erabili"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Aurreko planoan ez badago ere EHko datuak erabiltzeko baimena ematen dio aplikazioari."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Erabili sistema biometrikoak"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Erabili sistema biometrikoak edo pantailaren blokeoa"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Egiaztatu zeu zarela"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index ddde0b2..0c3b755 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"دسترسی به دادههای حسگر در رابطه با علائم حیاتی شما"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"اعلانها"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"نمایش اعلان"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"دادههای ردگیری واقعیت گسترده"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"دسترسی به دادههای واقعیت گسترده درباره شما و محیط اطرافتان"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"دادههای حساس ردگیری واقعیت گسترده"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"دسترسی به دادههای حساس ردگیری، مانند جهت نگاه"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"محتوای پنجره را بازیابی کند"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"محتوای پنجرهای را که درحال تعامل با آن هستید بررسی میکند."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"فعالسازی کاوش لمسی"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"به برنامه اجازه میدهد مجموعه عکستان را تغییر دهد."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"خواندن مکانها از مجموعه رسانه شما"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"به برنامه اجازه میدهد مکانها را از مجموعه رسانهتان بخواند."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ردگیری جهت تقریبی نگاه شما"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"به برنامه اجازه میدهد جهت تقریبی نگاه شما را ردگیری کند."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"ردگیری جایی که به آن نگاه میکنید"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"به برنامه اجازه میدهد به دادههای دقیق جهت نگاه دسترسی داشته باشد."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"ردگیری چهره شما"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"به برنامه اجازه میدهد به دادههای ردگیری چهره دسترسی داشته باشد."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"ردگیری دستهای شما"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"به برنامه اجازه میدهد به دادههای ردگیری دست دسترسی داشته باشد."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"ردگیری سر شما"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"به برنامه اجازه میدهد به دادههای ردگیری سر دسترسی داشته باشد."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"پی بردن به محیط مجاور شما"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"به برنامه اجازه میدهد به دادههای ردگیری مربوط به محیط مجاور شما دسترسی داشته باشد."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"پی بردن به محیط مجاور شما با جزئیات بالا"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"به برنامه اجازه میدهد به دادههای ردگیری مربوط به محیط مجاور شما با جزئیات بسیار بالا دسترسی داشته باشد."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"دسترسی به دادههای واقعیت گسترده هنگام اجرا نشدن در پیشزمینه"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"به برنامه اجازه میدهد هنگام اجرا نشدن در پیشزمینه به دادههای واقعیت گسترده دسترسی داشته باشد."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"استفاده از دادههای زیستسنجشی"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"استفاده از دادههای زیستسنجشی یا قفل صفحه"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"تأیید کنید این شمایید"</string>
@@ -1824,7 +1804,7 @@
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"بسیار کمنور"</string>
<string name="hearing_aids_feature_name" msgid="1125892105105852542">"دستگاههای کمکشنوایی"</string>
<string name="hearing_device_status_disconnected" msgid="497547752953543832">"متصل نیست"</string>
- <string name="hearing_device_status_connected" msgid="2149385149669918764">"متصل"</string>
+ <string name="hearing_device_status_connected" msgid="2149385149669918764">"وصل شد"</string>
<string name="hearing_device_status_active" msgid="4770378695482566032">"فعال"</string>
<string name="hearing_device_status_loading" msgid="5717083847663109747">"درحال بار کردن"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> روشن شد."</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index b17ab23..b12fd5c 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"pääsy anturidataan elintoiminnoistasi"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Ilmoitukset"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"näyttää ilmoituksia"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-seurantadata"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"pääsy XR-dataan, joka liittyy sinuun ja ympäristöösi"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"arkaluontoinen XR-seurantadata"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"pääsy arkaluontoiseen seurantadataan, esim. katseenseurantadataan"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Noutaa ikkunan sisältöä"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Tarkistaa käyttämäsi ikkunan sisältö."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ottaa kosketuksella tutkimisen käyttöön"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Antaa sovelluksen muokata kuvakokoelmaasi."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"lukea mediakokoelmasi sijainteja"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Antaa sovelluksen lukea mediakokoelmasi sijainteja."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"seuraa katsetta likimääräisesti"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Sallii sovelluksen seurata katsettasi likimääräisesti."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"seuraa sitä, mihin katsot"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Sallii sovellukselle pääsyn tarkkaan katsedataan."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"seuraa kasvojasi"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Sallii sovellukselle pääsyn kasvojen seurantadataan."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"seuraa käsiäsi"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Sallii sovellukselle pääsyn kädenseurantadataan."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"seuraa päätäsi"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Sallii sovellukselle pääsyn päänseurantadataan."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"ymmärtää välitöntä ympäristöäsi"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Sallii sovellukselle pääsyn ympäristöösi liittyvään seurantadataan."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"ymmärtää välittömän ympäristösi yksityiskohtaisesti"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Sallii sovellukselle pääsyn erittäin yksityiskohtaiseen, välittömään ympäristöösi liittyvään seurantadataan."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"pääsy XR-dataan, kun sovellus ei ole etualalla."</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Sallii sovellukselle pääsyn XR-dataan, kun sovellus ei ole etualalla."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Käytä biometriikkaa"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Käytä biometriikkaa tai näytön lukitusta"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Vahvista henkilöllisyytesi"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 7145e57..b9c8b64 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"accéder aux données des capteurs sur vos signes vitaux"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"afficher les notifications"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"données de suivi de RE"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"accès aux données de RE sur vous et l\'environnement qui vous entoure"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"données de suivi de RE sensibles"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"accède aux données de suivi sensibles, comme le regard"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Récupérer le contenu d\'une fenêtre"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecter le contenu d\'une fenêtre avec laquelle vous interagissez."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activer la fonctionnalité Explorer au toucher"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Autorise l\'appli à modifier votre collection de photos."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"lire les positions issues de votre collection multimédia"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Autorise l\'appli à lire les positions indiquées dans votre collection multimédia."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"suivre votre regard approximatif"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Permet à l\'appli de suivre votre regard approximatif."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"suivre où vous regardez"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Permet à l\'appli d\'accéder à des données précises sur le regard."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"suivre votre visage"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Permet à l\'appli d\'accéder aux données de suivi du visage."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"suivre vos mains"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Permet à l\'appli d\'accéder aux données de suivi des mains."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"suivre votre tête"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Permet à l\'appli d\'accéder aux données de suivi de la tête."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"comprendre votre environnement immédiat"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Permet à l\'appli d\'accéder aux données de suivi sur l\'environnement directement autour de vous."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"comprendre votre environnement immédiat dans les moindres détails"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Permet à l\'appli d\'accéder aux données de suivi sur l\'environnement directement autour de vous avec des détails très précis."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"accéder aux données de RE sans être en avant-plan"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Permet à l\'appli d\'accéder aux données de RE lorsqu\'elle n\'est pas en avant-plan."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Utiliser les données biométriques"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Utiliser les données biométriques ou le verrouillage de l\'écran"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirmez que c\'est vous"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index a71348a..9952d04 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"accéder aux données des capteurs relatives à vos signes vitaux"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"afficher des notifications"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Données de suivi XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"accéder aux données XR vous concernant et concernant l\'environnement qui vous entoure"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"données de suivi XR sensibles"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"accéder à des données de suivi sensibles, comme le suivi du regard"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Récupérer le contenu d\'une fenêtre"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecte le contenu d\'une fenêtre avec laquelle vous interagissez."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activer la fonctionnalité Explorer au toucher"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Autorise l\'application à modifier votre bibliothèque photo."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"consulter des positions issues de votre bibliothèque multimédia"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Autorise l\'application à consulter des positions issues de votre bibliothèque multimédia."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"suivre approximativement votre regard"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Autorise l\'appli à suivre approximativement votre regard."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"suivre votre regard"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Autorise l\'appli à accéder à des données sur le suivi précis du regard."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"suivre votre visage"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Autorise l\'appli à accéder aux données de suivi du visage."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"suivre vos mains"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Autorise l\'appli à accéder aux données de suivi des mains."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"suivre votre tête"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Autorise l\'appli à accéder aux données de suivi de la tête."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"comprendre votre environnement immédiat"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Autorise l\'appli à accéder aux données de suivi sur l\'environnement qui vous entoure directement."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"comprendre votre environnement immédiat avec précision"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Autorise l\'appli à accéder à des données de suivi très détaillées sur l\'environnement qui vous entoure directement."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"accéder aux données XR sans être au premier plan"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Autorise l\'appli à accéder aux données XR lorsqu\'elle n\'est pas au premier plan."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Utiliser la biométrie"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Utiliser la biométrie ou le verrouillage de l\'écran"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirmez votre identité"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index e8090b8..a2d29c9 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"acceder aos datos dos sensores sobre as túas constantes vitais"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificacións"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificacións"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"datos de seguimento de RE"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"acceder aos datos de realidade estendida sobre ti e o ambiente que te rodea"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"datos de seguimento de RE confidenciais"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"acceder a datos de seguimento confidenciais, como a mirada"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Recuperar contido da ventá"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecciona o contido dunha ventá coa que estás interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activar a exploración táctil"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que a aplicación modifique a túa colección de fotos."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ler localizacións da túa colección multimedia"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que a aplicación lea as localizacións da túa colección multimedia."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"facer un seguimento aproximado da mirada"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Permite que a aplicación faga un seguimento aproximado da mirada."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"facer un seguimento da dirección da mirada"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Permite que a aplicación acceda aos datos precisos da mirada."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"facer un seguimento da cara"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Permite que a aplicación acceda aos datos de seguimento da cara."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"facer un seguimento das mans"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Permite que a aplicación acceda aos datos de seguimento das mans."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"facer un seguimento da cabeza"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Permite que a aplicación acceda aos datos de seguimento da cabeza."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"entender o teu ambiente próximo"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Permite que a aplicación acceda aos datos de seguimento do ambiente que te rodea directamente."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"entender o teu ambiente próximo con moito detalle"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Permite que a aplicación acceda aos datos de seguimento do ambiente que te rodea directamente con moito detalle."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"acceder os datos de realidade estendida cando non estea en primeiro plano"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Permite que a aplicación acceda aos datos de realidade estendida cando non estea en primeiro plano."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Utilizar desbloqueo biométrico"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Utilizar desbloqueo biométrico ou credencial do dispositivo"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifica a túa identidade"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 3ddc9da..bb07484 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"તમારા મહત્વપૂર્ણ ચિહ્નો વિશે સેન્સર ડેટા ઍક્સેસ કરો"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"નોટિફિકેશન"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"નોટિફિકેશન બતાવો"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ટ્રૅકિંગ ડેટા"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"તમારા અને તમારી આસપાસના વાતાવરણ વિશેનો XR ડેટા ઍક્સેસ કરો"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"સંવેદનશીલ XR ટ્રૅકિંગ ડેટા"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"નજર જેવો સંવેદનશીલ ટ્રૅકિંગ ડેટા ઍક્સેસ કરો"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"વિંડો કન્ટેન્ટ પુનઃપ્રાપ્ત કરો"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"તમે જેની સાથે ક્રિયા-પ્રતિક્રિયા કરી રહ્યાં છો તે વિંડોનું કન્ટેન્ટ તપાસો."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"સ્પર્શ કરીને શોધખોળ કરવું ચાલુ કરો"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"એપને તમારો ફોટો સંગ્રહ સંશોધિત કરવાની મંજૂરી આપે છે."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"આપના મીડિયા સંગ્રહમાંથી સ્થાનો વાંચવા"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"એપને તમારા મીડિયા સંગ્રહમાંથી સ્થાનો વાંચવાની મંજૂરી આપે છે."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"તમારી અંદાજિત નજરને ટ્રૅક કરો"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"ઍપને તમારી અંદાજિત નજર ટ્રૅક કરવાની મંજૂરી આપે છે."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"તમે ક્યાં જુઓ છો, તે ટ્રૅક કરો"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"ઍપને નજરનો ચોક્કસ ડેટા ઍક્સેસ કરવાની મંજૂરી આપે છે."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"તમારા ચહેરાને ટ્રૅક કરો"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"ઍપને ચહેરો ટ્રૅક કરવાની સુવિધાનો ડેટા ઍક્સેસ કરવાની મંજૂરી આપે છે."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"તમારા હાથને ટ્રૅક કરો"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"ઍપને હાથ ટ્રૅક કરવાની સુવિધાનો ડેટા ઍક્સેસ કરવાની મંજૂરી આપે છે."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"તમારા માથાને ટ્રૅક કરો"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ઍપને હૅડ ટ્રૅકિંગની સુવિધાનો ડેટા ઍક્સેસ કરવાની મંજૂરી આપે છે."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"તમારી સાવ નજીકના વાતાવરણને સમજો"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"ઍપને સીધા તમારી આસપાસના વાતાવરણ વિશેનો ટ્રૅકિંગ ડેટા ઍક્સેસ કરવાની મંજૂરી આપે છે."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"તમારી સાવ નજીકના વાતાવરણને ખૂબ વિગતવાર સમજો"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"ઍપને સીધા તમારી આસપાસના વાતાવરણ વિશેનો ટ્રૅકિંગ ડેટા ખૂબ જ વિગતવાર ઍક્સેસ કરવાની મંજૂરી આપે છે."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ફૉરગ્રાઉન્ડમાં ન હોય ત્યારે XR ડેટા ઍક્સેસ કરો"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ફૉરગ્રાઉન્ડમાં ન હોય ત્યારે ઍપને XR ડેટા ઍક્સેસ કરવાની મંજૂરી આપે છે."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"બાયોમેટ્રિક્સનો ઉપયોગ કરો"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"બાયોમેટ્રિક્સ અથવા સ્ક્રીન લૉકનો ઉપયોગ કરો"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"આ તમે જ છો તેની ચકાસણી કરો"</string>
@@ -1844,7 +1824,7 @@
<string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"સ્વિચ કરો"</string>
<string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"સેટિંગ"</string>
<string name="user_switched" msgid="7249833311585228097">"વર્તમાન વપરાશકર્તા <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> પર સ્વિચ કરી રહ્યાં છે…"</string>
+ <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> પર સ્વિચ કરી રહ્યાં છીએ…"</string>
<string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> લોગ આઉટ થઈ રહ્યાં છે…"</string>
<string name="owner_name" msgid="8713560351570795743">"માલિક"</string>
<string name="guest_name" msgid="8502103277839834324">"અતિથિ"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index a587509..538e86c 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"अपने महत्वपूर्ण संकेतों के बारे में सेंसर डेटा को ऐक्सेस करें"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"सूचनाएं"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"सूचनाएं दिखाएं"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"एक्सआर ट्रैकिंग डेटा"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"अपने और अपने आस-पास के माहौल के बारे में एक्सआर डेटा ऐक्सेस करें"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"संवेदनशील एक्सआर ट्रैकिंग डेटा"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"संवेदनशील ट्रैकिंग डेटा को ऐक्सेस करें, जैसे कि आंखों की गतिविधि"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"विंडो का कॉन्टेंट वापस पाएं"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"विंडो पर नज़र आ रहे कॉन्टेंट की जांच करें."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"छूकर, किसी चीज़ से जुड़ी जानकारी सुनने की सुविधा चालू करें"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"इससे ऐप्लिकेशन को आपके फ़ोटो संग्रह में बदलाव करने की मंज़ूरी दी जाती है."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"अपने मीडिया संग्रह से जगह की जानकारी ऐक्सेस करने की अनुमति दें"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"इससे ऐप्लिकेशन को आपके मीडिया संग्रह से जगह की जानकारी ऐक्सेस करने की अनुमति दी जाती है."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"आंखों की गतिविधियां ट्रैक करें"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"इससे ऐप्लिकेशन को, आपकी आंखों की गतिविधियों को ट्रैक करने की अनुमति मिलती है."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"किस ओर देखा जा रहा है, यह ट्रैक करें"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"इससे ऐप्लिकेशन को, आंखों की गतिविधियों का सटीक डेटा ऐक्सेस करने की अनुमति मिलती है."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"चेहरे को ट्रैक करें"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"इससे ऐप्लिकेशन को, फ़ेस ट्रैकिंग का डेटा ऐक्सेस करने की अनुमति मिलती है."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"हाथों को ट्रैक करें"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"इससे ऐप्लिकेशन को, हैंड ट्रैकिंग का डेटा ऐक्सेस करने की अनुमति मिलती है."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"सिर को ट्रैक करें"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"इससे ऐप्लिकेशन को, हेड ट्रैकिंग डेटा को ऐक्सेस करने की अनुमति मिलती है."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"अपने आस-पास के माहौल की जानकारी पाएं"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"इससे ऐप्लिकेशन को, आपके आस-पास के माहौल के ट्रैकिंग डेटा को ऐक्सेस करने की अनुमति मिलती है."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"अपने आस-पास के माहौल के बारे में छोटी से छोटी जानकारी पाएं"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"इससे ऐप्लिकेशन को, आपके आस-पास के माहौल के बारे में छोटी से छोटी जानकारी के साथ ट्रैकिंग डेटा ऐक्सेस करने की अनुमति मिलती है."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ऐप्लिकेशन पर, फ़ोरग्राउंड के काम न करने पर भी एक्सआर डेटा ऐक्सेस करें"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"इससे ऐप्लिकेशन को, एक्सआर डेटा ऐक्सेस करने की अनुमति मिलती है, भले ही उसमें फ़ोरग्राउंड में काम न कर रहा हो."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"बायोमेट्रिक्स इस्तेमाल करें"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"बायोमेट्रिक्स या स्क्रीन लॉक का क्रेडेंशियल इस्तेमाल करें"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"अपनी पहचान की पुष्टि करें"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index cfea6ab..cde062a 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"pristupiti podacima senzora o vašim vitalnim znakovima"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Obavijesti"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"prikazati obavijesti"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR podaci o praćenju"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"pristup XR podacima o vama i vašem okruženju"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"osjetljivi XR podaci o praćenju"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"pristup osjetljivim podacima o praćenju, kao što je pogled"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Dohvaćati sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Pregledat će sadržaj prozora koji upotrebljavate."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Uključiti značajku Istraži dodirom"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Omogućuje aplikaciji izmjenu vaše zbirke fotografija."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"čitanje lokacija iz vaše medijske zbirke"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Omogućuje aplikaciji čitanje lokacija iz vaše medijske zbirke."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"praćenje približnog pogleda"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Aplikaciji omogućuje praćenje približnih podataka o pogledu."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"praćenje toga gdje gledate"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Aplikaciji omogućuje pristup preciznim podacima o pogledu."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"praćenje lica"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Aplikaciji omogućuje pristup podacima o praćenju lica."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"praćenje pokreta ruku"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Aplikaciji omogućuje pristup podacima o praćenju ruku."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"praćenje pokreta glave"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Aplikaciji omogućuje pristup podacima o praćenju pokreta glave."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"stjecanje uvida u neposredno okruženje"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Aplikaciji omogućuje pristup podacima o praćenju o vašem neposrednom okruženju."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"stjecanje detaljnih uvida u neposredno okruženje"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Aplikaciji omogućuje pristup detaljnim podacima o praćenju o vašem neposrednom okruženju."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"pristup XR podacima dok nije u prednjem planu"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Aplikaciji omogućuje pristup XR podacima dok nije u prednjem planu."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Upotreba biometrije"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Upotreba biometrijske autentifikacije ili zaključavanja zaslona"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrdite da ste to vi"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 24389d6..1acf7bc 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"az érzékelők által mért, életjelekkel kapcsolatos adatok elérése"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Értesítések"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"értesítések megjelenítése"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-nyomonkövetési adatok"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"hozzáférés az Önre és a környezetére vonatkozó XR-adatokhoz"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"bizalmas XR-nyomonkövetési adatok"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"hozzáférés bizalmas nyomon követési adatokhoz, például a szemmozgáshoz"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Ablaktartalom lekérdezése"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"A használt ablak tartalmának vizsgálata."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Felfedezés érintéssel bekapcsolása"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Engedélyezi az alkalmazásnak a fényképgyűjtemény módosítását."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"helyek olvasása a médiagyűjteményből"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Engedélyezi az alkalmazásnak a helyek médiagyűjteményből való olvasását."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"a szemmozgás hozzávetőleges nyomon követése"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Lehetővé teszi az alkalmazás számára a szemmozgás hozzávetőleges nyomon követését."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"annak nyomon követése, hogy Ön hová néz"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen a szemmozgással kapcsolatos pontos adatokhoz."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"arc nyomon követése"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen az arckövetési adatokhoz."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"kézmozgás nyomon követése"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen a kézmozgáskövetési adatokhoz."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"fej nyomon követése"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen a fejkövetési adatokhoz."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"a közvetlen környezet megértése"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen az Ön közvetlen környezetére vonatkozó nyomon követési adatokhoz."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"a közvetlen környezetének nagyon pontos megértése"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen az Ön közvetlen környezetére vonatkozó nagyon pontos nyomon követési adatokhoz."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"hozzáférés az XR-adatokhoz, amikor nincs az előtérben"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen az XR-adatokhoz, amikor nincs az előtérben."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometriai feloldás használata"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"A folytatás biometriai feloldással vagy képernyőzárral lehetséges"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Igazolja, hogy Ön az"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 1125dc9..041042f 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"օգտագործել սենսորների տվյալները ձեր օրգանիզմի վիճակի մասին"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Ծանուցումներ"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"ցուցադրել ծանուցումներ"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR հետագծման տվյալներ"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"մուտք գործեք XR տվյալներ ձեր և ձեզ շրջապատող միջավայրի մասին"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"զգայուն XR հետագծման տվյալներ"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"մուտք գործել հետևելու զգայուն տվյալներ, ինչպիսիք են աչքի հայացքը"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Առբերել պատուհանի բովանդակությունը"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Վերլուծել գործող պատուհանի բովանդակությունը"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Միացնել Հպման միջոցով հետազոտումը"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Թույլ է տալիս հավելվածին փոփոխել ձեր լուսանկարների հավաքածուն:"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ճանաչել տեղադրության մասին տվյալները մեդիա բովանդակության հավաքածուից"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Թույլ է տալիս հավելվածին ճանաչել տեղադրության մասին տվյալները ձեր մեդիա բովանդակության հավաքածուից:"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"հետևեք ձեր աչքերի մոտավոր հայացքին"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Թույլ է տալիս հավելվածին հետևել ձեր աչքերի մոտավոր հայացքին։"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"հետևեք, թե որտեղ եք փնտրում"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Թույլ է տալիս հավելվածին մուտք գործել աչքի հայացքի ճշգրիտ տվյալներ։"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"հետևեք ձեր դեմքին"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Թույլ է տալիս հավելվածին մուտք գործել դեմքերի հետագծման տվյալներ։"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"հետագծեք ձեր ձեռքերի շարժումները"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Թույլ է տալիս հավելվածին մուտք գործել ձեռքի հետագծման տվյալներ։"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"հետևեք ձեր գլխին"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Թույլ է տալիս հավելվածին մուտք գործել գլխի հետագծման տվյալներ։"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"հասկացեք ձեր անմիջական միջավայրը"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Թույլ է տալիս հավելվածին մուտք գործել անմիջականորեն ձեր շուրջը գտնվող միջավայրի հետագծման տվյալներ։"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"հասկացեք ձեր անմիջական միջավայրը մանրամասնությամբ"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Թույլ է տալիս հավելվածին մուտք գործել անմիջականորեն ձեր շուրջը գտնվող միջավայրի հետագծման տվյալներ՝ մանրամասների հետագծմամբ։"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"մուտք գործեք XR տվյալներ, երբ առաջին պլանում չեք"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Թույլ է տալիս հավելվածին մուտք գործել XR տվյալներ, մինչդեռ առաջին պլանում չէ։"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Կենսաչափական համակարգեր"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Օգտագործել կենսաչափական համակարգեր կամ էկրանի կողպում"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Հաստատեք ձեր ինքնությունը"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 2cd5472..b02d5ee 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"mengakses data sensor tentang tanda-tanda vital"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifikasi"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"tampilkan notifikasi"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Data pelacakan XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"mengakses data XR tentang Anda dan lingkungan di sekitar Anda"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"data pelacakan XR sensitif"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"mengakses data pelacakan sensitif, seperti pandangan mata"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Membaca konten di jendela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Memeriksa konten di jendela yang sedang Anda buka."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Mengaktifkan Jelajahi dengan Sentuhan"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Mengizinkan aplikasi untuk memodifikasi koleksi foto Anda."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"membaca lokasi dari koleksi media Anda"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Mengizinkan aplikasi untuk membaca lokasi dari koleksi media Anda."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"melacak perkiraan pandangan mata Anda"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Mengizinkan aplikasi melacak perkiraan pandangan mata Anda."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"melacak arah yang Anda lihat"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Mengizinkan aplikasi mengakses data pandangan mata yang akurat."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"melacak wajah Anda"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Mengizinkan aplikasi mengakses data pelacakan wajah."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"melacak gerak tangan Anda"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Mengizinkan aplikasi mengakses data pelacakan gerak tangan."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"melacak gerak kepala Anda"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Mengizinkan aplikasi mengakses data pelacakan gerak kepala."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"memahami lingkungan sekitar Anda"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Mengizinkan aplikasi mengakses data pelacakan tentang lingkungan di sekitar Anda."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"memahami lingkungan sekitar Anda secara mendetail"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Mengizinkan aplikasi mengakses data pelacakan tentang lingkungan di sekitar Anda secara mendetail."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"mengakses data XR saat tidak berada di latar depan"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Mengizinkan aplikasi mengakses data XR saat tidak berada di latar depan."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Gunakan biometrik"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Gunakan biometrik atau kunci layar"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifikasi diri Anda"</string>
@@ -743,7 +723,7 @@
</string-array>
<string name="fingerprint_error_vendor_unknown" msgid="4170002184907291065">"Terjadi error. Coba lagi."</string>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon sidik jari"</string>
- <string name="device_unlock_notification_name" msgid="2632928999862915709">"Buka kunci perangkat"</string>
+ <string name="device_unlock_notification_name" msgid="2632928999862915709">"Pembuka kunci perangkat"</string>
<string name="alternative_unlock_setup_notification_title" msgid="6241508547901933544">"Coba cara lain untuk membuka kunci"</string>
<string name="alternative_face_setup_notification_content" msgid="3384959224091897331">"Gunakan Buka dengan Wajah saat sidik jari Anda tidak dikenali, seperti saat jari Anda basah"</string>
<string name="alternative_fp_setup_notification_content" msgid="7454096947415721639">"Gunakan Buka dengan Sidik Jari saat wajah Anda tidak dikenali, seperti saat pencahayaan tidak cukup"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index a89a50f..d66721a 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"aðgangur að skynjaragögnum um lífsmörk þín"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Tilkynningar"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"sýna tilkynningar"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"víðveruleikarakningargögn"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"aðgangur að víðveruleikagögnum um þig og umhverfi þitt"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"viðkvæm víðveruleikarakningargögn"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"aðgangur að viðkvæmum rakningargögnum, eins og augnhreyfingum"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Sækja innihald glugga"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Kanna innihald glugga sem þú ert að nota."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Kveikja á snertikönnun"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Leyfir forritinu að breyta myndasafninu þínu."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"lesa staðsetningar úr efnissafninu þínu"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Leyfir forritinu að lesa staðsetningar úr efnissafninu þínu."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"fylgjast með áætluðum augnhreyfingum þínum"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Leyfir forritinu að fylgjast með áætluðum augnhreyfingum þínum."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"fylgjast með því hvert þú horfir"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Leyfir forritinu að fá aðgang að gögnum um nákvæmar augnhreyfingar þínar."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"fylgjast með andliti þínu"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Leyfir forritinu að fá aðgang að gögnum um greiningu andlitshreyfinga."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"rekja handahreyfingarnar þínar"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Leyfir forritinu að fá aðgang að gögnum um greiningu handahreyfinga."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"fylgjast með höfðinu á þér"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Leyfir forritinu að fá aðgang að gögnum um vöktun höfuðhreyfinga."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"átta sig á nánasta umhverfi þínu"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Veitir forritinu aðgang að rakningargögnum um nánasta umhverfi þitt."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"átta sig á nánasta umhverfi þínu í miklum smáatriðum"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Leyfir forritinu að fá aðgang að rakningargögnum um nánasta umhverfi þitt í miklum smáatriðum."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"fá aðgang að víðveruleikagögnum þegar það er ekki í forgrunni"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Leyfir forritinu að fá aðgang að víðveruleikagögnum þegar það er ekki í forgrunni."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Nota lífkenni"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Nota lífkenni eða skjálás"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Staðfestu hver þú ert"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 47ef283..7506002 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"Possono accedere ai dati dei sensori relativi ai tuoi parametri vitali"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifiche"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"Visualizzazione di notifiche"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"dati di tracciamento XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"accesso ai dati XR relativi a te e all\'ambiente circostante"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"dati di tracciamento XR sensibili"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"accesso a dati di tracciamento sensibili, come lo sguardo"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Recuperare contenuti della finestra"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Esamina i contenuti di una finestra con cui interagisci."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Attivare Esplora al tocco"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Consente all\'app di modificare la tua raccolta di foto."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"lettura delle posizioni dalla tua raccolta multimediale"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Consente all\'app di leggere le posizioni dalla tua raccolta multimediale."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"tracciamento approssimativo dello sguardo"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Consente all\'app di tracciare approssimativamente il tuo sguardo."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"tracciamento del punto osservato"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Consente all\'app di accedere a dati precisi sullo sguardo."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"tracciamento del volto"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Consente all\'app di accedere ai dati di tracciamento del volto."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"tracciamento delle mani"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Consente all\'app di accedere ai dati di tracciamento delle mani."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"tracciamento della testa"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Consente all\'app di accedere ai dati di tracciamento della testa."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"comprensione dell\'ambiente circostante"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Consente all\'app di accedere ai dati di tracciamento sull\'ambiente direttamente intorno a te."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"comprensione dell\'ambiente circostante in modo dettagliato"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Consente all\'app di accedere ai dati di tracciamento sull\'ambiente direttamente intorno a te molto dettagliatamente."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"accesso ai dati XR non in primo piano"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Consente all\'app di accedere ai dati XR non in primo piano."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Usa la biometria"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usa la biometria o il blocco schermo"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifica la tua identità"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 7e37dff..7ad10c8 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"バイタルサインに関するセンサーデータへのアクセス"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"通知"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"通知を表示"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR トラッキング データ"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"ユーザーと周囲の環境に関する XR データへのアクセス"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"機密性の高い XR トラッキング データ"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"視線などの機密性の高いトラッキング データへのアクセス"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ウィンドウコンテンツの取得"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ユーザーがアクセスしているウィンドウのコンテンツを検査します。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"タッチガイドの有効化"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"写真コレクションの変更をアプリに許可します。"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"メディア コレクションの位置情報の読み取り"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"メディア コレクションの位置情報の読み取りをアプリに許可します。"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"おおまかな視線のトラッキング"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"おおまかな視線のトラッキングをアプリに許可します。"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"視線の移動のトラッキング"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"正確な視線データへのアクセスをアプリに許可します。"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"顔トラッキング"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"顔トラッキング データへのアクセスをアプリに許可します。"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"ハンド トラッキング"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"ハンド トラッキング データへのアクセスをアプリに許可します。"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"ヘッド トラッキング"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ヘッド トラッキング データへのアクセスをアプリに許可します。"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"周囲の環境を把握"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"周囲の環境に関するトラッキング データへのアクセスをアプリに許可します。"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"周囲の環境を詳細に把握"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"周囲の環境に関する非常に詳細なトラッキング データへのアクセスをアプリに許可します。"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"フォアグラウンドで実行されていないときに XR データにアクセス"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"フォアグラウンドで実行されていないときに XR データへのアクセスをアプリに許可します。"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"生体認証の使用"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"生体認証または画面ロックの使用"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"本人確認"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 5ecf5b7..fcdfc01 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"თქვენი სასიცოცხლო ფუნქციების შესახებ სენსორის მონაცემებზე წვდომა"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"შეტყობინებები"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"შეტყობინებების ჩვენება"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR თვალყურის დევნების მონაცემები"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"წვდომა თქვენ და მიმდებარე გარემოს შესახებ XR მონაცემებზე"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"XR თვალყურის დევნების სენსიტ. მონაცემები"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"წვდომა თვალყურის დევნების სენსიტიურ მონაცემებზე, როგორიცაა მზერის მიმართულება"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ფანჯრის კონტენტის მოძიება"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"იმ ფანჯრის კონტენტის შემოწმება, რომელშიც მუშაობთ."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"„შეხებით აღმოჩენის“ ჩართვა"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"აპი შეძლებს თქვენი ფოტოკოლექციის შეცვლას."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"მდებარეობების გაცნობა თქვენი მედიაკოლექციიდან"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"აპი შეძლებს მდებარეობების გაცნობას თქვენი მედიაკოლექციიდან."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"თქვენი მზერის მიახლოებითი მიმართულების თვალყურის დევნება"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"ნებართვას აძლევს აპს, თვალყური ადევნოს თქვენი მზერის სავარაუდო მიმართულებას."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"მზერის მიმართულების თვალყურის დევნება"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"ნებართვას აძლევს აპს, მოიპოვოს წვდომა მზერის მიმართულების ზუსტ მონაცემებზე."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"თქვენი სახის თვალყურის დევნება"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"ნებართვას აძლევს აპს, მოიპოვოს წვდომა სახის თვალყურის დევნების მონაცემებზე."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"თქვენი ხელების მოძრაობაზე თვალის დევნება"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"ნებართვას აძლევს აპს, მოიპოვოს წვდომა ხელების მოძრაობაზე თვალყურის დევნების მონაცემებზე."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"თქვენი თავის მოძრაობაზე თვალყურის დევნება"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ნებართვას აძლევს აპს, მოიპოვოს წვდომა თავის მოძრაობაზე თვალყურის დევნების მონაცემებზე."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"უშუალო გარემოს გაგება"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"ნებართვას აძლევს აპს, მოიპოვოს წვდომა თქვენ მიმდებარე გარემოზე თვალყურის დევნების მონაცემებზე."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"უშუალო გარემოს გაგება ზედმიწევნით დეტალურად"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"ნებართვას აძლევს აპს, მოიპოვოს წვდომა თქვენ მიმდებარე გარემოზე თვალყურის დევნების მონაცემებზე ზედმიწევნით დეტალურად."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"XR მონაცემებზე წვდომა უკანა პლანზე ყოფნისას"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ნებართვას აძლევს აპს, მოიპოვოს წვდომა XR მონაცემებზე, უკანა პლანზე ყოფნისას."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"გამოიყენეთ ბიომეტრიული სისტემა"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"გამოიყენეთ ბიომეტრიული სისტემა ან ეკრანის დაბლოკვა"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"დაადასტურეთ ვინაობა"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 98addd0..e60ce5d 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"ағза күйінің көрсеткіштері туралы сенсор деректеріне қатынасу"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Хабарландырулар"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"хабарландыруларды көрсету"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"бақылауға арналған XR деректері"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"сіз және айналаңыздағы орта туралы XR деректерін пайдалану"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"бақылауға арналған құпия XR деректері"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"қарау бағыты сияқты құпия қадағалау деректерін пайдалану"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Терезе контентін оқып отыру"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Ашық тұрған терезе контентін тексеру."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Түртілген элементтерді дыбыстау функциясын қосу"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Қолданбаға суреттер жинағын өзгертуге мүмкіндік береді."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"медиамазмұн жинағынан геодеректерді оқу"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Қолданбаға медиамазмұн жинағынан геодеректерді оқуға мүмкіндік береді."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"болжалды қарау бағытын қадағалау"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Қолданбаға болжалды қарау бағытын қадағалау рұқсаты беріледі."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"қараған бағытты қадағалау"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Қолданбаға қарау бағытының нақты деректерін пайдалану рұқсаты беріледі."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"бетті қадағалау"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Қолданбаға бетті қадағалау деректерін пайдалану рұқсаты беріледі."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"қол қимылын аңду"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Қолданбаға қол қимылын аңду деректерін пайдалану рұқсаты беріледі."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"бас қозғалысын қадағалау"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Қолданбаға бас қозғалысын қадағалау деректерін пайдалану рұқсаты беріледі."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"сізді қоршаған айналаны түсіне білу"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Қолданбаға сіздің айналаңыздағы ортаны бақылау деректерін пайдалану рұқсаты беріледі."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"сізді қоршаған айналаны терең түсіне білу"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Қолданбаға сіздің айналаңыздағы ортаны бақылаудың толық деректерін пайдалану рұқсаты беріледі."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"экрандық режимнен тыс кезде XR деректерін пайдалану"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Қолданба экрандық режимде тұрмаған кезде, оған XR деректерін пайдалану рұқсаты беріледі."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Биометриканы пайдалану"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Биометриканы немесе экран құлпын пайдалану"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Cіз екеніңізді растаңыз"</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 7d0f7785..ad10175 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"ចូលដំណើរការទិន្នន័យឧបករណ៍ចាប់សញ្ញាអំពីស្ថានភាពសុខភាពរបស់អ្នក"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"ការជូនដំណឹង"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"បង្ហាញការជូនដំណឹង"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"ទិន្នន័យតាមដាន XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"ចូលប្រើទិន្នន័យ XR អំពីអ្នក និងមជ្ឈដ្ឋានជុំវិញអ្នក"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"ទិន្នន័យតាមដាន XR ដែលរសើប"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"ចូលប្រើទិន្នន័យតាមដានដែលរសើប ដូចជាការសម្លឹងមើល"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ទាញយកខ្លឹមសារវិនដូ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ពិនិត្យខ្លឹមសារវិនដូដែលអ្នកកំពុងធ្វើអន្តរកម្មជាមួយ។"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"បើកការរកមើលដោយប៉ះ"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"អនុញ្ញាតឱ្យកម្មវិធីកែប្រែបណ្ដុំរូបថតរបស់អ្នក។"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"អានទីតាំងពីបណ្ដុំមេឌៀរបស់អ្នក"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"អនុញ្ញាតឱ្យកម្មវិធីអានទីតាំងពីបណ្ដុំមេឌៀរបស់អ្នក។"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"តាមដានការសម្លឹងមើលប្រហាក់ប្រហែលរបស់អ្នក"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"អនុញ្ញាតឱ្យកម្មវិធីតាមដានការសម្លឹងមើលប្រហាក់ប្រហែលរបស់អ្នក។"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"តាមដានកន្លែងដែលអ្នកកំពុងមើល"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"អនុញ្ញាតឱ្យកម្មវិធីចូលប្រើទិន្នន័យនៃការសម្លឹងមើលជាក់លាក់។"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"តាមដានមុខរបស់អ្នក"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"អនុញ្ញាតឱ្យកម្មវិធីចូលប្រើទិន្នន័យតាមដានមុខ។"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"តាមដានដៃរបស់អ្នក"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"អនុញ្ញាតឱ្យកម្មវិធីចូលប្រើទិន្នន័យតាមដានចលនាដៃ។"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"តាមដានក្បាលរបស់អ្នក"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"អនុញ្ញាតឱ្យកម្មវិធីចូលប្រើទិន្នន័យតាមដានចលនាក្បាល។"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"យល់ដឹងអំពីមជ្ឈដ្ឋានបច្ចុប្បន្នរបស់អ្នក"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"អនុញ្ញាតឱ្យកម្មវិធីចូលប្រើទិន្នន័យតាមដានអំពីមជ្ឈដ្ឋានជុំវិញអ្នកដោយផ្ទាល់។"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"យល់ដឹងអំពីមជ្ឈដ្ឋានបច្ចុប្បន្នរបស់អ្នកដោយមានភាពលម្អិតកម្រិតខ្ពស់"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"អនុញ្ញាតឱ្យកម្មវិធីចូលប្រើទិន្នន័យតាមដានអំពីមជ្ឈដ្ឋានជុំវិញអ្នកដោយផ្ទាល់ដោយមានភាពលម្អិតកម្រិតខ្ពស់ខ្លាំង។"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ចូលប្រើទិន្នន័យ XR ពេលមិននៅផ្ទៃខាងមុខ"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"អនុញ្ញាតឱ្យកម្មវិធីចូលប្រើទិន្នន័យ XR ពេលមិននៅផ្ទៃខាងមុខ។"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ប្រើជីវមាត្រ"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ប្រើជីវមាត្រ ឬការចាក់សោអេក្រង់"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"ផ្ទៀងផ្ទាត់ថាជាអ្នក"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index e3caae5..5711aa6 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತು ಸೆನ್ಸಾರ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"ನೋಟಿಫಿಕೇಶನ್ಗಳು"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸಿ"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ಟ್ರ್ಯಾಕಿಂಗ್ ಡೇಟಾ"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"ನಿಮ್ಮ ಮತ್ತು ನಿಮ್ಮ ಸುತ್ತಲಿನ ಪರಿಸರದ ಕುರಿತು XR ಡೇಟಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿ"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"ಸೂಕ್ಷ್ಮವಾದ XR ಟ್ರ್ಯಾಕಿಂಗ್ ಡೇಟಾ"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"ಕಣ್ಣಿನ ನೋಟದಂತಹ ಸೂಕ್ಷ್ಮವಾದ ಟ್ರ್ಯಾಕಿಂಗ್ ಡೇಟಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿ"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ವಿಂಡೋ ವಿಷಯವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ನೀವು ಸಂವಹನ ನಡೆಸುತ್ತಿರುವ ವಿಂಡೋದ ಕಂಟೆಂಟ್ ಅನ್ನು ಪರೀಕ್ಷಿಸಿ."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ಸ್ಪರ್ಶ-ಎಕ್ಸ್ಪ್ಲೋರ್ ಆನ್ ಮಾಡುತ್ತದೆ"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"ನಿಮ್ಮ ಫೋಟೋ ಸಂಗ್ರಹಣೆಯನ್ನು ಮಾರ್ಪಡಿಸಲು ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ನಿಮ್ಮ ಮೀಡಿಯಾ ಸಂಗ್ರಹಣೆಯಿಂದ ಸ್ಥಳಗಳನ್ನು ಓದಿ"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"ನಿಮ್ಮ ಮೀಡಿಯಾ ಸಂಗ್ರಹಣೆಯಿಂದ ಸ್ಥಳಗಳನ್ನು ಓದಲು ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ನಿಮ್ಮ ಕಣ್ಣಿನ ಅಂದಾಜು ನೋಟವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"ನಿಮ್ಮ ಕಣ್ಣಿನ ಅಂದಾಜು ನೋಟವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"ನೀವು ಎಲ್ಲಿ ನೋಡುತ್ತಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"ಕಣ್ಣಿನ ನಿಖರವಾದ ನೋಟದ ಡೇಟಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"ನಿಮ್ಮ ಮುಖವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"ಫೇಸ್ ಟ್ರ್ಯಾಕಿಂಗ್ ಡೇಟಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"ನಿಮ್ಮ ಕೈಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"ಹ್ಯಾಂಡ್ ಟ್ರ್ಯಾಕಿಂಗ್ ಡೇಟಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"ನಿಮ್ಮ ತಲೆಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ಹೆಡ್ ಟ್ರ್ಯಾಕಿಂಗ್ ಡೇಟಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"ನಿಮ್ಮ ಸುತ್ತಲಿನ ಪರಿಸರವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"ನಿಮ್ಮ ಸುತ್ತಲಿನ ಪರಿಸರದ ಕುರಿತು ಟ್ರ್ಯಾಕಿಂಗ್ ಡೇಟಾವನ್ನು ನೇರವಾಗಿ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"ನಿಮ್ಮ ಸುತ್ತಲಿನ ಪರಿಸರವನ್ನು ಇನ್ನಷ್ಟು ವಿವರವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"ನಿಮ್ಮ ಸುತ್ತಲಿನ ಪರಿಸರದ ಕುರಿತು ಟ್ರ್ಯಾಕಿಂಗ್ ಡೇಟಾವನ್ನು ಹೆಚ್ಚಿನ ವಿವರಗಳೊಂದಿಗೆ ನೇರವಾಗಿ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ಮುನ್ನೆಲೆಯಲ್ಲಿ ಇಲ್ಲದಿರುವಾಗ XR ಡೇಟಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿ"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ಮುನ್ನೆಲೆಯಲ್ಲಿ ಇಲ್ಲದಿರುವಾಗ XR ಡೇಟಾವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಬಳಸಿ"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಅಥವಾ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಅನ್ನು ಬಳಸಿ"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"ಇದು ನೀವೇ ಎಂದು ಪರಿಶೀಲಿಸಿ"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index ffbe631..bb8c022 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"생체 신호에 관한 센서 데이터에 액세스"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"알림"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"알림 표시"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR 추적 데이터"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"사용자 및 주변 환경에 대한 XR 데이터에 액세스"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"민감한 XR 추적 데이터"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"시선 추적과 같은 민감한 추적 데이터에 액세스"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"창 콘텐츠 가져오기"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"상호작용 중인 창의 콘텐츠를 검사합니다."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"터치하여 탐색 사용"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"앱에서 사진 컬렉션을 수정하도록 허용합니다."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"미디어 컬렉션에서 위치 읽기"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"앱에서 미디어 컬렉션의 위치를 읽도록 허용합니다."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"대략적인 시선 추적"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"앱이 대략적인 시선을 추적하도록 허용합니다."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"시선 추적"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"앱이 정확한 시선 데이터에 액세스하도록 허용합니다."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"얼굴 추적"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"앱이 얼굴 트래킹 데이터에 액세스하도록 허용합니다."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"손 추적"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"앱이 핸드 트래킹 데이터에 액세스하도록 허용합니다."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"머리 추적"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"앱이 헤드 트래킹 데이터에 액세스하도록 허용합니다."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"주변 환경 파악"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"앱이 주변 환경에 대한 추적 데이터에 직접 액세스하도록 허용합니다."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"주변 환경 상세 파악"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"앱이 주변 환경에 대한 매우 상세한 추적 데이터에 액세스하도록 허용합니다."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"포그라운드에 있지 않을 때 XR 데이터에 액세스"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"앱이 포그라운드에 있지 않을 때 XR 데이터에 액세스하도록 허용합니다."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"생체 인식 사용"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"생체 인식 또는 화면 잠금을 사용"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"본인 확인"</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 5f19cf7..3fe442f 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"организмдин абалына көз салган сенсордун дайындарына мүмкүнчүлүк алуу"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Билдирмелер"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"билдирмелерди көрсөтүү"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"кеңейтилген чындыкка көз салуу дайындары"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"сиз жана айланаңыздагы чөйрө жөнүндө кеңейтилген чындык дайындарына кирүү"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"купуя XR көз салуу дайындары"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"көз караш сыяктуу купуя көз салуу дайындарына кирүү"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Терезедеги нерселерди алып туруу"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Учурда ачылып турган терезедеги маалыматты талдайт."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"\"Сыйпалап изилдөө\" мүмкүнчүлүгүн иштетет"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Колдонмого сүрөт жыйнагыңызды өзгөртүүгө мүмкүнчүлүк берет."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"медиа жыйнагыңыз сакталган жерлерди окуу"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Колдонмого медиа жыйнагыңыз сакталган жерлерди окууга мүмкүнчүлүк берет."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"көз карашыңыздын болжолдуу багытына көз салуу"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Колдонмого көз карашыңыздын болжолдуу багытына көз салуу мүмкүнчүлүгүн берет."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"кайда карап жатканыңызга көз салуу"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Колдонмого көз карашыңыздын багыты боюнча так маалыматка кирүү мүмкүнчүлүгүн берет."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"жүзүңүзгө көз салуу"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Колдонмого жүзгө көз салуу боюнча так маалыматка кирүү мүмкүнчүлүгүн берет."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"колдоруңузга көз салуу"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Колдонмого колдорго көз салуу боюнча маалыматка кирүү мүмкүнчүлүгүн берет."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"башыңыздын кыймылына көз салуу"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Колдонмого баштын кыймылына көз салуу мүмкүнчүлүгүн берет."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"жакын айлана-чөйрөңүздү түшүнүү"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Колдонмого айлана-чөйрөңүзгө көз салуу дайындарына кирүү мүмкүнчүлүгүн берет."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"айлана-чөйрөңүзгө көз салуу дайындарынын толук чоо-жайын түшүнүү"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Колдонмого айлана-чөйрөңүзгө көз салуу дайындарынын толук чоо-жайына кирүү мүмкүнчүлүгүн берет."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"фондук режиминде кеңейтилген чындык дайындарына кирүү мүмкүнчүлүгү"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Колдонмого фондук режиминде кеңейтилген чындык дайындарына кирүү мүмкүнчүлүгүн берет."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Биометрикалык параметрлерди колдонуу"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Биометрикалык жөндөөнү же экрандын кулпусун колдонуу"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Өзүңүздү ырастаңыз"</string>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index fa1ff2b..1658a78 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"ເຂົ້າຫາຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບຂອງທ່ານ"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"ການແຈ້ງເຕືອນ"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"ສະແດງການແຈ້ງເຕືອນ"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"ຂໍ້ມູນການຕິດຕາມ XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"ເຂົ້າເຖິງຂໍ້ມູນ XR ກ່ຽວກັບທ່ານ ແລະ ສະພາບແວດລ້ອມອ້ອມຕົວທ່ານ"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"ຂໍ້ມູນການຕິດຕາມ XR ທີ່ມີຄວາມລະອຽດອ່ອນ"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"ເຂົ້າເຖິງຂໍ້ມູນການຕິດຕາມທີ່ມີຄວາມລະອຽດອ່ອນ ເຊັ່ນ: ການຈ້ອງດ້ວຍຕາ"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ດຶງຂໍ້ມູນເນື້ອຫາໃນໜ້າຈໍ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ກວດກາເນື້ອຫາຂອງໜ້າຈໍທີ່ທ່ານກຳລັງມີປະຕິສຳພັນນຳ."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ເປີດໃຊ້ \"ການສຳຫຼວດໂດຍສຳຜັດ\""</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"ອະນຸຍາດໃຫ້ແອັບແກ້ໄຂຄໍເລັກຊັນຮູບຂອງທ່ານ."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ອ່ານສະຖານທີ່ຈາກຄໍເລັກຊັນມີເດຍຂອງທ່ານ"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"ອະນຸຍາດໃຫ້ແອັບອ່ານສະຖານທີ່ຈາກຄໍເລັກຊັນມີເດຍຂອງທ່ານ."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ຕິດຕາມການຈ້ອງດ້ວຍຕາໂດຍປະມານຂອງທ່ານ"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"ອະນຸຍາດໃຫ້ແອັບຕິດຕາມການຈ້ອງດ້ວຍຕາໂດຍປະມານຂອງທ່ານ."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"ຕິດຕາມຕຳແໜ່ງທີ່ທ່ານເບິ່ງ"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງຂໍ້ມູນການຈ້ອງດ້ວຍຕາຢ່າງລະອຽດ."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"ຕິດຕາມໃບໜ້າຂອງທ່ານ"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງຂໍ້ມູນການຕິດຕາມໃບໜ້າ."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"ຕິດຕາມມືຂອງທ່ານ"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງຂໍ້ມູນການຕິດຕາມມື."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"ຕິດຕາມຫົວຂອງທ່ານ"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງຂໍ້ມູນການຕິດຕາມຫົວ."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"ເຂົ້າໃຈສະພາບແວດລ້ອມທີ່ຢູ່ໃກ້ຕົວທ່ານ"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງຂໍ້ມູນການຕິດຕາມກ່ຽວກັບສະພາບແວດລ້ອມອ້ອມຕົວທ່ານໂດຍກົງ."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"ເຂົ້າໃຈສະພາບແວດລ້ອມທີ່ຢູ່ໃກ້ຕົວທ່ານແບບລາຍລະອຽດສູງ"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງຂໍ້ມູນການຕິດຕາມກ່ຽວກັບສະພາບແວດລ້ອມອ້ອມຕົວທ່ານໂດຍກົງທີ່ມີລາຍລະອຽດສູງຫຼາຍ."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ເຂົ້າເຖິງຂໍ້ມູນ XR ໃນລະຫວ່າງທີ່ບໍ່ໄດ້ເຮັດວຽກຢູ່ໃນເບື້ອງໜ້າ"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງຂໍ້ມູນ XR ໃນລະຫວ່າງທີ່ບໍ່ໄດ້ເຮັດວຽກຢູ່ໃນເບື້ອງໜ້າ."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ໃຊ້ລະບົບຊີວະມິຕິ"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ໃຊ້ລະບົບຊີວະມິຕິ ຫຼື ການລັອກໜ້າຈໍ"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"ຢັ້ງຢືນວ່າແມ່ນທ່ານ"</string>
@@ -1844,7 +1824,7 @@
<string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"ປ່ຽນ"</string>
<string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ການຕັ້ງຄ່າ"</string>
<string name="user_switched" msgid="7249833311585228097">"ຜູ່ໃຊ້ປັດຈຸບັນ <xliff:g id="NAME">%1$s</xliff:g> ."</string>
- <string name="user_switching_message" msgid="1912993630661332336">"ກຳລັງສະຫຼັບໄປຫາ<xliff:g id="NAME">%1$s</xliff:g>…"</string>
+ <string name="user_switching_message" msgid="1912993630661332336">"ກຳລັງສະຫຼັບໄປຫາ <xliff:g id="NAME">%1$s</xliff:g>…"</string>
<string name="user_logging_out_message" msgid="7216437629179710359">"ກຳລັງອອກຈາກລະບົບ <xliff:g id="NAME">%1$s</xliff:g>…"</string>
<string name="owner_name" msgid="8713560351570795743">"ເຈົ້າຂອງ"</string>
<string name="guest_name" msgid="8502103277839834324">"ແຂກ"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index b9303fa..57db157 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -355,14 +355,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"pasiekti jutiklių duomenis apie gyvybinius ženklus"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Pranešimai"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"rodyti pranešimus"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR stebėjimo duomenys"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"pasiekti XR duomenis apie jus ir aplinką"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"neskelbtini XR stebėjimo duomenys"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"pasiekti neskelbtinus stebėjimo duomenis, pvz., žvilgsnį"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Gauti lango turinį"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Tikrinti lango, su kuriuo sąveikaujate, turinį."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Įjungti „Naršyti paliečiant“"</string>
@@ -658,38 +654,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Programai leidžiama keisti nuotraukų kolekciją."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"skaityti vietoves iš medijos kolekcijos"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Programai leidžiama skaityti vietoves iš medijos kolekcijos."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"stebėti apytikslį žvilgsnį"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Leidžiama programai stebėti apytikslį žvilgsnį."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"stebėti, kur žiūrite"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Leidžiama programai pasiekti tikslius žvilgsnio duomenis."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"stebėti veidą"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Leidžiama programai pasiekti veido stebėjimo duomenis."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"stebėti rankas"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Leidžiama programai pasiekti rankų stebėjimo duomenis."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"stebėti galvos judesius"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Leidžiama programai pasiekti galvos stebėjimo duomenis."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"suprasti artimiausią aplinką"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Leidžiama programai pasiekti stebėjimo duomenis apie aplinką, esančią tiesiogiai aplink jus."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"suprasti artimiausią aplinką labai detaliai"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Leidžiama programai pasiekti labai išsamius stebėjimo duomenis apie aplinką, esančią tiesiogiai aplink jus."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"pasiekti XR duomenis, kai programa veikia ne priekiniame plane"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Leidžiama programai pasiekti XR duomenis, kai ji nėra priekiniame plane."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Naudoti biometrinius duomenis"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Naudoti biometrinius duomenis arba ekrano užraktą"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Patvirtinkite, kad tai jūs"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 3a1df4b..764e8c9 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"piekļūt sensoru datiem par jūsu veselības rādījumiem"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Paziņojumi"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"rādīt paziņojumus"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"PR izsekošanas dati"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"piekļūt PR datiem par jums un vidi ap jums"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"sensitīvi PR izsekošanas dati"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"piekļūt sensitīviem izsekošanas datiem, piemēram, acu kustībām"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Izgūt loga saturu."</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Skatīt tā loga saturu, ar kuru mijiedarbojaties."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Aktivizēt funkciju “Pārlūkot pieskaroties”."</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Ļauj lietotnei pārveidot jūsu fotoattēlu kolekciju."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"Lasīt atrašanās vietas no jūsu multivides kolekcijas"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Ļauj lietotnei lasīt atrašanās vietas no jūsu multivides kolekcijas."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"izsekot aptuvenām acu kustībām"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Ļauj lietotnei izsekot aptuvenām acu kustībām."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"izsekot, kur skatāties"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Ļauj lietotnei piekļūt precīziem acu kustību izsekošanas datiem."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"izsekot jūsu sejas kustībām"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Ļauj lietotnei piekļūt sejas kustību izsekošanas datiem."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"izsekot jūsu roku kustībām"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Ļauj lietotnei piekļūt roku kustību izsekošanas datiem."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"izsekot jūsu galvas kustībām"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Ļauj lietotnei piekļūt galvas kustību reģistrēšanas datiem."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"izprast jūsu tuvāko apkārtni"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Ļauj lietotnei piekļūt izsekošanas datiem par vidi tieši ap jums."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"detalizēti izprast jūsu tuvāko apkārtni"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Ļauj lietotnei piekļūt ļoti detalizētiem izsekošanas datiem par vidi tieši ap jums."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"piekļūt PR datiem, kamēr lietotne nedarbojas priekšplānā"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Ļauj lietotnei piekļūt PR datiem, kamēr lietotne nedarbojas priekšplānā."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrijas izmantošana"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrijas vai ekrāna bloķēšanas izmantošana"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Apstipriniet, ka tas esat jūs"</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index c6d51c7..4600935 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"пристапува до податоците од сензорите за виталните функции"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Известувања"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"да прикажува известувања"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-податоци за следење"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"да пристапува до XR-податоци за вас и околината околу вас"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"чувствителни XR-податоци за следење"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"да пристапува до чувствителни податоци за следење, како што е погледот"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"да ги вчитува содржините од прозорците"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"да ги проверува содржините од прозорецот што го користите"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"да вклучи „Истражувај со допир“"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Дозволува апликацијата да ја менува вашата збирка на фотографии."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"да чита локации од вашата збирка на аудиовизуелни содржини"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Дозволува апликацијата да чита локации од вашата збирка на аудиовизуелни содржини."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"да го следи вашиот приближен поглед"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Дозволува апликацијата да го следи вашиот приближен поглед."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"да следи каде гледате"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Дозволува апликацијата да пристапува до податоци за прецизен поглед."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"да го следи вашиот лик"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Дозволува апликацијата да пристапува до податоците за следење лик."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"да ги следи вашите раце"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Дозволува апликацијата да пристапува до податоците за следење на раце."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"да го следи вашето движење"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Дозволува апликацијата да пристапува до податоците за следење на движење."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"да ја разбере вашата непосредна околина"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Дозволува апликацијата да пристапува до податоците за следење на околината директно околу вас."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"да ја разбере вашата непосредна околина со многу детали"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Дозволува апликацијата да пристапува до податоците за следење на околината директно околу вас со многу детали."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"да пристапува до XR-податоци кога не е во преден план"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Дозволува апликацијата да пристапува до XR-податоците кога не е во преден план."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Користи биометрика"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Користи биометрика или заклучен екран"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Потврдете дека сте вие"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 17fa98b..d9ec167 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"നിങ്ങളുടെ ജീവാധാര ലക്ഷണങ്ങളെ കുറിച്ചുള്ള സെൻസർ വിവരങ്ങൾ ആക്സസ് ചെയ്യുക"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"അറിയിപ്പുകൾ"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"അറിയിപ്പുകൾ കാണിക്കുക"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ട്രാക്കിംഗ് ഡാറ്റ"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"നിങ്ങളെ കുറിച്ചും നിങ്ങളുടെ ചുറ്റുപാടുകളെകുറിച്ചുമുള്ള XR ഡാറ്റ ആക്സസ് ചെയ്യുക"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"സെൻസിറ്റീവ് XR ട്രാക്കിംഗ് ഡാറ്റ"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"നോട്ടം പോലുള്ള, സൂക്ഷ്മമായി കൈകാര്യം ചെയ്യേണ്ട ട്രാക്കിംഗ് ഡാറ്റ ആക്സസ് ചെയ്യുക"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"വിൻഡോ ഉള്ളടക്കം വീണ്ടെടുക്കുക"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"നിങ്ങൾ സംവദിക്കുന്ന ഒരു വിൻഡോയുടെ ഉള്ളടക്കം പരിശോധിക്കുക."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"സ്പർശനം വഴി പര്യവേക്ഷണം ചെയ്യുക, ഓണാക്കുക"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"നിങ്ങളുടെ ഫോട്ടോ ശേഖരം പരിഷ്ക്കരിക്കുന്നതിന് ആപ്പിനെ അനുവദിക്കുന്നു."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"നിങ്ങളുടെ മീഡിയ ശേഖരത്തിൽ നിന്നും ലൊക്കേഷനുകൾ റീഡ് ചെയ്യുക"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"നിങ്ങളുടെ മീഡിയ ശേഖരത്തിൽ നിന്നും ലൊക്കേഷനുകൾ റീഡ് ചെയ്യുന്നതിന് ആപ്പിനെ അനുവദിക്കുന്നു."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"നിങ്ങളുടെ നോട്ടത്തിന്റെ ഏകദേശ ഡാറ്റ ട്രാക്ക് ചെയ്യുക"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"നിങ്ങളുടെ നോട്ടത്തിന്റെ ഏകദേശ ഡാറ്റ ട്രാക്ക് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"നിങ്ങൾ എവിടേയ്ക്കാണ് നോക്കുന്നതെന്ന് ട്രാക്ക് ചെയ്യുക"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"നോട്ടത്തിന്റെ കൃത്യമായ ഡാറ്റ ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"നിങ്ങളുടെ മുഖം ട്രാക്ക് ചെയ്യുക"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"മുഖ ട്രാക്കിംഗ് ഡാറ്റ ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"നിങ്ങളുടെ കൈകൾ ട്രാക്ക് ചെയ്യുക"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"കൈചലനം ട്രാക്കിംഗ് ഡാറ്റ ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"നിങ്ങളുടെ തല ട്രാക്ക് ചെയ്യുക"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"തല ട്രാക്കിംഗ് ഡാറ്റ ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുക."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"നിങ്ങളുടെ ഏറ്റവുമടുത്തുള്ള ചുറ്റുപാടുകൾ മനസ്സിലാക്കുക"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"നിങ്ങളുടെ ചുറ്റുപാടുകളെക്കുറിച്ചുള്ള ട്രാക്കിംഗ് ഡാറ്റ നേരിട്ട് ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"നിങ്ങളുടെ ഏറ്റവുമടുത്തുള്ള ചുറ്റുപാടുകൾ വളരെ വിശദമായി മനസ്സിലാക്കുക"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"നിങ്ങളുടെ ചുറ്റുപാടുകളെക്കുറിച്ചുള്ള വളരെ വിശദമായ ട്രാക്കിംഗ് ഡാറ്റ നേരിട്ട് ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ഫോർഗ്രൗണ്ടിൽ ഇല്ലാത്തപ്പോൾ XR ഡാറ്റ ആക്സസ് ചെയ്യുക"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ഫോർഗ്രൗണ്ടിൽ ഇല്ലാത്തപ്പോൾ XR ഡാറ്റ ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ബയോമെട്രിക്സ് ഉപയോഗിക്കുക"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ബയോമെട്രിക്സ് അല്ലെങ്കിൽ സ്ക്രീൻ ലോക്ക് ഉപയോഗിക്കുക"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"ഇത് നിങ്ങളാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുക"</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index 48b2aa8..05f4f05 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"таны биеийн байдлын талаарх мэдрэгч бүхий өгөгдөлд нэвтрэх"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Мэдэгдэл"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"мэдэгдэл харуулах"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-н хяналтын өгөгдөл"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"таны болон таны орчны талаарх XR-н өгөгдөлд хандах"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"XR-н хяналтын эмзэг өгөгдөл"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"нүдний харц зэрэг хяналтын эмзэг өгөгдөлд хандах"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Цонхны агуулгыг авах"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Таны харилцан үйлчлэх цонхны контентоос шалгах."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Хүрэлтээр сонсохыг асаах"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Таны зургийн цуглуулгыг тохируулах зөвшөөрлийг аппад олгодог."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"медиа цуглуулгаасаа байршлыг унших"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Таны медиа цуглуулгаас байршлыг унших зөвшөөрлийг аппад олгодог."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"таны нүдний барагцаалсан харцыг хянах"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Аппад таны нүдний барагцаалсан харцыг хянахыг зөвшөөрнө."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"таны хаашаа харж байгааг хянах"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Аппад таны нүдний нарийвчилсан харцын өгөгдөлд хандахыг зөвшөөрнө."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"таны царайг хянах"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Аппад царай хяналтын өгөгдөлд хандахыг зөвшөөрнө."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"таны гарыг хянах"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Аппад гар хяналтын өгөгдөлд хандахыг зөвшөөрнө."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"таны толгойг хянах"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Аппад толгойн хяналтын өгөгдөлд хандахыг зөвшөөрнө."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"таны яг байгаа орчныг ойлгох"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Аппад таны яг байгаа орчны талаарх хяналтын өгөгдөлд хандахыг зөвшөөрнө."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"таны яг байгаа орчныг өндөр нарийвчлалтай ойлгох"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Аппад таны яг байгаа орчны талаарх маш өндөр нарийвчлалтай хяналтын өгөгдөлд хандахыг зөвшөөрнө."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"дэвсгэрт байхдаа XR-н өгөгдөлд хандах"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Аппад дэвсгэрт байхдаа XR-н өгөгдөлд хандахыг зөвшөөрнө."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Биометр ашиглах"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Биометр эсвэл дэлгэцийн түгжээ ашиглах"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Өөрийгөө мөн гэдгийг баталгаажуулаарай"</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 03400f2..df7688e 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"आपल्या महत्त्वाच्या मापनांविषयी सेन्सर डेटा अॅक्सेस करा"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"सूचना"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"सूचना दाखवा"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ट्रॅकिंग डेटा"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"तुमच्याबद्दल आणि तुमच्या सभोवतालच्या वातावरणाबद्दल XR डेटा अॅक्सेस करा"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"संवेदनशील XR ट्रॅकिंग डेटा"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"संवेदनशील ट्रॅकिंग डेटा अॅक्सेस करा, जसे की डोळ्यांची हालचाल"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"विंडोमधील आशय पुन्हा मिळवा"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"तुम्ही वापरत असलेल्या विंडोमधील आशय तपासा."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"स्पर्श करून अन्वेषण सुरू करा"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"ॲपला तुमच्या फोटो संग्रहामध्ये सुधारणा करण्याची अनुमती देते."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"तुमच्या मीडिया संग्रहातून स्थाने वाचा"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"ॲपला तुमच्या मीडिया संग्रहामध्येील स्थाने वाचण्यासाठी अनुमती देते."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"तुमच्या डोळ्यांची अंदाजे हालचाल ट्रॅक करा"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"अॅपला तुमच्या डोळ्यांची अंदाजे हालचाल ट्रॅक करण्याची अनुमती देते."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"तुम्ही कुठे पाहत आहात ते ट्रॅक करा"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"अॅपला तुमच्या डोळ्यांच्या अचूक हालचालीचा डेटा अॅक्सेस करण्याची अनुमती देते."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"तुमचा चेहरा ट्रॅक करा"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"अॅपला फेस ट्रॅकिंग डेटा अॅक्सेस करण्याची अनुमती देते."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"तुमचे हात ट्रॅक करा"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"अॅपला हँड ट्रॅकिंग डेटा अॅक्सेस करण्याची अनुमती देते."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"तुमचे डोके ट्रॅक करा"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"अॅपला हेड ट्रॅकिंग डेटा अॅक्सेस करण्याची अनुमती देते."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"तुमच्या आजूबाजूचे वातावरण समजून घ्या"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"तुमच्या सभोवतालच्या वातावरणाबद्दलचा ट्रॅकिंग डेटा अॅक्सेस करण्यासाठी अॅपला अनुमती देते."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"तुमच्या आजूबाजूचे वातावरण सविस्तरपणे समजून घ्या"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"अॅपला तुमच्या सभोवतालच्या वातावरणाबद्दलचा ट्रॅकिंग डेटा अत्यंत तपशिलवार अॅक्सेस करण्याची अनुमती देते."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"फोरग्राउंडमध्ये नसताना XR डेटा अॅक्सेस करा"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"फोरग्राउंडमध्ये नसतानाही अॅपला XR डेटा अॅक्सेस करण्याची अनुमती देते."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"बायोमेट्रिक वापरा"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"बायोमेट्रिक किंवा स्क्रीन लॉक वापरा"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"हे तुम्हीच आहात याची पडताळणी करा"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 889324c..7d77268 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"akses data penderia tentang tanda vital anda"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Pemberitahuan"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"tunjukkan pemberitahuan"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Data penjejakan XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"mengakses data XR tentang anda dan persekitaran di sekeliling anda"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"Data penjejakan XR sensitif"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"mengakses data penjejakan sensitif, seperti renungan mata"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Dapatkan kembali kandungan tetingkap"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Periksa kandungan tetingkap yang berinteraksi dengan anda."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Hidupkan Teroka melalui Sentuhan"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Membenarkan apl mengubah suai koleksi foto anda."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"baca lokasi daripada koleksi media anda"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Membenarkan apl membaca lokasi daripada koleksi media anda."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"Menjejaki anggaran renungan mata anda"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Membenarkan apl menjejaki anggaran renungan mata anda."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"menjejaki tempat yang anda lihat"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Membenarkan apl menjejaki data renungan mata yang tepat."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"menjejaki wajah anda"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Membenarkan apl mengakses data penjejakan wajah."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"menjejaki tangan anda"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Membenarkan apl mengakses data penjejakan tangan."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"menjejaki kepala anda"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Membenarkan apl mengakses data penjejakan kepala."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"memahami persekitaran berhampiran anda"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Membenarkan apl untuk mengakses data penjejakan tentang persekitaran secara langsung di sekeliling anda."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"memahami persekitaran berhampiran anda pada butiran yang tinggi"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Membenarkan apl mengakses data penjejakan tentang persekitaran secara langsung di sekeliling anda dengan butiran yang amat tinggi."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"mengakses data XR semasa tidak di latar depan"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Membenarkan apl mengakses data XR semasa tidak di latar depan."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Gunakan biometrik"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Gunakan biometrik atau kunci skrin"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Sahkan diri anda"</string>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 67f0841..b2b6011 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"သင်၏အရေးကြီးသော ကျန်းမာရေးလက္ခဏာဆိုင်ရာ အာရုံခံကိရိယာဒေတာကို ရယူရန်"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"အကြောင်းကြားချက်များ"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"အကြောင်းကြားချက်များ ပြနိုင်သည်"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ခြေရာခံခြင်းဒေတာ"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"သင်နှင့် သင့်ဘေးနားရှိ ပတ်ဝန်းကျင်အကြောင်း XR ဒေတာကို သုံးခွင့်"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"သတိထားရမည့် XR ခြေရာခံခြင်းဒေတာ"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"မျက်လုံးအကြည့်ကဲ့သို့သော သတိထားရမည့် ခြေရာခံခြင်းဒေတာကို သုံးခွင့်"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ဝင်းဒိုးတွင် ပါရှိသည်များကို ပြန်လည်ရယူရန်"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"သင်အသုံးပြုနေသော ဝင်းဒိုးတွင် ပါရှိသည်များကို ကြည့်ရှုစစ်ဆေးသည်။"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"တို့ထိခြင်းဖြင့် ရှာဖွေမှုကို ဖွင့်ရန်"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"အက်ပ်အား သင့်ဓာတ်ပုံစုစည်းမှုကို ပြုပြင်ခွင့်ပေးသည်။"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"သင့်မီဒီယာစုစည်းမှုမှ တည်နေရာများကို ဖတ်ခြင်း"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"အက်ပ်အား သင့်မီဒီယာစုစည်းမှုမှ တည်နေရာများကို ဖတ်ခွင့်ပေးသည်။"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ခန့်မှန်းခြေ မျက်လုံးအကြည့်ကို စောင့်ကြည့်ခြင်း"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"သင်၏ ခန့်မှန်းခြေမျက်လုံးအကြည့်ကို အက်ပ်အား စောင့်ကြည့်ခွင့်ပြုသည်။"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"သင်ကြည့်နေသည့်နေရာကို စောင့်ကြည့်ခြင်း"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"တိကျသော မျက်လုံးအကြည့်ဒေတာကို အက်ပ်အား သုံးခွင့်ပြုသည်။"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"သင့်မျက်နှာကို စောင့်ကြည့်ခြင်း"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"မျက်နှာခြေရာခံခြင်းဒေတာကို အက်ပ်အား သုံးခွင့်ပြုသည်။"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"သင့်လက်များကို စောင့်ကြည့်ခြင်း"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"လက်ဟန်ခြေရာခံခြင်းဒေတာကို အက်ပ်အား သုံးခွင့်ပြုသည်။"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"သင့်ခေါင်းကို စောင့်ကြည့်ခြင်း"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ဦးခေါင်းလှုပ်ရှားမှု မှတ်သားခြင်းဒေတာကို အက်ပ်အား သုံးခွင့်ပြုသည်။"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"သင့်အနီးဆုံးပတ်ဝန်းကျင်ကို နားလည်ခြင်း"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"သင့်ဘေးနားရှိ ပတ်ဝန်းကျင်အကြောင်း ခြေရာခံခြင်းဒေတာကို အက်ပ်အား သုံးခွင့်ပြုသည်။"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"သင့်အနီးဆုံးပတ်ဝန်းကျင်၏ အတွင်းကျကျအသေးစိတ်ကို နားလည်ခြင်း"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"သင့်ဘေးနားရှိ ပတ်ဝန်းကျင်အကြောင်း အတွင်းကျကျအသေးစိတ် ခြေရာခံခြင်းဒေတာကို အက်ပ်အား သုံးခွင့်ပြုသည်။"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"မျက်နှာစာတွင် ဖွင့်မထားချိန်၌ XR ဒေတာကို သုံးခွင့်"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"မျက်နှာစာတွင် ဖွင့်မထားချိန်၌ XR ဒေတာကို အက်ပ်အား သုံးခွင့်ပြုသည်။"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ဇီဝမက်ထရစ်အချက်အလက်များ သုံးခြင်း"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ဇီဝမက်ထရစ်အချက်အလက်များ (သို့) ဖန်သားပြင်လော့ခ်ချခြင်းကို သုံးခြင်း"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"သင်ဖြစ်ကြောင်း အတည်ပြုပါ"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 44458ba..3022fca 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"få tilgang til sensordata om de vitale tegnene dine"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Varsler"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"vise varsler"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-sporingsdata"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"lese XR-data om deg og omgivelsene dine"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"sensitive XR-sporingsdata"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"lese sensitive sporingsdata, for eksempel øyebevegelser"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"hente innhold i vinduer"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Appen analyserer innholdet i vinduer du samhandler med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"slå på berøringsutforsking"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Lar appen gjøre endringer i bildesamlingen din."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"lese posisjoner fra mediesamlingen din"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Lar appen lese posisjoner fra mediesamlingen din."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"spore omtrentlige øyebevegelser"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Lar appen spore de omtrentlige øyebevegelsene dine."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"spore hvor du ser"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Gir appen tilgang til nøyaktige data om øyebevegelser."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"spore ansiktet ditt"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Gir appen tilgang til data for ansiktssporing."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"spore hendene dine"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Gir appen tilgang til data for håndsporing."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"spore hodet ditt"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Gir appen tilgang til data for hodesporing."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"forstå omgivelsene like rundt deg"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Gir appen tilgang til sporingsdata om omgivelsene like rundt deg."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"forstå omgivelsene like rundt deg med høyt detaljnivå"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Gir appen tilgang til sporingsdata om omgivelsene like rundt deg med svært høyt detaljnivå."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"bruke XR-data når appen ikke er i forgrunnen"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Gir appen tilgang til XR-data når den ikke er i forgrunnen."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Bruk biometri"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Bruk biometri eller skjermlås"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Bekreft at det er deg"</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 2591a15..93ead6d 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"तपाईंको महत्त्वपूर्ण संकेत बारे सेन्सर डेटा पहुँच गर्नुहोस्"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"नोटिफिकेसनहरू"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"सूचनाहरू देखाउनुहोस्"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR सम्बन्धी ट्रयाकिङ डेटा"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"तपाईं र तपाईंको वरपरको वातावरणका बारेमा XR सम्बन्धी डेटा एक्सेस गर्ने"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"XR सम्बन्धी संवेदनशील ट्रयाकिङ डेटा"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"संवेदनशील ट्रयाकिङ डेटा (जस्तै, आँखाको गतिविधि) एक्सेस गर्ने"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"विन्डो सामग्रीको पुनःबहाली गर्नुहोस्।"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"तपाईँको अन्तरक्रिया भइरहेको विन्डोको सामग्रीको निरीक्षण गर्नुहोस्।"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"छोएर गरिने खोजलाई सुचारु गर्नुहोस्"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"यसले एपलाई तपाईंको तस्बिरको सङ्ग्रह परिमार्जन गर्न दिन्छ।"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"आफ्नो मिडियाको सङ्ग्रहका स्थानहरू पढ्नुहोस्"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"यसले एपलाई तपाईंको मिडिया सङ्ग्रहका स्थानहरू पढ्न दिन्छ।"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"तपाईंको आँखाको गतिविधिसम्बन्धी अनुमानित डेटा ट्रयाक गर्ने"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"तपाईंले यो अनुमति दिनुभयो भने यो एपले तपाईंको आँखाको गतिविधिसम्बन्धी अनुमानित डेटा ट्रयाक गर्न सक्छ।"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"तपाईं कहाँ हेरिरहनुभएको छ भन्ने कुरा ट्रयाक गर्ने"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"तपाईंले यो अनुमति दिनुभयो भने यो एपले आँखाको गतिविधिसम्बन्धी सटीक डेटा एक्सेस गर्न सक्छ।"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"तपाईंको अनुहार ट्रयाक गर्ने"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"तपाईंले यो अनुमति दिनुभयो भने यो एपले फेस ट्रयाकिङ डेटा एक्सेस गर्न सक्छ।"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"तपाईंका हातहरू ट्र्याक गर्ने"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"तपाईंले यो अनुमति दिनुभयो भने यो एपले ह्यान्ड ट्र्याकिङ डेटा एक्सेस गर्न सक्छ।"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"तपाईंको टाउको ट्रयाक गर्ने"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"तपाईंले यो अनुमति दिनुभयो भने यो एपले हेड ट्रयाकिङ डेटा एक्सेस गर्न सक्छ।"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"तपाईंको वरपरको वातावरणका बारेमा बुझ्ने"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"तपाईंले यो अनुमति दिनुभयो भने यो एपले तपाईंको वरपरको वातावरणसम्बन्धी ट्रयाकिङ डेटा एक्सेस गर्न सक्छ।"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"तपाईंको वरपरको वातावरणका ससाना विवरणहरू पनि बुझ्ने"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"तपाईंले यो अनुमति दिनुभयो भने यो एपले तपाईंको वरपरको वातावरणका बारेमा ससाना विवरणहरू समावेश गरिएको ट्रयाकिङ डेटा एक्सेस गर्न सक्छ।"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"फोरग्राउन्डमा नचलिरहेका बेला XR सम्बन्धी डेटा एक्सेस गर्ने"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"तपाईंले यो अनुमति दिनुभयो भने यो एप फोरग्राउन्डमा नचलिरहेका बेला पनि यो एपले XR सम्बन्धी डेटा एक्सेस गर्न सक्छ।"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"बायोमेट्रिक्स प्रयोग गर्नुहोस्"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"बायोमेट्रिक्स वा स्क्रिन लक प्रयोग गर्नुहोस्"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"यो व्यक्ति तपाईं नै हो भन्ने प्रमाणित गर्नुहोस्"</string>
@@ -1091,7 +1071,7 @@
<string name="lockscreen_glogin_too_many_attempts" msgid="3775904917743034195">"निकै धेरै कोसिसहरू"</string>
<string name="lockscreen_glogin_instructions" msgid="4695162942525531700">"अनलक गर्नको लागि, तपाईँको Google खातासँग साइन इन गर्नुहोस्।"</string>
<string name="lockscreen_glogin_username_hint" msgid="6916101478673157045">"प्रयोगकर्तानाम (इमेल)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="3031027901286812848">"पासवर्ड:"</string>
+ <string name="lockscreen_glogin_password_hint" msgid="3031027901286812848">"पासवर्ड"</string>
<string name="lockscreen_glogin_submit_button" msgid="3590556636347843733">"साइन इन गर्नुहोस्"</string>
<string name="lockscreen_glogin_invalid_input" msgid="4369219936865697679">"अमान्य प्रयोगकर्तानाम वा पासवर्ड"</string>
<string name="lockscreen_glogin_account_recovery_hint" msgid="1683405808525090649">"तपाईँको एक-पटके टेक्स्ट म्यासेज वा पासवर्ड बिर्सनुभयो?\n भ्रमण गर्नुहोस"<b>"google.com/accounts/recovery"</b></string>
@@ -1844,7 +1824,7 @@
<string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"बदल्नुहोस्"</string>
<string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"सेटिङ"</string>
<string name="user_switched" msgid="7249833311585228097">"अहिलेको प्रयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>।"</string>
- <string name="user_switching_message" msgid="1912993630661332336">"स्विच गरेर <xliff:g id="NAME">%1$s</xliff:g> बनाइँदै..."</string>
+ <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> मा स्विच गरिँदै छ…"</string>
<string name="user_logging_out_message" msgid="7216437629179710359">"लग आउट गर्दै <xliff:g id="NAME">%1$s</xliff:g>…"</string>
<string name="owner_name" msgid="8713560351570795743">"मालिक"</string>
<string name="guest_name" msgid="8502103277839834324">"अतिथि"</string>
diff --git a/core/res/res/values-night/colors.xml b/core/res/res/values-night/colors.xml
index 7b9b2d6..e19ee23 100644
--- a/core/res/res/values-night/colors.xml
+++ b/core/res/res/values-night/colors.xml
@@ -50,6 +50,8 @@
<!-- Color for various surfaces related to system-wide blur -->
<color name="surface_effect_0">@color/surface_effect_0_color</color>
<color name="surface_effect_1">@color/surface_effect_1_color</color>
+ <color name="surface_effect_2">@color/surface_effect_2_color</color>
+ <color name="surface_effect_3">@color/surface_effect_3_color</color>
<!-- Color for side fps toast dark theme-->
<color name="side_fps_toast_background">#2E3132</color>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index bbdc1bb..fc12906 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"toegang krijgen tot sensorgegevens over je vitale functies"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Meldingen"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"meldingen tonen"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-trackinggegevens"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"toegang tot XR-gegevens over jou en de omgeving om je heen"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"gevoelige XR-trackinggegevens"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"toegang tot gevoelige trackinggegevens, zoals oogbewegingen"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Content van vensters ophalen"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"De content inspecteren van een venster waarmee je interactie hebt."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Verkennen via aanraking aanzetten"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Hiermee sta je de app toe je fotocollectie aan te passen."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"locaties van je mediacollecties bekijken"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Hiermee sta je de app toe locaties van je mediacollectie te bekijken."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"je oogbewegingen bij benadering volgen"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Hiermee kan de app je oogbewegingen bij benadering volgen."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"volgen waar je naar kijkt"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Hiermee kan de app toegang krijgen tot nauwkeurige gegevens voor oogbewegingen."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"je gezicht volgen"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Hiermee kan de app toegang krijgen tot gegevens voor gezichtstracking."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"je handen volgen"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Hiermee kan de app toegang krijgen tot gegevens voor handtracking."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"je hoofd volgen"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Hiermee kan de app toegang krijgen tot gegevens voor hoofdtracking."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"je directe omgeving begrijpen"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Hiermee kan de app toegang krijgen tot trackinggegevens over de omgeving direct om je heen."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"je directe omgeving begrijpen met veel details"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Hiermee kan de app toegang krijgen tot trackinggegevens over de omgeving direct om je heen met veel details."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"toegang tot XR-gegevens terwijl de app niet op de voorgrond wordt gebruikt"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Hiermee kan de app toegang krijgen tot XR-gegevens terwijl de app niet op de voorgrond wordt gebruikt."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrische gegevens gebruiken"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrische gegevens of schermvergrendeling gebruiken"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Je identiteit bevestigen"</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index a1b24eb..3200f40 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"ଆପଣଙ୍କ ଗୁରୁତପୂର୍ଣ୍ଣ ସଂକେତଗୁଡ଼ିକ ବିଷୟରେ ସେନ୍ସର୍ ଡାଟା ଆକ୍ସେସ୍ କରେ"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ଦେଖାନ୍ତୁ"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ଟ୍ରାକିଂ ଡାଟା"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"ଆପଣଙ୍କ ଚାରିପାଖର ପରିବେଶ ଏବଂ ଆପଣଙ୍କ ବିଷୟରେ XR ଡାଟା ଆକ୍ସେସ କରନ୍ତୁ"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"ସମ୍ବେଦନଶୀଳ XR ଟ୍ରାକିଂ ଡାଟା"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"ସମ୍ବେଦନଶୀଳ ଟ୍ରାକିଂ ଡାଟା ଆକ୍ସେସ କରନ୍ତୁ, ଯେପରି କି ଆଇ ଗେଜ"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ୱିଣ୍ଡୋ କଣ୍ଟେଣ୍ଟ ହାସଲ କରନ୍ତୁ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ଆପଣ କାମ କରୁଥିବା ୱିଣ୍ଡୋର କଣ୍ଟେଣ୍ଟକୁ ଯାଞ୍ଚ କରନ୍ତୁ।"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ସ୍ପର୍ଶ ଦ୍ୱାରା ଏକ୍ସପ୍ଲୋର୍ ଅନ୍ କରନ୍ତୁ"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"ଆପଣଙ୍କ ଫଟୋ ସଂଗ୍ରହ ପରିବର୍ତ୍ତନ କରିବାକୁ ଆପ୍ ଅନୁମତି ଦେଇଥାଏ।"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ଆପଣଙ୍କ ମିଡିଆ ସଂଗ୍ରହ ଠାରୁ ଲୋକେସନ୍ଗୁଡିକୁ ପଢନ୍ତୁ"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"ଆପଣଙ୍କ ମିଡିଆ ସଂଗ୍ରହ ଠାରୁ ଅବସ୍ଥାନଗୁଡିକୁ ପଢିବାକୁ ଆପ୍ ଅନୁମତି ଦେଇଥାଏ।"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ଆପଣଙ୍କର ଆନୁମାନିକ ଆଇ ଗେଜ ଟ୍ରାକ କରନ୍ତୁ"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"ଆପଣଙ୍କର ଆନୁମାନିକ ଆଇ ଗେଜ ଟ୍ରାକ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"ଆପଣ କେଉଁଠିକୁ ଦେଖୁଛନ୍ତି ତାହା ଟ୍ରାକ କରନ୍ତୁ"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"ଆପଣଙ୍କର ସଠିକ ଆଇ ଗେଜ ଡାଟା ଆକ୍ସେସ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"ଆପଣଙ୍କର ମୁହଁକୁ ଟ୍ରାକ କରନ୍ତୁ"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"ଫେସ ଟ୍ରାକିଂ ଡାଟା ଆକ୍ସେସ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"ଆପଣଙ୍କର ହାତକୁ ଟ୍ରାକ କରନ୍ତୁ"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"ହେଣ୍ଡ ଟ୍ରାକିଂ ଡାଟା ଆକ୍ସେସ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"ଆପଣଙ୍କର ମୁଣ୍ଡକୁ ଟ୍ରାକ କରନ୍ତୁ"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ହେଡ ଟ୍ରାକିଂ ଡାଟା ଆକ୍ସେସ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"ଆପଣଙ୍କର ଅତିନିକଟର ପରିବେଶ ବିଷୟରେ ବୁଝନ୍ତୁ"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"ଆପଣଙ୍କ ଚାରିପାଖର ପରିବେଶ ବିଷୟରେ ଟ୍ରାକିଂ ଡାଟା ଆକ୍ସେସ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"ଅଧିକ ବିବରଣୀ ସହ ଆପଣଙ୍କର ଅତିନିକଟର ପରିବେଶ ବିଷୟରେ ବୁଝନ୍ତୁ"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"ବହୁତ ଅଧିକ ସହ ଆପଣଙ୍କ ଚାରିପାଖର ପରିବେଶ ବିଷୟରେ ଟ୍ରାକିଂ ଡାଟା ଆକ୍ସେସ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ଫୋରଗ୍ରାଉଣ୍ଡରେ ନଥିବା ବେଳେ XR ଡାଟା ଆକ୍ସେସ କରନ୍ତୁ"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ଫୋରଗ୍ରାଉଣ୍ଡରେ ନଥିବା ବେଳେ XR ଡାଟା ଆକ୍ସେସ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ବାୟୋମେଟ୍ରିକ୍ସ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ବାୟୋମେଟ୍ରିକ୍ସ ବା ସ୍କ୍ରିନ୍ ଲକ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"ଏହା ଆପଣ ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ"</string>
@@ -1246,7 +1226,7 @@
<string name="delete" msgid="1514113991712129054">"ଡିଲିଟ କରନ୍ତୁ"</string>
<string name="copyUrl" msgid="6229645005987260230">"URL କପି କରନ୍ତୁ"</string>
<string name="selectTextMode" msgid="3225108910999318778">"ଟେକ୍ସଟ୍ ଚୟନ କରନ୍ତୁ"</string>
- <string name="undo" msgid="3175318090002654673">"ପୂର୍ବ ପରି କରନ୍ତୁ"</string>
+ <string name="undo" msgid="3175318090002654673">"ଅନଡୁ କରନ୍ତୁ"</string>
<string name="redo" msgid="7231448494008532233">"ପୁଣି କରନ୍ତୁ"</string>
<string name="autofill" msgid="511224882647795296">"ଅଟୋଫିଲ୍"</string>
<string name="textSelectionCABTitle" msgid="5151441579532476940">"ଟେକ୍ସଟ୍ ଚୟନ"</string>
@@ -1844,7 +1824,7 @@
<string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"ସୁଇଚ କରନ୍ତୁ"</string>
<string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ସେଟିଂସ"</string>
<string name="user_switched" msgid="7249833311585228097">"ବର୍ତ୍ତମାନର ୟୁଜର୍ ହେଉଛନ୍ତି <xliff:g id="NAME">%1$s</xliff:g>।"</string>
- <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>ରେ ସ୍ୱିଚ କରନ୍ତୁ…"</string>
+ <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>ରେ ସୁଇଚ ହେଉଛି…"</string>
<string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>ଙ୍କୁ ଲଗଆଉଟ୍ କରାଯାଉଛି…"</string>
<string name="owner_name" msgid="8713560351570795743">"ମାଲିକ"</string>
<string name="guest_name" msgid="8502103277839834324">"ଅତିଥି"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 70dcd66..cee65af 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"ਆਪਣੇ ਸਰੀਰ ਦੇ ਅਹਿਮ ਚਿੰਨ੍ਹਾਂ ਬਾਰੇ ਸੰਵੇਦਕ ਡਾਟਾ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"ਸੂਚਨਾਵਾਂ"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"ਸੂਚਨਾਵਾਂ ਦਿਖਾਓ"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ਟਰੈਕਿੰਗ ਡਾਟਾ"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"ਆਪਣੇ ਅਤੇ ਆਪਣੇ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਵਾਤਾਵਰਨ ਬਾਰੇ XR ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"ਸੰਵੇਦਨਸ਼ੀਲ XR ਟਰੈਕਿੰਗ ਡਾਟਾ"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"ਸੰਵੇਦਨਸ਼ੀਲ ਟਰੈਕਿੰਗ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰੋ, ਜਿਵੇਂ ਕਿ ਅੱਖਾਂ ਦੀ ਹਲਚਲ"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ਵਿੰਡੋ ਸਮੱਗਰੀ ਮੁੜ-ਪ੍ਰਾਪਤ ਕਰਨਾ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ਉਸ ਵਿੰਡੋ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰੋ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਅੰਤਰਕਿਰਿਆ ਕਰ ਰਹੇ ਹੋ"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"\'ਸਪੱਰਸ਼ ਰਾਹੀਂ ਪੜਚੋਲ ਕਰੋ\' ਚਾਲੂ ਕਰਨਾ"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"ਐਪ ਨੂੰ ਤੁਹਾਡੇ ਫ਼ੋਟੋ ਸੰਗ੍ਰਹਿ ਨੂੰ ਸੋਧਣ ਦਿੰਦੀ ਹੈ।"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ਤੁਹਾਡੇ ਮੀਡੀਆ ਸੰਗ੍ਰਹਿ ਦੇ ਟਿਕਾਣਿਆਂ ਨੂੰ ਪੜ੍ਹਨਾ"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"ਐਪ ਨੂੰ ਤੁਹਾਡੇ ਮੀਡੀਆ ਸੰਗ੍ਰਹਿ ਦੇ ਟਿਕਾਣਿਆਂ ਨੂੰ ਪੜ੍ਹਨ ਦਿੰਦੀ ਹੈ।"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ਆਪਣੀ ਅੰਦਾਜ਼ਨ ਅੱਖਾਂ ਦੀ ਹਲਚਲ ਨੂੰ ਟਰੈਕ ਕਰੋ"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"ਇਸ ਨਾਲ ਐਪ ਨੂੰ ਤੁਹਾਡੀਆਂ ਅੱਖਾਂ ਦੀ ਹਲਚਲ ਨੂੰ ਟਰੈਕ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"ਇਹ ਟਰੈਕ ਕਰੋ ਕਿ ਤੁਸੀਂ ਕਿੱਥੇ ਦੇਖ ਰਹੇ ਹੋ"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"ਇਸ ਨਾਲ ਐਪ ਨੂੰ ਤੁਹਾਡੀਆਂ ਅੱਖਾਂ ਦੀ ਹਲਚਲ ਦੇ ਸਟੀਕ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"ਆਪਣੇ ਚਿਹਰੇ ਨੂੰ ਟਰੈਕ ਕਰੋ"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"ਇਸ ਨਾਲ ਐਪ ਨੂੰ ਚਿਹਰਾ ਟਰੈਕਿੰਗ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"ਆਪਣੇ ਹੱਥਾਂ ਨੂੰ ਟਰੈਕ ਕਰੋ"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"ਇਸ ਨਾਲ ਐਪ ਨੂੰ ਹੱਥ ਟਰੈਕਿੰਗ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"ਆਪਣੇ ਸਿਰ ਨੂੰ ਟਰੈਕ ਕਰੋ"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ਇਸ ਨਾਲ ਐਪ ਨੂੰ ਹੈੱਡ ਟਰੈਕਿੰਗ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"ਆਪਣੇ ਮੌਜੂਦਾ ਵਾਤਾਵਰਨ ਨੂੰ ਸਮਝੋ"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"ਇਸ ਨਾਲ ਐਪ ਨੂੰ ਤੁਹਾਡੇ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਵਾਤਾਵਰਨ ਦੇ ਟਰੈਕਿੰਗ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"ਆਪਣੇ ਮੌਜੂਦਾ ਵਾਤਾਵਰਨ ਨੂੰ ਬਰੀਕੀ ਨਾਲ ਸਮਝੋ"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"ਇਸ ਨਾਲ ਐਪ ਨੂੰ ਤੁਹਾਡੇ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਵਾਤਾਵਰਨ ਬਾਰੇ ਬਰੀਕੀ ਨਾਲ ਟਰੈਕਿੰਗ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ਫੋਰਗ੍ਰਾਊਂਡ ਸੇਵਾ ਨਾ ਹੋਣ \'ਤੇ ਵੀ XR ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ਇਸ ਨਾਲ ਐਪ ਨੂੰ XR ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ, ਭਾਵੇਂ ਉਸ ਵਿੱਚ ਫੋਰਗ੍ਰਾਊਂਡ ਸੇਵਾ ਨਾ ਹੋਵੇ।"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ਬਾਇਓਮੈਟ੍ਰਿਕ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ਬਾਇਓਮੈਟ੍ਰਿਕ ਜਾਂ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index c92c2bb..0c6eb46 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -355,14 +355,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"dostęp do danych czujnika podstawowych funkcji życiowych"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Powiadomienia"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"pokazuj powiadomienia"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"dane śledzenia XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"dostęp do danych XR dotyczących Ciebie i Twojego otoczenia"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"wrażliwe dane śledzenia XR"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"dostęp do wrażliwych danych śledzenia, takich jak ruchy gałek ocznych"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Pobieranie zawartości okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Sprawdzanie zawartości okna, z którego korzystasz."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Włączenie czytania dotykiem"</string>
@@ -658,38 +654,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Zezwala aplikacji na modyfikowanie kolekcji zdjęć."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"odczytywanie lokalizacji z kolekcji multimediów"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Zezwala aplikacji na odczytywanie lokalizacji z kolekcji multimediów."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"śledzenie przybliżonych ruchów gałek ocznych"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Zezwala aplikacji na śledzenie przybliżonych ruchów gałek ocznych."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"śledzenie punktu skupienia wzroku"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Zezwala aplikacji na dostęp do dokładnych danych o ruchach gałek ocznych."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"śledzenie twarzy"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Zezwala aplikacji na dostęp do danych śledzenia twarzy."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"śledzenie rąk"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Zezwala aplikacji na dostęp do danych śledzenia rąk."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"śledzenie ruchów głowy"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Zezwala aplikacji na dostęp do danych śledzenia ruchów głowy."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"analizowanie bliskiego otoczenia"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Zezwala aplikacji na dostęp do danych śledzenia bliskiego otoczenia."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"bardzo szczegółowe analizowanie bliskiego otoczenia"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Zezwala aplikacji na dostęp do bardzo szczegółowych danych śledzenia bliskiego otoczenia."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"dostęp do danych XR, gdy aplikacja nie jest na pierwszym planie"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Zezwala aplikacji na dostęp do danych XR, gdy nie jest ona na pierwszym planie."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Używaj biometrii"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Używaj biometrii lub blokady ekranu"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Potwierdź, że to Ty"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 99c4375..4fe1c96 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"acesse dados do sensor sobre seus sinais vitais"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificações"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificações"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Dados de rastreamento de XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"acessar dados de XR sobre você e o ambiente ao seu redor"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"dados de rastreamento sensíveis de XR"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"acessar dados de rastreamento sensíveis, como o olhar"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Acessar conteúdo de uma janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspeciona o conteúdo de uma janela com a qual você está interagindo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ativar Explorar por toque"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que o app modifique sua coleção de fotos."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ler locais na sua coleção de mídias"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que o app leia os locais na sua coleção de mídias."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"rastrear seu olhar aproximado"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Permite que o app rastreie seu olhar aproximado."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"rastrear para onde você está olhando"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Permite que o app acesse dados precisos de olhar."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"rastrear seu rosto"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Permite que o app acesse dados de rastreamento do rosto."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"rastrear suas mãos"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Permite que o app acesse dados de rastreamento das mãos."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"rastrear sua cabeça"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Permite que o app acesse dados de rastreamento da cabeça."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"entender o ambiente diretamente ao seu redor"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Permite que o app acesse dados de rastreamento sobre o ambiente diretamente ao seu redor."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"entender o ambiente diretamente ao seu redor com riqueza de detalhes"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Permite que o app acesse dados de rastreamento sobre o ambiente diretamente ao seu redor com riqueza de detalhes."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"acessar dados de XR sem estar em primeiro plano"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Permite que o app acesse dados de XR sem estar em primeiro plano."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar biometria"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar biometria ou bloqueio de tela"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirme que é você"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index a453546..e17b96f 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"aceder a dados do sensor acerca dos seus sinais vitais"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificações"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificações"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"dados de monitorização de XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"aceder a dados de XR sobre si e o ambiente à sua volta"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"dados de monitoriz. de XR confidenciais"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"aceder a dados de monitorização confidenciais, como o olhar"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Obter conteúdo da janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecionar o conteúdo de uma janela com a qual está a interagir."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ativar Explorar Através do Toque"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que a app modifique a sua coleção de fotos."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ler as localizações a partir da sua coleção de multimédia"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que a app leia as localizações a partir da sua coleção de multimédia."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"monitorizar o seu olhar aproximado"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Permite que a app monitorize o seu olhar aproximado."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"monitorizar para onde está a olhar"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Permite que a app aceda a dados precisos do olhar."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"monitorizar o seu rosto"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Permite que a app aceda a dados de monitorização facial."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"monitorizar as suas mãos"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Permite que a app aceda a dados de monitorização das mãos."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"monitorizar a sua cabeça"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Permite que a app aceda a dados de posição da cabeça."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"compreender o seu ambiente imediato"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Permite que a app aceda a dados de monitorização sobre o ambiente diretamente à sua volta."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"compreender o seu ambiente imediato com grande detalhe"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Permite que a app aceda a dados de monitorização sobre o ambiente diretamente à sua volta com detalhes muito precisos."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"aceder aos dados de XR quando não estiver em primeiro plano"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Permite que app aceda a dados de XR quando não está em primeiro plano."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar a biometria"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar a biometria ou o bloqueio de ecrã"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirme a sua identidade"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 99c4375..4fe1c96 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"acesse dados do sensor sobre seus sinais vitais"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificações"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificações"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Dados de rastreamento de XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"acessar dados de XR sobre você e o ambiente ao seu redor"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"dados de rastreamento sensíveis de XR"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"acessar dados de rastreamento sensíveis, como o olhar"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Acessar conteúdo de uma janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspeciona o conteúdo de uma janela com a qual você está interagindo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ativar Explorar por toque"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que o app modifique sua coleção de fotos."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ler locais na sua coleção de mídias"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que o app leia os locais na sua coleção de mídias."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"rastrear seu olhar aproximado"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Permite que o app rastreie seu olhar aproximado."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"rastrear para onde você está olhando"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Permite que o app acesse dados precisos de olhar."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"rastrear seu rosto"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Permite que o app acesse dados de rastreamento do rosto."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"rastrear suas mãos"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Permite que o app acesse dados de rastreamento das mãos."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"rastrear sua cabeça"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Permite que o app acesse dados de rastreamento da cabeça."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"entender o ambiente diretamente ao seu redor"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Permite que o app acesse dados de rastreamento sobre o ambiente diretamente ao seu redor."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"entender o ambiente diretamente ao seu redor com riqueza de detalhes"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Permite que o app acesse dados de rastreamento sobre o ambiente diretamente ao seu redor com riqueza de detalhes."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"acessar dados de XR sem estar em primeiro plano"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Permite que o app acesse dados de XR sem estar em primeiro plano."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar biometria"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar biometria ou bloqueio de tela"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirme que é você"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 28728b5..596a3ed 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"să acceseze datele de la senzori despre semnele vitale"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificări"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"să afișeze notificări"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Date de urmărire XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"să acceseze date XR despre tine și mediul din jur;"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"date de urmărire XR sensibile;"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"să acceseze date de urmărire sensibile, cum ar fi privirea;"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"să preia conținutul ferestrei"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspectează conținutul unei ferestre cu care interacționezi."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"să activeze funcția Explorează prin atingere"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite aplicației să-ți modifice colecția de fotografii."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"să citească locațiile din colecția media"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite aplicației să citească locațiile din colecția ta media."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"să-ți urmărească privirea aproximativă;"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Permite aplicației să-ți urmărească privirea aproximativă."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"să urmărească unde te uiți;"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Permite aplicației să acceseze date exacte despre privire."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"să-ți urmărească fața;"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Permite aplicației să acceseze date de urmărire a feței."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"să-ți urmărească mâinile;"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Permite aplicației să acceseze date de urmărire a mâinilor."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"să-ți urmărească mișcările capului;"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Permite aplicației să acceseze date de urmărire a mișcărilor capului."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"să înțeleagă mediul imediat apropiat;"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Permite aplicației să acceseze date de urmărire despre mediul din jurul tău."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"să înțeleagă mediul imediat apropiat în detaliu;"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Permite aplicației să acceseze date de urmărire despre mediul din jurul tău, cu detalii foarte precise."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"să acceseze date XR când nu ești în prim-plan;"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Permite aplicației să acceseze datele XR când nu ești în prim-plan."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Folosește sistemele biometrice"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Folosește sistemele biometrice sau blocarea ecranului"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirmă-ți identitatea"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index f587a73..5104ca1 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -355,14 +355,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"доступ к данным датчиков о состоянии организма"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Уведомления"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"показ уведомлений"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"данные XR для отслеживания"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"доступ к данным расширенной реальности с информацией о вас и окружающей обстановке"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"конфиденц. данные XR для отслеживания"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"доступ к конфиденциальным данным для отслеживания, например направления взгляда"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Получать содержимое окна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Анализировать содержимое активного окна."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Включать Изучение касанием"</string>
@@ -658,38 +654,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Приложение сможет вносить изменения в вашу фотоколлекцию."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"Доступ к геоданным в медиаколлекции"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Приложение получит доступ к геоданным в вашей медиаколлекции."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"отслеживание примерного направления взгляда"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Приложение сможет отслеживать примерное направление взгляда."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"отслеживание направления взгляда"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Приложение получит доступ к точным данным о направлении взгляда."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"отслеживание лица"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Приложение получит доступ к данным для отслеживания лица."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"отслеживание рук"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Приложение получит доступ к данным для отслеживания рук."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"отслеживание движения головы"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Приложение получит доступ к данным для отслеживания движений головы."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"понимание обстановки вокруг вас"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Приложение получит доступ к данным для отслеживания обстановки вокруг вас."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"глубокое понимание обстановки вокруг вас"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Приложение получит доступ к подробным данным для отслеживания обстановки вокруг вас."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"доступ к данным XR в фоновом режиме"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Приложение получит доступ к данным расширенной реальности в фоновом режиме."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Использовать биометрию"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Использовать биометрию или блокировку экрана"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Подтвердите, что это вы"</string>
@@ -2302,7 +2282,7 @@
<string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Групповой чат"</string>
<string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
<string name="resolver_personal_tab" msgid="2051260504014442073">"Личный"</string>
- <string name="resolver_work_tab" msgid="2690019516263167035">"Рабочее"</string>
+ <string name="resolver_work_tab" msgid="2690019516263167035">"Рабочий"</string>
<string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Просмотр личных данных"</string>
<string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Просмотр рабочих данных"</string>
<string name="resolver_cross_profile_blocked" msgid="3014597376026044840">"Заблокировано вашим администратором"</string>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index f30a483..8df50b7 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"ඔබේ ජෛව ලක්ෂණ පිළිබඳ සංවේදක දත්ත වෙත පිවිසෙන්න"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"දැනුම්දීම්"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"දැනුම්දීම් පෙන්වන්න"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ලුහුබැඳීමේ දත්ත"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"ඔබ සහ ඔබ අවට පරිසරය පිළිබඳ XR දත්ත වෙත ප්රවේශ වන්න"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"සංවේදී XR ලුහුබැඳීමේ දත්ත"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"ඇස් බැල්ම වැනි සංවේදී ලුහුබැඳීමේ දත්ත වෙත ප්රවේශ වීම"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"කවුළු අන්න්තර්ගතය ලබාගන්න"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ඔබ අන්තර්ක්රියාකාරී වන කවුළුවේ අන්තර්ගතය පරීක්ෂා කරන්න."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ස්පර්ශයෙන් ගවේෂණය සක්රිය කරන්න"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"ඔබගේ ඡායාරූප එකතුව වෙනස් කිරීමට යෙදුමට ඉඩ දෙයි."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"ඔබගේ මාධ්ය එකතුවෙන් ස්ථාන කියවන්න"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"ඔබගේ මාධ්ය එකතුවෙන් ස්ථාන කියවීමට යෙදුමට ඉඩ දෙයි."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ඔබේ ආසන්න ඇස් බැල්ම ලුහුබඳින්න"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"ඔබගේ ආසන්න ඇස් බැල්ම ලුහුබැඳීමට යෙදුමට ඉඩ දෙයි."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"ඔබ බලන තැන ලුහුබඳින්න"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"යෙදුමට නිරවද්ය ඇස් බැල්ම දත්ත වෙත ප්රවේශ වීමට ඉඩ දෙයි."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"ඔබේ මුහුණ ලුහුබඳින්න"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"මුහුණු ලුහුබැඳීමේ දත්ත වෙත ප්රවේශ වීමට යෙදුමට ඉඩ දෙන්න."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"ඔබේ දෑත් ලුහුබඳින්න"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"හස්තීයව ලුහුබැඳීමේ දත්ත වෙත ප්රවේශ වීමට යෙදුමට ඉඩ දෙන්න."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"ඔබේ හිස ලුහුබඳින්න"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"යෙදුමට හිස ලුහුබැඳීමේ දත්ත වෙත ප්රවේශ වීමට ඉඩ දෙන්න."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"ඔබේ ආසන්න පරිසරය තේරුම් ගන්න"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"ඔබ වටා ඇති පරිසරය පිළිබඳ ලුහුබැඳීමේ දත්ත වෙත කෙලින්ම ප්රවේශ වීමට යෙදුමට ඉඩ දෙන්න."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"ඔබේ ආසන්න පරිසරය ඉතා විස්තරාත්මකව තේරුම් ගන්න"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"ඉතා ඉහළ විස්තර සහිතව ඔබ වටා ඇති පරිසරය පිළිබඳ ලුහුබැඳීමේ දත්ත වෙත ප්රවේශ වීමට යෙදුමට ඉඩ දෙයි."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"පෙරබිමෙහි නොමැති විට XR දත්ත වෙත ප්රවේශ වන්න"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"පෙරබිමෙහි නොමැති විට XR දත්ත වෙත ප්රවේශ වීමට යෙදුමට ඉඩ දෙයි."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ජෛවමිතික භාවිත කරන්න"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ජෛවමිතික හෝ තිර අගුල භාවිත කරන්න"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"එය ඔබ බව තහවුරු කරන්න"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 49600ce..1d5b4e5 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -355,14 +355,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"prístup k dátam senzorov vašich životných funkcií"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Upozornenia"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"zobrazovať upozornenia"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"údaje sledovania UR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"prístup k údajom UR o vás a prostredí okolo vás"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"citlivé údaje sledovania UR"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"prístup k citlivým údajom sledovania, ako je pohľad"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Načítať obsah okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Môžete preskúmať obsah okna, s ktorým pracujete."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Zapnúť funkciu Preskúmanie dotykom"</string>
@@ -658,38 +654,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Umožňuje aplikácii upravovať zbierku fotiek."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"čítať polohy zo zbierky médií"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Umožňuje aplikácii čítať polohy zo zbierky médií."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"sledovať približný smer vášho pohľadu"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Umožňuje aplikácii sledovať približný smer vášho pohľadu."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"sledovať, kam sa pozeráte"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Umožňuje aplikácii získať prístup k presným údajom o pohľade."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"sledovať vašu tvár"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Umožňuje aplikácii získať prístup k údajom sledovania tváre."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"sledovať vaše ruky"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Umožňuje aplikácii získať prístup k údajom sledovania rúk."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"sledovať vašu hlavu"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Umožňuje aplikácii získať prístup k údajom sledovania hlavy."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"porozumieť, čo je vo vašom bezprostrednom okolí"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Umožňuje aplikácii získať prístup k údajom sledovania prostredia vo vašom okolí."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"veľmi presne porozumieť, čo je vo vašom okolí"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Umožňuje aplikácii získať prístup k veľmi podrobným údajom sledovania prostredia vo vašom okolí."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"získať k údajom UR, keď aplikácia nie je spustená na popredí"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Umožňuje aplikácii získať prístup k údajom UR, keď nie je na popredí."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Použiť biometrické údaje"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Použiť biometrické údaje alebo zámku obrazovky"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrďte, že ste to vy"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index c8dc4ee..3f9592b 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -355,14 +355,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"dostop do podatkov tipala o vaših vitalnih znakih"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Obvestila"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"prikaz obvestil"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Podatki o sledenju za RR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"dostop do podatkov razširjene resničnosti (RR) o vas in vaši okolici"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"občutljivi podatki o sledenju za RR"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"dostop do občutljivih podatkov o sledenju, na primer o smeri pogleda"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Pridobiti vsebino okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Preverjanje vsebine okna, ki ga uporabljate."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Vklopiti raziskovanje z dotikom"</string>
@@ -658,38 +654,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Aplikaciji omogoča spreminjanje zbirke fotografij."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"branje lokacij v predstavnostni zbirki"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Aplikaciji omogoča branje lokacij v predstavnostni zbirki."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"sledenje približni smeri pogleda"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Aplikaciji omogoča sledenje približni smeri pogleda."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"sledenje smeri vašega pogleda"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Aplikaciji omogoča dostop do natančnih podatkov o smeri pogleda."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"sledenje obrazu"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Aplikaciji omogoča dostop do podatkov o sledenju obrazu."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"sledenje premikom dlani"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Aplikaciji omogoča dostop do podatkov o sledenju premikom dlani."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"spremljanje premikov glave"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Aplikaciji omogoča dostop do podatkov o spremljanju premikov glave."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"razumevanje vaše neposredne okolice"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Aplikaciji omogoča dostop do podatkov o spremljanju vaše neposredne okolice."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"zelo podrobno razumevanje vaše neposredne okolice"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Aplikaciji omogoča dostop do zelo podrobnih podatkov o spremljanju vaše neposredne okolice."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"dostop do podatkov razširjene resničnosti (RR), ko se aplikacija ne izvaja v ospredju"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Aplikaciji omogoča dostop do podatkov razširjene resničnosti (RR), ko se aplikacija ne izvaja v ospredju."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Uporaba biometrike"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Uporaba biometrike ali odklepanja s poverilnico"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Potrdite, da ste res vi"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 5481023..d6ad76b 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -354,14 +354,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"приступа подацима сензора о виталним функцијама"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Обавештења"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"приказивање обавештења"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"подаци о праћењу проширене стварности"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"приступа подацима проширене стварности о вама и окружењу око вас"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"осетљиви подаци о XR праћењу"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"приступа осетљивим подацима о праћењу, на пример подацима о погледу"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"да преузима садржај прозора"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Проверава садржај прозора са којим остварујете интеракцију."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"да укључи Истраживања додиром"</string>
@@ -657,38 +653,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Дозвољава апликацији да мења колекцију слика."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"читање локација из медијске колекције"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Дозвољава апликацији да чита локације из медијске колекције."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"праћење приближних података о погледу"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Дозвољава апликацији да прати приближне податке о погледу."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"праћење погледа"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Дозвољава апликацији да приступа прецизним подацима о погледу."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"праћење лица"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Дозвољава апликацији да приступа подацима о праћењу лица."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"праћење руку"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Дозвољава апликацији да приступа подацима о праћењу руку."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"праћење главе"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Дозвољава апликацији да приступа подацима о праћењу главе."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"разумевање непосредног окружења"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Дозвољава апликацији да приступа подацима о праћењу вашег непосредног окружења."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"разумевање непосредног окружења са мноштвом детаља"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Дозвољава апликацији да приступа подацима о праћењу вашег непосредног окружења који садрже мноштво детаља."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"приступ подацима проширене стварности када није у првом плану"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Дозвољава апликацији да приступа подацима проширене стварности када није у првом плану."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Користите биометрију"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Користите биометрију или откључавање екрана"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Потврдите идентитет"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 38634d5..3d88850 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"få åtkomst till sensordata om dina vitalparametrar"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Aviseringar"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"visa aviseringar"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR-spårningsdata"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"få åtkomst till XR-data om dig och din omgivning"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"känslig XR-spårningsdata"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"få åtkomst till känslig spårningsdata, som ögonrörelser"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Hämta fönsterinnehåll"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Granska innehållet i ett fönster som du interagerar med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Aktivera Explore by touch"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Tillåter att appen gör ändringar i din fotosamling."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"läsa av platser i din mediesamling"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Tillåter att appen läser av platser i din mediesamling."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"spåra dina ungefärliga ögonrörelser"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Tillåter att appen spårar dina ungefärliga ögonrörelser."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"spåra var du tittar"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Tillåter att appen får åtkomst till exakta ögonrörelser."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"spåra ditt ansikte"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Tillåter att appen får åtkomst till data om ansiktsspårning."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"spåra dina händer"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Tillåter att appen får åtkomst till data om handspårning."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"spåra ditt huvud"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Tillåter att appen får åtkomst till data om huvudföljning."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"förstå din omgivning"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Tillåter att appen får åtkomst till spårningsdata om omgivningen runtomkring dig."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"förstå din omgivning i detalj"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Tillåter att appen får åtkomst till spårningsdata om omgivningen runtomkring dig i mycket hög detalj."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"få åtkomst till XR-data när appen inte är i förgrunden"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Tillåter att appen får åtkomst till XR-data när den inte är i förgrunden."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Använd biometri"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Använd biometrisk data eller skärmlåset"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifiera din identitet"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index b6eab89..6d67618 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"fikia data ya kitambuzi kuhusu alama zako muhimu"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Arifa"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"kuonyesha arifa"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"data ya ufuatiliaji wa XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"kufikia data ya XR kukuhusu na mazingira yaliyo karibu nawe"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"data nyeti ya ufuatiliaji wa XR"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"kufikia data nyeti ya ufuatiliaji, kama vile mahali ambako macho yanaangalia"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Kufikia maudhui ya dirisha"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Kuchunguza maudhui ya dirisha unalotumia."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Kuwasha \'Chunguza kwa Kugusa\'"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Inaruhusu programu kubadilisha mkusanyiko wa picha zako."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"kusoma maeneo kwenye mkusanyiko wa vipengee vyako"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Inaruhusu programu kusoma maeneo kwenye mkusanyiko wa vipengee vyako."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"kufuatilia kadirio la data ya mahali ambako macho yanaangalia"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Huruhusu programu ifuatilie kadirio la data ya mahali ambako macho yako yanaangalia."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"kufuatilia mahali unakoangalia"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Huruhusu programu ifikie data mahususi ya mahali ambako macho yako yanaangalia."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"kufuatilia mijongeo ya uso wako"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Huruhusu programu ifikie data ya ufuatiliaji wa mijongeo ya uso."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"kufuatilia mijongeo ya mikono yako"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Huruhusu programu ifikie data ya ufuatiliaji wa mijongeo ya mikono."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"kufuatilia mijongeo ya kichwa chako"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Huruhusu programu ifikie data ya ufuatiliaji wa mijongeo ya kichwa."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"kufahamu mazingira yaliyo karibu nawe"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Huruhusu programu ifikie data ya ufuatiliaji kuhusu mazingira yaliyo karibu nawe."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"kufahamu mazingira yaliyo karibu nawe kwa usahihi zaidi"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Huruhusu programu ifikie data ya ufuatiliaji kuhusu mazingira yaliyo karibu nawe kwa usahihi zaidi."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"kufikia data ya XR wakati haipo mbele ya skrini ya kifaa"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Huruhusu programu ifikie data ya XR wakati haitumiki mbele ya skrini ya kifaa."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Tumia bayometriki"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Tumia bayometriki au mbinu ya kufunga skrini"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Thibitisha kuwa ni wewe"</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index d48f4a2..6a8179c 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"உங்கள் உடல் இயக்கம் பற்றி உணர்விகள் கூறும் தகவலைப் பார்க்கலாம்"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"அறிவிப்புகள்"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"அறிவிப்புகளைக் காட்டும்"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR கண்காணிப்புத் தரவு"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"உங்களையும் உங்கள் சுற்றுச்சூழலையும் பற்றிய XR தரவை அணுகும்"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"பாதுகாக்க வேண்டிய XR கண்காணிப்புத் தரவு"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"கண் பார்வை போன்ற பாதுகாக்க வேண்டிய கண்காணிப்புத் தரவை அணுகும்"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"சாளர உள்ளடக்கத்தைப் பெறும்"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"நீங்கள் பணியாற்றிக் கொண்டிருக்கும் சாளரத்தின் உள்ளடக்கத்தைப் பார்க்கலாம்."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"தொடுவதன் மூலம் அறிவதை இயக்கும்"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"உங்களின் படத் தொகுப்பை மாற்ற ஆப்ஸை அனுமதிக்கும்."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"மீடியா தொகுப்பிலிருந்து இடங்களை அறிதல்"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"உங்களின் மீடியா தொகுப்பிலிருந்து இடங்களை அறிந்துகொள்ள ஆப்ஸை அனுமதிக்கும்."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"உங்கள் தோராயமான கண் பார்வைத் தரவைக் கண்காணிக்கும்"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"உங்கள் தோராயமான கண் பார்வையின் தரவைக் கண்காணிக்க ஆப்ஸை அனுமதிக்கும்."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"எங்கே பார்க்கிறீர்கள் என்பதைக் கண்காணித்தல்"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"துல்லியமான கண் பார்வையின் தரவை அணுக ஆப்ஸை அனுமதிக்கும்."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"உங்கள் முகத்தைக் கண்காணித்தல்"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"முகக் கண்காணிப்புத் தரவை அணுக ஆப்ஸை அனுமதிக்கும்."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"உங்கள் கைகளைக் கண்காணித்தல்"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"கை அசைவு அறிதல் தரவை அணுக ஆப்ஸை அனுமதிக்கும்."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"உங்கள் தலையைக் கண்காணித்தல்"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ஹெட் டிராக்கிங் தரவை அணுக ஆப்ஸை அனுமதிக்கும்."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"உங்களின் சுற்றுச்சூழலைப் புரிந்துகொள்ளுதல்"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"உங்களின் சுற்றுச்சூழல் தரவை அணுக ஆப்ஸை அனுமதிக்கும்."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"உங்களின் சுற்றுச்சூழலை மிக விரிவான விவரத்துடன் புரிந்துகொள்ளுதல்"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"உங்கள் சுற்றுச்சூழல் பற்றிய மிக விரிவான விவரங்களுடன் கூடிய தரவை நேரடியாக அணுக ஆப்ஸை அனுமதிக்கும்."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"முன்புலத்தில் இல்லாதபோது XR தரவை அணுகுதல்"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"முன்புலத்தில் இல்லாதபோது XR தரவை அணுக ஆப்ஸை அனுமதிக்கும்."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"பயோமெட்ரிக்ஸைப் பயன்படுத்து"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"பயோமெட்ரிக்ஸையோ திரைப் பூட்டையோ பயன்படுத்து"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"நீங்கள்தான் என உறுதிசெய்க"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 84e56d2..11611ea 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"మీ అత్యంత కీలకమైన గుర్తుల గురించి సెన్సార్ డేటాను యాక్సెస్ చేస్తుంది"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"నోటిఫికేషన్లు"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"నోటిఫికేషన్లను చూపండి"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ట్రాకింగ్ డేటా"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"మీ గురించి, మీ చుట్టూ ఉన్న పరిసరాల గురించి XR డేటాను యాక్సెస్ చేయండి"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"సున్నితమైన XR ట్రాకింగ్ డేటా"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"కంటి చూపు వంటి సున్నితమైన ట్రాకింగ్ డేటాను యాక్సెస్ చేయండి"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"విండో కంటెంట్ను తిరిగి పొందుతుంది"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"మీరు పరస్పర చర్య చేస్తున్న విండో కంటెంట్ను పరిశీలిస్తుంది."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"తాకడం ద్వారా విశ్లేషణను ఆన్ చేయండి"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"మీ ఫోటో సేకరణను ఎడిట్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"మీ మీడియా సేకరణ నుండి లొకేషన్లను చదవండి"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"మీ మీడియా సేకరణ నుండి లొకేషన్లను చదవడానికి యాప్ను అనుమతిస్తుంది."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"మీ సుమారు కంటి చూపును ట్రాక్ చేయండి"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"మీ సుమారు కంటి చూపును ట్రాక్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"మీరు ఎక్కడ చూస్తున్నారో ట్రాక్ చేయండి"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"కంటి చూపునకు సంబంధించిన ఖచ్చితమైన డేటాను యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"మీ ముఖాన్ని ట్రాక్ చేయండి"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"ఫేస్ ట్రాకింగ్ డేటాను యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"మీ చేతి కదలికలను ట్రాక్ చేయండి"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"హ్యాండ్ ట్రాకింగ్ డేటాను యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"మీ తలను ట్రాక్ చేయండి"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"హెడ్ ట్రాకింగ్ డేటాను యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"మీ చుట్టూ ఉన్న పరిసరాలను అర్థం చేసుకోండి"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"మీ చుట్టూ ఉన్న పర్యావరణం గురించి ట్రాకింగ్ డేటాను నేరుగా యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"మీ చుట్టూ ఉన్న పరిసరాలను చాలా వివరంగా అర్థం చేసుకోండి"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"మీ చుట్టూ ఉన్న పర్యావరణం గురించి ట్రాకింగ్ డేటాను చాలా ఎక్కువ వివరాలతో యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ముందుభాగంలో లేనప్పుడు XR డేటాను యాక్సెస్ చేయండి"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ముందుభాగంలో లేనప్పుడు XR డేటాను యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"బయోమెట్రిక్స్ను ఉపయోగించండి"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"బయోమెట్రిక్స్ను లేదా స్క్రీన్ లాక్ను ఉపయోగించండి"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"ఈ చర్య చేస్తోంది మీరేనని వెరిఫై చేయండి"</string>
@@ -715,8 +695,8 @@
<string name="fingerprint_acquired_immobile" msgid="1621891895241888048">"ప్రతిసారి మీ వేలిని కొద్ది కొద్దిగా జరపండి"</string>
<string-array name="fingerprint_acquired_vendor">
</string-array>
- <string name="fingerprint_error_not_match" msgid="4599441812893438961">"వేలిముద్ర గుర్తించబడలేదు"</string>
- <string name="fingerprint_udfps_error_not_match" msgid="8236930793223158856">"వేలిముద్ర గుర్తించబడలేదు"</string>
+ <string name="fingerprint_error_not_match" msgid="4599441812893438961">"వేలిముద్ర (ఫింగర్-ప్రింట్) మ్యాచ్ కాలేదు"</string>
+ <string name="fingerprint_udfps_error_not_match" msgid="8236930793223158856">"వేలిముద్ర (ఫింగర్-ప్రింట్) మ్యాచ్ కాలేదు"</string>
<string name="fingerprint_dialog_use_fingerprint_instead" msgid="5590293588784953188">"ముఖం గుర్తించలేదు. బదులుగా వేలిముద్ర ఉపయోగించండి."</string>
<string name="fingerprint_authenticated" msgid="2024862866860283100">"వేలిముద్ర ప్రమాణీకరించబడింది"</string>
<string name="face_authenticated_no_confirmation_required" msgid="8867889115112348167">"ముఖం ప్రమాణీకరించబడింది"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index e16a28a..d854025 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"เข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพของคุณ"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"การแจ้งเตือน"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"แสดงการแจ้งเตือน"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"ข้อมูลการติดตาม XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"เข้าถึงข้อมูล XR เกี่ยวกับคุณและสภาพแวดล้อมรอบตัว"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"ข้อมูลการติดตาม XR ที่มีความละเอียดอ่อน"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"เข้าถึงข้อมูลการติดตามที่มีความละเอียดอ่อน เช่น การจ้องด้วยตา"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"เรียกข้อมูลเนื้อหาของหน้าต่าง"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ตรวจสอบเนื้อหาของหน้าต่างที่คุณกำลังโต้ตอบอยู่"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"เปิด \"แตะเพื่อสำรวจ\""</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"อนุญาตให้แอปแก้ไขคอลเล็กชันรูปภาพของคุณ"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"อ่านตำแหน่งจากคอลเล็กชันสื่อของคุณ"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"อนุญาตให้แอปอ่านตำแหน่งจากคอลเล็กชันสื่อของคุณ"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"ติดตามการจ้องด้วยตาโดยประมาณ"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"อนุญาตให้แอปติดตามข้อมูลการจ้องด้วยตาโดยประมาณ"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"ติดตามตำแหน่งที่คุณมอง"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"อนุญาตให้แอปเข้าถึงข้อมูลการจ้องด้วยตาอย่างละเอียด"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"ติดตามการเคลื่อนไหวของใบหน้า"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"อนุญาตให้แอปเข้าถึงข้อมูลการติดตามการเคลื่อนไหวของใบหน้า"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"ติดตามการเคลื่อนไหวของมือ"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"อนุญาตให้แอปเข้าถึงข้อมูลการติดตามการเคลื่อนไหวของมือ"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"ติดตามการเคลื่อนไหวของศีรษะ"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"อนุญาตให้แอปเข้าถึงข้อมูลการติดตามการเคลื่อนไหวของศีรษะ"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"เข้าใจสภาพแวดล้อมที่อยู่ใกล้ตัวคุณ"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"อนุญาตให้แอปเข้าถึงข้อมูลการติดตามเกี่ยวกับสภาพแวดล้อมรอบตัวคุณโดยตรง"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"เข้าใจสภาพแวดล้อมที่อยู่ใกล้ตัวคุณอย่างละเอียด"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"อนุญาตให้แอปเข้าถึงข้อมูลการติดตามเกี่ยวกับสภาพแวดล้อมรอบตัวคุณโดยตรงที่มีรายละเอียดสูงมาก"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"เข้าถึงข้อมูล XR ขณะที่ไม่ได้ทำงานอยู่ในเบื้องหน้า"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"อนุญาตให้แอปเข้าถึงข้อมูล XR ขณะที่ไม่ได้ทำงานอยู่ในเบื้องหน้า"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"ใช้ข้อมูลไบโอเมตริก"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ใช้ข้อมูลไบโอเมตริกหรือการล็อกหน้าจอ"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"ยืนยันว่าเป็นตัวคุณ"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 98de106..78f44c8 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"i-access ang data ng sensor tungkol sa iyong vital signs"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Mga Notification"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"magpakita ng mga notification"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Data ng pag-track ng XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"i-access ang XR data tungkol sa iyo at sa kapaligiran sa paligid mo"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"Sensitibong data ng pag-track ng XR"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"i-access ang sensitibong data sa pag-track, gaya ng pagtitig"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Kunin ang content ng window"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Siyasatin ang nilalaman ng isang window kung saan ka nakikipag-ugnayan."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"I-on ang Explore by Touch"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Pinapayagan ang app na baguhin ang iyong koleksyon ng larawan."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"basahin ang mga lokasyon mula sa iyong koleksyon ng media"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Pinapayagan ang app na basahin ang mga lokasyon mula sa iyong koleksyon ng media."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"i-track ang iyong tinatayang pagtitig"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Nagbibigay-daan sa app na i-track ang iyong tinatayang pagtitig."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"i-track kung saan ka nakatingin"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Nagbibigay-daan sa app na ma-access ang tumpak na data ng pagtitig."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"i-track ang iyong mukha"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Nagbibigay-daan sa app na i-access ang data ng pag-track sa mukha."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"i-track ang iyong mga kamay"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Nagbibigay-daan sa app na i-access ang data ng pag-track sa kamay."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"i-track ang iyong ulo"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Nagbibigay-daan sa app na i-access ang data ng pag-track ng ulo."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"maunawaan ang iyong kapaligiran"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Nagbibigay-daan sa app na i-access ang data ng pag-track tungkol sa kapaligirang direktang nasa paligid mo."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"maunawaan ang iyong kapaligiran sa mataas na detalye"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Binibigyang-daan ang app na i-access ang data ng pag-track tungkol sa kapaligirang direktang nasa paligid mo na may napakataas na detalye."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"i-access ang XR data habang wala sa foreground"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Nagbibigay-daan sa app na i-access ang XR data habang wala sa foreground."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Gumamit ng biometrics"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Gumamit ng biometrics o lock ng screen"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"I-verify na ikaw ito"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 2ec15ca..b575d9f 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"hayati belirtilerinizle ilgili sensör verilerine erişme"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Bildirimler"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"bildirimleri göster"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR takip verileri"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"sizinle ve çevrenizdeki ortamla ilgili XR verilerine erişme"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"hassas XR takip verileri"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"göz hareketleri gibi hassas takip verilerine erişme"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Pencere içeriğini alma"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Etkileşim kurduğunuz pencerenin içeriğini inceler."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Dokunarak Keşfet\'i açma"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Uygulamanın fotoğraf koleksiyonunuzu değiştirmesine izin verir."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"medya koleksiyonunuzdaki konumları okuma"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Uygulamanın medya koleksiyonunuzdaki konumları okumasına izin verir."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"yaklaşık göz hareketinizi takip etme"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Uygulamanın, yaklaşık göz hareketinizi takip etmesine izin verir."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"baktığınız noktayı takip etme"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Uygulamanın, tam göz hareketiyle ilgili verilere erişmesine izin verir."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"yüzünüzü takip etme"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Uygulamanın, yüz takibi verilerine erişmesine izin verir."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"ellerinizi takip etme"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Uygulamanın, el takibi verilerine erişmesine izin verir."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"başınızı takip etme"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Uygulamanın, baş takibi verilerine erişmesine izin verir."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"yakın çevrenizi anlama"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Uygulamanın, hemen etrafınızdaki ortamla ilgili takip verilerine erişmesine izin verir."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"yakın çevrenizi ayrıntılı bir şekilde anlama"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Uygulamanın, hemen etrafınızdaki ortamla ilgili takip verilerine çok ayrıntılı bir şekilde erişmesine izin verir."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"ön planda değilken XR verilerine erişme"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Uygulamanın, ön planda değilken XR verilerine erişmesine izin verir."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Biyometri kullan"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biyometri veya ekran kilidi kullan"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Kimliğinizi doğrulayın"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 9aeee9c..737c245 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -355,14 +355,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"отримувати доступ до інформації датчиків про ваші життєві показники"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Сповіщення"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"показувати сповіщення"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"дані відстеження розширеної реальності"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"отримувати доступ до даних розширеної реальності про вас і оточення"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"чутливі дані відстеж. розшир. реальності"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"отримувати доступ до чутливих даних відстеження, наприклад даних про напрямок погляду"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Отримувати вміст вікна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Перевіряти вміст вікна, з яким ви взаємодієте."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Увімкнути функцію дослідження дотиком"</string>
@@ -658,38 +654,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Додаток зможе змінювати вашу колекцію фотографій."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"розпізнавати геодані з колекції медіа-вмісту"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Додаток зможе розпізнавати геодані з вашої колекції медіа-вмісту."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"відстежувати приблизний напрямок вашого погляду"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Дозволяє додатку відстежувати приблизний напрямок вашого погляду."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"відстежувати напрямок вашого погляду"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Дозволяє додатку отримувати точні дані про напрямок погляду."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"відстежувати рухи вашого обличчя"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Дозволяє додатку отримувати доступ до даних відстеження рухів обличчя."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"відстежувати ваші руки"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Дозволяє додатку отримувати доступ до даних відстеження рук."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"відстежувати рухи вашої голови"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Дозволяє додатку отримувати доступ до даних відстеження руху голови."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"розпізнавати об’єкти у вашому найближчому оточенні"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Дозволяє додатку отримувати доступ до даних про оточення навколо вас."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"розпізнавати об’єкти у вашому оточенні з високою деталізацією"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Дозволяє додатку отримувати доступ до дуже детальних даних про оточення навколо вас."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"отримувати доступ до даних розширеної реальності у фоновому режимі"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Дозволяє додатку отримувати доступ до даних розширеної реальності у фоновому режимі."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Доступ через біометрію"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Використовувати біометрію або дані для розблокування екрана"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Підтвердьте, що це ви"</string>
@@ -1846,7 +1826,7 @@
<string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Перемкнути"</string>
<string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Налаштування"</string>
<string name="user_switched" msgid="7249833311585228097">"Поточний користувач: <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="user_switching_message" msgid="1912993630661332336">"Перехід у режим \"<xliff:g id="NAME">%1$s</xliff:g>\"…"</string>
+ <string name="user_switching_message" msgid="1912993630661332336">"Перехід в обліковий запис \"<xliff:g id="NAME">%1$s</xliff:g>\"…"</string>
<string name="user_logging_out_message" msgid="7216437629179710359">"Вихід з облікового запису користувача <xliff:g id="NAME">%1$s</xliff:g>…"</string>
<string name="owner_name" msgid="8713560351570795743">"Власник"</string>
<string name="guest_name" msgid="8502103277839834324">"Гість"</string>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index f934b87..82292bf 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"اپنی علامات حیات کے متعلق سنسر ڈیٹا تک رسائی حاصل کریں"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"اطلاعات"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"اطلاعات دکھائیں"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR ٹریکنگ ڈیٹا"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"اپنے اور اپنے آس پاس کے ماحول کے بارے میں XR ڈیٹا تک رسائی حاصل کریں"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"حساس XR ٹریکنگ ڈیٹا"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"آنکھوں جیسے حساس ٹریکنگ ڈیٹا تک رسائی حاصل کریں"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ونڈو مواد بازیافت کرنے کی"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"کسی ایسی ونڈو کے مواد کا معائنہ کریں جس کے ساتھ آپ تعامل کر رہے ہیں۔"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ٹچ کے ذریعے دریافت کریں کو آن کرنے کی"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"ایپ کو آپ کی تصویر کے مجموعے میں ترمیم کی اجازت دیتا ہے۔"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"اپنی میڈيا کے مجموعے سے مقامات پڑھیں"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"ایپ کو آپ کی میڈيا کے مجموعے سے مقامات پڑھنے کی اجازت دیتا ہے۔"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"اپنی آنکھوں کی تخمینی نگاہوں کو ٹریک کریں"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"ایپ کو آپ کی تخمینی نگاہوں کو ٹریک کرنے کی اجازت ملتی ہے۔"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"وہ جگہ ٹریک کریں جہاں آپ دیکھ رہے ہیں"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"ایپ کو آنکھوں کے عین مطابق ڈیٹا تک رسائی کی اجازت ملتی ہے۔"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"اپنے چہرے کو ٹریک کریں"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"ایپ کو ایپس کو فیس ٹریکنگ ڈیٹا تک رسائی کی اجازت ملتی ہے۔"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"اپنے ہاتھوں کو ٹریک کریں"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"ایپ کو ہینڈ ٹریکنگ ڈیٹا تک رسائی کی اجازت ملتی ہے۔"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"اپنے سر کو ٹریک کریں"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"ایپ کو ہیڈ ٹریکنگ ڈیٹا تک رسائی کی اجازت ملتی ہے۔"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"اپنے آس پاس کے ماحول کو سمجھیں"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"ایپ کو براہ راست آپ کے آس پاس کے ماحول کے بارے میں ٹریکنگ ڈیٹا تک رسائی کی اجازت ملتی ہے۔"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"اپنے آس پاس کے ماحول کو اعلیٰ تفصیل سے سمجھیں"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"ایپ کو بہت زیادہ تفصیل کے ساتھ براہ راست آپ کے آس پاس کے ماحول کے بارے میں ٹریکنگ ڈیٹا تک رسائی کی اجازت ملتی ہے۔"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"XR ڈیٹا تک رسائی حاصل کریں جبکہ پیش منظر میں نہ ہو"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ایپ کو پیش منظر میں نہ ہوتے ہوئے XR ڈیٹا تک رسائی کی اجازت ملتی ہے۔"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"بایو میٹرکس استعمال کریں"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"بایو میٹرکس یا اسکرین لاک استعمال کریں"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"توثیق کریں کہ یہ آپ ہیں"</string>
@@ -1844,7 +1824,7 @@
<string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"سوئچ کریں"</string>
<string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ترتیبات"</string>
<string name="user_switched" msgid="7249833311585228097">"موجودہ صارف <xliff:g id="NAME">%1$s</xliff:g>۔"</string>
- <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> پر سوئچ کیا جا رہا ہے…"</string>
+ <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> پر سوئچ کیا جا رہا ہے…"</string>
<string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> لاگ آؤٹ ہو رہا ہے…"</string>
<string name="owner_name" msgid="8713560351570795743">"مالک"</string>
<string name="guest_name" msgid="8502103277839834324">"مہمان"</string>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 942be79..0e66165 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"organizm holati haqidagi sezgich ma’lumotlariga kirish"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Bildirishnomalar"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"bildirishnomalarni chiqarish"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR kuzatuv maʼlumotlari"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"siz va atrofingizdagi muhit haqidagi XR maʼlumotlarga kirish"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"nozik XR kuzatuv maʼlumotlari"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"nigoh kabi nozik kuzatuv maʼlumotlariga kirish"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Oynadagi kontentni o‘qiydi"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Joriy oynadagi kontent mazmunini aniqlaydi."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Teginib o‘rganish xizmatini yoqadi"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Ilovaga suratlar to‘plamingizni o‘zgartirishga ruxsat beradi."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"multimedia to‘plamidan joylashuv axborotini o‘qish"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Ilovaga multimedia to‘plamingizdan joylashuv axborotini o‘qishga ruxsat beradi."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"taxminiy nigohni kuzatish"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Ilovaga taxminiy nigohingizni kuzatish imkonini beradi."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"qayerga qarayotganingizni kuzatish"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Ilovaga nigohga oid aniq maʼlumotlarga kirish imkonini beradi."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"yuzingizni kuzatish"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Ilovaga yuz harakatini kuzatish maʼlumotlariga kirish imkonini beradi."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"qoʻllaringiz harakatini kuzatish"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Ilovaga qoʻl harakatini kuzatish maʼlumotlariga kirish imkonini beradi."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"boshingiz harakatini kuzatish"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Ilovaga bosh harakatini kuzatish maʼlumotlariga kirish imkonini beradi."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"atrofingizdagi vaziyatni chuqur tushunish"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Ilovaga bevosita atrofingizdagi muhit haqidagi kuzatuv maʼlumotlariga kirish imkonini beradi."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"atrofingizdagi vaziyatni juda yuqori aniqlikda chuqur tushunish"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Ilovaga bevosita atrofingizdagi juda yuqori aniqlikda muhit haqidagi kuzatuv maʼlumotlariga kirish imkonini beradi."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"XR maʼlumotlariga faol rejimda emasligida kirish"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Ilovaga faol rejimda emasligida XR maʼlumotlariga kirish imkonini beradi."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrik tasdiqlash"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrika yoki ekran qulfi"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Oʻzingizni taniting"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 947a9b4..754e66e 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"truy cập dữ liệu cảm biến về dấu hiệu sinh tồn của bạn"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Thông báo"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"hiển thị thông báo"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"dữ liệu theo dõi XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"truy cập vào dữ liệu XR về bạn và môi trường xung quanh bạn"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"dữ liệu theo dõi XR mang tính nhạy cảm"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"truy cập vào dữ liệu theo dõi mang tính nhạy cảm, chẳng hạn như vị trí ánh mắt"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Truy xuất nội dung cửa sổ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Kiểm tra nội dung của cửa sổ bạn đang tương tác."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Bật tính năng Khám phá bằng cách chạm"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Cho phép ứng dụng này sửa đổi bộ sưu tập ảnh của bạn."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"đọc vị trí từ bộ sưu tập phương tiện"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Cho phép ứng dụng này đọc vị trí từ bộ sưu tập phương tiện của bạn."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"theo dõi vị trí gần đúng của ánh mắt bạn"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Cho phép ứng dụng này theo dõi vị trí gần đúng của ánh mắt bạn."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"theo dõi vị trí bạn đang nhìn"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Cho phép ứng dụng này truy cập vào dữ liệu vị trí chính xác của ánh mắt."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"theo dõi cử động của khuôn mặt"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Cho phép ứng dụng này truy cập vào dữ liệu theo dõi cử động của khuôn mặt."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"theo dõi cử động của tay"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Cho phép ứng dụng này truy cập vào dữ liệu theo dõi cử động của tay."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"theo dõi cử động của đầu"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Cho phép ứng dụng này truy cập vào dữ liệu theo dõi cử động của đầu."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"hiểu về môi trường ngay xung quanh bạn"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Cho phép ứng dụng này truy cập vào dữ liệu theo dõi về môi trường ngay xung quanh bạn."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"hiểu cụ thể về môi trường ngay xung quanh bạn"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Cho phép ứng dụng này truy cập vào dữ liệu theo dõi cụ thể về môi trường ngay xung quanh bạn."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"truy cập vào dữ liệu XR khi không ở chế độ nền trước"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Cho phép ứng dụng này truy cập vào dữ liệu thực tế mở rộng (XR) khi không ở chế độ nền trước."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Dùng dữ liệu sinh trắc học"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Dùng dữ liệu sinh trắc học hoặc phương thức khóa màn hình"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Xác minh danh tính của bạn"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 46c53eb..1f625ad 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"访问与您的生命体征相关的传感器数据"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"通知"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"显示通知"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"扩展现实跟踪数据"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"访问有关您和您周围环境的扩展现实数据"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"敏感的扩展现实跟踪数据"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"访问视线等敏感的跟踪数据"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"检索窗口内容"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"检测您与之互动的窗口的内容。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"启用触摸浏览"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"允许该应用修改您的照片收藏。"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"从您的媒体收藏中读取位置信息"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"允许该应用从您的媒体收藏中读取位置信息。"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"跟踪您的大致视线"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"允许应用跟踪您的大致视线。"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"跟踪您的视线方向"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"允许应用访问精确的视线跟踪数据。"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"跟踪您的面部表情"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"允许应用访问面部跟踪数据。"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"跟踪您的手部动作"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"允许应用访问手部跟踪数据。"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"跟踪您的头部动作"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"允许应用访问头部追踪数据。"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"了解您周围的环境"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"允许应用访问关于您周围环境的跟踪数据。"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"详细了解您周围的环境"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"允许应用访问关于您周围环境的详细跟踪数据。"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"不在前台时访问扩展现实数据"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"允许应用不在前台时访问扩展现实数据。"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"使用生物识别"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"使用生物识别或屏幕锁定凭据"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"验证是您本人在操作"</string>
@@ -1067,7 +1047,7 @@
<string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"停止"</string>
<string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"快退"</string>
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"快进"</string>
- <string name="emergency_calls_only" msgid="3057351206678279851">"只能拨打紧急呼叫电话"</string>
+ <string name="emergency_calls_only" msgid="3057351206678279851">"只能拨打紧急求助电话"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"网络已锁定"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM 卡已用 PUK 码锁定。"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"请参阅《用户指南》或与客服人员联系。"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index d013a47..fc2783c 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"存取與你生命體徵相關的感應器資料"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"通知"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"顯示通知"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"XR 追蹤資料"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"存取與你和周遭環境相關的 XR 資料"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"敏感的 XR 追蹤資料"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"存取敏感的追蹤資料,例如視線"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"擷取視窗內容"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"檢查你使用中的視窗內容。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"開啟「輕觸探索」功能"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"允許應用程式修改你的相片集。"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"讀取媒體集的位置"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"允許應用程式讀取媒體集的位置。"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"追蹤視線的概略方向"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"允許應用程式追蹤你概略的視線。"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"追蹤視線"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"允許應用程式存取精確的視線資料。"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"追蹤面孔"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"允許應用程式存取面孔追蹤資料。"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"追蹤手勢"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"允許應用程式存取手勢追蹤資料。"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"追蹤頭部"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"允許應用程式存取頭部追蹤資料。"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"瞭解當下環境"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"允許應用程式存取與你周遭環境相關的追蹤資料。"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"詳細瞭解當下環境"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"允許應用程式存取與你周遭環境相關的極詳細追蹤資料。"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"在非前景執行時存取 XR 資料"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"允許應用程式在非前景執行時存取 XR 資料。"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"使用生物識別"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"使用生物識別或螢幕鎖定"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"驗證是你本人"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index f1c9dcd..c53aaa1 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"存取與你生命徵象相關的感應器資料"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"通知"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"顯示通知"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"延展實境追蹤資料"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"存取與你和周遭環境相關的延展實境資料"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"敏感的延展實境追蹤資料"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"存取敏感的追蹤資料,例如視線"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"擷取視窗內容"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"檢查你存取的視窗內容。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"啟用輕觸探索功能"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"允許應用程式修改你的相片收藏。"</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"讀取你的媒體收藏的位置資訊"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"允許應用程式讀取你的媒體收藏的位置資訊。"</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"追蹤視線的大概方向"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"允許應用程式追蹤你視線的大概方向。"</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"追蹤視線"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"允許應用程式存取視線精確方向的資料。"</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"追蹤臉部"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"允許應用程式存取臉部追蹤資料。"</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"追蹤手勢"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"允許應用程式存取手勢追蹤資料。"</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"追蹤頭部"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"允許應用程式存取頭部追蹤資料。"</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"瞭解當下環境"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"允許應用程式存取與你周遭環境相關的追蹤資料。"</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"深入瞭解當下環境"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"允許應用程式存取與你周遭環境相關的詳細追蹤資料。"</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"在非前景執行時存取延展實境資料"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"允許應用程式在非前景執行時存取延展實境資料。"</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"使用生物辨識功能"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"使用生物辨識或螢幕鎖定功能"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"驗證你的身分"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 5732cec..079bf67 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -353,14 +353,10 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"finyelela idatha yesizweli mayelana nezimpawu zakho ezibalulekile"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Izaziso"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"bonisa izaziso"</string>
- <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
- <skip />
- <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
- <skip />
- <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
- <skip />
+ <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Idatha yokulandelela ye-XR"</string>
+ <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"finyelela idatha ye-XR emayelana nawe nendawo ekuzungezile"</string>
+ <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"idatha ebucayi yokulandelela i-XR"</string>
+ <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"finyelela idatha yokulandelela ebucayi, efana nokubuka kweso"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Thola okuqukethwe kwewindi"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Hlola okuqukethwe kwewindi ohlanganyela nalo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Vula ukuhlola ngokuthinta"</string>
@@ -656,38 +652,22 @@
<string name="permdesc_imagesWrite" msgid="5195054463269193317">"Ivumela uhlelo lwakho lokusebenza ukuthi lilungise iqoqo lakho lesithombe."</string>
<string name="permlab_mediaLocation" msgid="7368098373378598066">"funda izindawo kusukela kuqoqo lakho lemidiya"</string>
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Ivumela uhlelo lokusebenza ukuthi lifunde izindawo kusukela kuqoqo lakho lemidiya."</string>
- <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
- <skip />
- <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
- <skip />
- <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
- <skip />
- <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
- <skip />
- <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
- <skip />
- <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
- <skip />
- <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
- <skip />
- <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
- <skip />
- <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
- <skip />
- <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
- <skip />
- <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
- <skip />
- <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
- <skip />
- <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
- <skip />
+ <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"landelela ukuthi iso lakho libheke ngakuphi"</string>
+ <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Ivumela i-app ukuthi ilandelele ukubuka kwakho kweso."</string>
+ <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"landelela lapho obheke khona"</string>
+ <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Ivumela i-app ifinyelele idatha yokubuka kweso okunembile."</string>
+ <string name="permlab_face_tracking" msgid="2272048395128283324">"landelela ubuso bakho"</string>
+ <string name="permdesc_face_tracking" msgid="2622783922311211866">"Ivumela i-app ukuthi ifinyelele idatha yokulandelela ukunyakaza kobuso."</string>
+ <string name="permlab_hand_tracking" msgid="6478233866595566940">"landelela izandla zakho"</string>
+ <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Ivumela i-app ukuthi ifinyelele idatha yokulandelela ukunyakaza kwesandla."</string>
+ <string name="permlab_head_tracking" msgid="1309731456372087270">"landelela ikhanda lakho"</string>
+ <string name="permdesc_head_tracking" msgid="231597390513699188">"Ivumela i-app ukuthi ifinyelele idatha yokulandelela ukunyakaza kwekhanda."</string>
+ <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"qonda indawo okuyo eseduze"</string>
+ <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Ivumela i-app ukuthi ifinyelele idatha elandelela indawo ekuzungezile."</string>
+ <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"qonda indawo yakho eseduze ngemininingwane ephezulu"</string>
+ <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Ivumela i-app ukuthi ifinyelele idatha elandelela indawo ekuzungezile ngemininingwane ephezulu kakhulu."</string>
+ <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"finyelela idatha ye-XR ngenkathi ungekho ngaphambili"</string>
+ <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Ivumela i-app ukuba ifinyelele idatha ye-XR ngenkathi ingekho ngaphambili."</string>
<string name="biometric_app_setting_name" msgid="3339209978734534457">"Sebenzisa i-biometrics"</string>
<string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Sebenzisa i-biometrics noma ukukhiya isikrini"</string>
<string name="biometric_dialog_default_title" msgid="55026799173208210">"Qinisekisa ukuthi nguwe"</string>
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 15230c2..9983c45 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -853,11 +853,14 @@
element.
<aside class="note"><b>Note:</b>
<ul>
+ <li>To improve the layout of apps on form factors with smallest width >= 600dp, the
+ system ignores this attribute for apps that target Android 16 (API level 36) or
+ higher.</li>
<li>Device manufacturers can configure devices to override (ignore) this attribute
to improve the layout of apps.</li>
<li>On devices with Android 16 (API level 36) or higher installed, virtual device
- owners (limited to select trusted and privileged apps) can configure devices
- they manage to override (ignore) this attribute to improve app layout. See also
+ owners (select trusted and privileged apps) can configure devices they manage to
+ override (ignore) this attribute to improve app layout. See also
<a href="https://source.android.com/docs/core/permissions/app-streaming">
Companion app streaming</a>.</li>
</ul>
@@ -1482,19 +1485,20 @@
<li>On Android 11 (API level 30) and lower, the value of
{@link android.R.attr#screenOrientation} is ignored for resizeable activities
in multi-window mode.</li>
+ <li>To improve the layout of apps on form factors with smallest width >= 600dp, the
+ system ignores this attribute for apps that target Android 16 (API level 36) or
+ higher.</li>
<li>Device manufacturers can configure devices to override (ignore) this attribute
to force apps to resize. The override does not affect the app's support for
- multi-window mode. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
- compatibility mode</a>.</li>
+ multi-window mode.</li>
<li>On devices with Android 16 (API level 36) or higher installed, virtual device
- owners (limited to select trusted and privileged apps) can configure devices
- they manage to override (ignore) this attribute to force apps to resize. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
- compatibility mode</a>. See also
- <a href="https://source.android.com/docs/core/permissions/app-streaming">
+ owners (select trusted and privileged apps) can configure devices they manage to
+ override (ignore) this attribute to force apps to resize. See
+ also <a href="https://source.android.com/docs/core/permissions/app-streaming">
Companion app streaming</a>.</li>
</ul>
+ <p>See <a href="{@docRoot}guide/practices/device-compatibility-mode"> Device
+ compatibility mode</a>.</p>
</aside> -->
<attr name="resizeableActivity" format="boolean" />
@@ -1519,18 +1523,19 @@
<ul>
<li>This attribute is ignored if the activity has
{@link android.R.attr#resizeableActivity} set to {@code true}.</li>
+ <li>To improve the layout of apps on form factors with smallest width >= 600dp, the
+ system ignores this attribute for apps that target Android 16 (API level 36) or
+ higher.</li>
<li>Device manufacturers can configure devices to override (ignore) this attribute
- to improve the layout of apps. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode#override_any_orientation_to_user">
- Device compatibility mode</a>.</li>
+ to improve the layout of apps.</li>
<li>On devices with Android 16 (API level 36) or higher installed, virtual device
- owners (limited to select trusted and privileged apps) can configure devices
- they manage to override (ignore) this attribute to improve app layout. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode#override_any_orientation_to_user">
- Device compatibility mode</a>. See also
+ owners (select trusted and privileged apps) can configure devices they manage to
+ override (ignore) this attribute to improve app layout. See
<a href="https://source.android.com/docs/core/permissions/app-streaming">
Companion app streaming</a>.</li>
</ul>
+ <p>See <a href="{@docRoot}guide/practices/device-compatibility-mode"> Device
+ compatibility mode</a>.</p>
</aside> -->
<attr name="maxAspectRatio" format="float" />
@@ -1540,24 +1545,25 @@
<p>Minimum aspect ratio, expressed as (longer dimension / shorter dimension) in decimal
form. For example, if the minimum aspect ratio is 4:3, set value to 1.33.
<p>Value needs to be greater or equal to 1.0, otherwise it is ignored.
- <aside class="note"><b>Note:</b>
+ <aside class="note"><b>Note:</b>
<ul>
<li>This attribute is ignored if the activity has
{@link android.R.attr#resizeableActivity} set to {@code true}.</li>
+ <li>To improve the layout of apps on form factors with smallest width >= 600dp, the
+ system ignores this attribute for apps that target Android 16 (API level 36) or
+ higher.</li>
<li>Device manufacturers can configure devices to override (ignore) this attribute
- to improve the layout of apps. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
- compatibility mode</a>.</li>
+ to improve the layout of apps.</li>
<li>On devices with Android 16 (API level 36) or higher installed, virtual device
- owners (limited to select trusted and privileged apps) can configure devices
- they manage to override (ignore) this attribute to improve app layout. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
- compatibility mode</a>. See also
+ owners (select trusted and privileged apps) can configure devices they manage to
+ override (ignore) this attribute to improve app layout. See
<a href="https://source.android.com/docs/core/permissions/app-streaming">
Companion app streaming</a>.</li>
</ul>
+ <p>See <a href="{@docRoot}guide/practices/device-compatibility-mode"> Device
+ compatibility mode</a>.</p>
</aside> -->
- <attr name="minAspectRatio" format="float" />
+ <attr name="minAspectRatio" format="float" />
<!-- This value indicates how tasks rooted at this activity will behave in lockTask mode.
While in lockTask mode the system will not launch non-permitted tasks until
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index 864daf9..4e93c44 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -585,6 +585,8 @@
<!-- Color for various surfaces related to system-wide blur -->
<color name="surface_effect_0">@color/surface_effect_0_color</color>
<color name="surface_effect_1">@color/surface_effect_1_color</color>
+ <color name="surface_effect_2">@color/surface_effect_2_color</color>
+ <color name="surface_effect_3">@color/surface_effect_3_color</color>
<!-- Color for system bars -->
<color name="navigation_bar_compatible">@android:color/black</color>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 2188469..1cb38be 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -3165,11 +3165,6 @@
1 : boot to the first switchable full user for initial boot (unprovisioned device), else to the headless system user, i.e. user 0. -->
<integer name="config_hsumBootStrategy">0</integer>
- <!-- Whether to boot system with the headless system user, i.e. user 0. If set to true,
- system will be booted with the headless system user, or user 0. It has no effect if device
- is not in Headless System User Mode (HSUM). -->
- <bool name="config_bootToHeadlessSystemUser">false</bool>
-
<!-- Whether multiple admins are allowed on the device. If set to true, new users can be created
with admin privileges and admin privileges can be granted/revoked from existing users. -->
<bool name="config_enableMultipleAdmins">false</bool>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 7a93ca1..6a83bae 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -5009,6 +5009,9 @@
<!-- Title of hearing aids feature, shown in the warning dialog about the accessibility shortcut. [CHAR LIMIT=none] -->
<string name="hearing_aids_feature_name">Hearing devices</string>
+ <!-- Title of autoclick feature, shown in the warning dialog about the accessibility shortcut. [CHAR LIMIT=none] -->
+ <string name="autoclick_feature_name">Autoclick</string>
+
<!-- Text of hearing device disconnected state. [CHAR LIMIT=20] -->
<string name="hearing_device_status_disconnected">Disconnected</string>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index b013ffd..c8c1e73 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -368,7 +368,6 @@
<java-symbol type="bool" name="config_enableMultipleAdmins"/>
<java-symbol type="bool" name="config_allowAlarmsOnStoppedUsers"/>
<java-symbol type="bool" name="config_showNotificationForBackgroundUserAlarms"/>
- <java-symbol type="bool" name="config_bootToHeadlessSystemUser"/>
<java-symbol type="bool" name="config_omnipresentCommunalUser"/>
<java-symbol type="bool" name="config_enableNewAutoSelectNetworkUI"/>
<java-symbol type="bool" name="config_disableUsbPermissionDialogs"/>
@@ -535,6 +534,8 @@
<java-symbol type="color" name="surface_effect_0" />
<java-symbol type="color" name="surface_effect_1" />
+ <java-symbol type="color" name="surface_effect_2" />
+ <java-symbol type="color" name="surface_effect_3" />
<java-symbol type="color" name="tab_indicator_text_v4" />
<java-symbol type="dimen" name="accessibility_touch_slop" />
@@ -3235,8 +3236,6 @@
<java-symbol type="id" name="header_text" />
<java-symbol type="id" name="header_text_secondary" />
<java-symbol type="id" name="expand_button" />
- <java-symbol type="id" name="expand_button_spacer" />
- <java-symbol type="id" name="expand_button_container" />
<java-symbol type="id" name="expand_button_pill" />
<java-symbol type="id" name="expand_button_pill_colorized_layer" />
<java-symbol type="id" name="expand_button_number" />
@@ -3791,6 +3790,7 @@
<java-symbol type="string" name="accessibility_shortcut_disabling_service" />
<java-symbol type="string" name="color_inversion_feature_name" />
<java-symbol type="string" name="color_correction_feature_name" />
+ <java-symbol type="string" name="autoclick_feature_name"/>
<java-symbol type="string" name="reduce_bright_colors_feature_name" />
<java-symbol type="string" name="config_defaultAccessibilityService" />
<java-symbol type="string" name="config_defaultSelectToSpeakService" />
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp
index 4c49ff8..05fb5735 100644
--- a/core/tests/coretests/Android.bp
+++ b/core/tests/coretests/Android.bp
@@ -249,8 +249,14 @@
android_ravenwood_test {
name: "FrameworksCoreTestsRavenwood",
libs: [
- "android.test.base.stubs.system",
- "android.test.runner.stubs.system",
+ "android.test.base.stubs",
+ "android.test.mock.stubs",
+ "android.test.runner.stubs",
+ "android.view.flags-aconfig-java",
+ "ext",
+ "framework",
+ "framework-res",
+ "org.apache.http.legacy.stubs",
],
static_libs: [
"androidx.annotation_annotation",
@@ -264,6 +270,7 @@
"flag-junit",
"flag-junit",
"perfetto_trace_java_protos",
+ "platform-compat-test-rules",
"platform-test-annotations",
"testng",
],
@@ -278,8 +285,12 @@
"src/android/content/res/*.java",
"src/android/content/res/*.kt",
"src/android/database/CursorWindowTest.java",
+ "src/android/graphics/*.java",
+ "src/android/graphics/*.kt",
"src/android/os/**/*.java",
"src/android/telephony/PinResultTest.java",
+ "src/android/text/**/*.java",
+ "src/android/text/**/*.kt",
"src/android/util/**/*.java",
"src/android/view/DisplayAdjustmentsTests.java",
"src/android/view/DisplayInfoTest.java",
@@ -288,20 +299,21 @@
"src/com/android/internal/os/**/*.java",
"src/com/android/internal/power/EnergyConsumerStatsTest.java",
"src/com/android/internal/ravenwood/**/*.java",
-
- // Pull in R.java from FrameworksCoreTests-resonly, not from FrameworksCoreTests,
- // to avoid having a dependency to FrameworksCoreTests.
- // This way, when updating source files and running this test, we don't need to
- // rebuild the entire FrameworksCoreTests, which would be slow.
"src/com/android/internal/util/**/*.java",
":FrameworksCoreTestDoubles-sources",
":FrameworksCoreTests-aidl",
":FrameworksCoreTests-helpers",
+
+ // Pull in R.java from FrameworksCoreTests-resonly, not from FrameworksCoreTests,
+ // to avoid having a dependency to FrameworksCoreTests.
+ // This way, when updating source files and running this test, we don't need to
+ // rebuild the entire FrameworksCoreTests, which would be slow.
":FrameworksCoreTests-resonly{.aapt.srcjar}",
],
exclude_srcs: [
"src/android/content/res/FontScaleConverterActivityTest.java",
+ "src/android/graphics/GraphicsPerformanceTests.java",
],
resource_apk: "FrameworksCoreTests-resonly",
aidl: {
@@ -313,6 +325,7 @@
"res/xml/power_profile_test_cpu_legacy.xml",
"res/xml/power_profile_test_modem.xml",
],
+ sdk_version: "core_platform",
auto_gen_config: true,
team: "trendy_team_ravenwood",
}
diff --git a/core/tests/coretests/src/android/content/res/FontScaleConverterTest.kt b/core/tests/coretests/src/android/content/res/FontScaleConverterTest.kt
index 0e5d926..2c61442 100644
--- a/core/tests/coretests/src/android/content/res/FontScaleConverterTest.kt
+++ b/core/tests/coretests/src/android/content/res/FontScaleConverterTest.kt
@@ -17,10 +17,8 @@
package android.content.res
import android.platform.test.annotations.Presubmit
-import android.platform.test.ravenwood.RavenwoodRule
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertWithMessage
-import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -28,9 +26,6 @@
@RunWith(AndroidJUnit4::class)
class FontScaleConverterTest {
- @get:Rule
- val ravenwoodRule: RavenwoodRule = RavenwoodRule.Builder().build()
-
@Test
fun straightInterpolation() {
val table = createTable(8f to 8f, 10f to 10f, 20f to 20f)
diff --git a/core/tests/coretests/src/android/graphics/BitmapFactoryTest.java b/core/tests/coretests/src/android/graphics/BitmapFactoryTest.java
index 84bdbe0..263307e 100644
--- a/core/tests/coretests/src/android/graphics/BitmapFactoryTest.java
+++ b/core/tests/coretests/src/android/graphics/BitmapFactoryTest.java
@@ -20,7 +20,9 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import android.os.MemoryFile;
import android.os.ParcelFileDescriptor;
+import android.platform.test.annotations.DisabledOnRavenwood;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -37,6 +39,7 @@
// tests that we can decode bitmaps from MemoryFiles
@SmallTest
@Test
+ @DisabledOnRavenwood(blockedBy = MemoryFile.class)
public void testBitmapParcelFileDescriptor() throws Exception {
Bitmap bitmap1 = Bitmap.createBitmap(
new int[] { Color.BLUE }, 1, 1, Bitmap.Config.RGB_565);
diff --git a/core/tests/coretests/src/android/graphics/BitmapTest.java b/core/tests/coretests/src/android/graphics/BitmapTest.java
index 0126d36..61c3d78 100644
--- a/core/tests/coretests/src/android/graphics/BitmapTest.java
+++ b/core/tests/coretests/src/android/graphics/BitmapTest.java
@@ -22,6 +22,7 @@
import static org.junit.Assert.fail;
import android.hardware.HardwareBuffer;
+import android.platform.test.annotations.DisabledOnRavenwood;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -252,6 +253,7 @@
| GraphicBuffer.USAGE_SW_WRITE_OFTEN;
@Test
+ @DisabledOnRavenwood(blockedBy = HardwareBuffer.class)
public void testWrapHardwareBufferWithSrgbColorSpace() {
GraphicBuffer buffer = GraphicBuffer.create(10, 10, PixelFormat.RGBA_8888, GRAPHICS_USAGE);
Canvas canvas = buffer.lockCanvas();
@@ -265,6 +267,7 @@
}
@Test
+ @DisabledOnRavenwood(blockedBy = HardwareBuffer.class)
public void testWrapHardwareBufferWithDisplayP3ColorSpace() {
GraphicBuffer buffer = GraphicBuffer.create(10, 10, PixelFormat.RGBA_8888, GRAPHICS_USAGE);
Canvas canvas = buffer.lockCanvas();
diff --git a/core/tests/coretests/src/android/graphics/PaintTest.java b/core/tests/coretests/src/android/graphics/PaintTest.java
index 56760d7..deb5157 100644
--- a/core/tests/coretests/src/android/graphics/PaintTest.java
+++ b/core/tests/coretests/src/android/graphics/PaintTest.java
@@ -24,6 +24,7 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
@@ -97,6 +98,7 @@
@SmallTest
@Test
+ @DisabledOnRavenwood(bug = 391381043)
public void testHintingWidth() {
final Typeface fontTypeface = Typeface.createFromAsset(
InstrumentationRegistry.getInstrumentation().getContext().getAssets(), FONT_PATH);
@@ -143,6 +145,7 @@
}
@Test
+ @DisabledOnRavenwood(bug = 391381043)
public void testHasGlyph_variationSelectors() {
final Typeface fontTypeface = Typeface.createFromAsset(
InstrumentationRegistry.getInstrumentation().getContext().getAssets(),
diff --git a/core/tests/coretests/src/android/graphics/TypefaceSystemFallbackTest.java b/core/tests/coretests/src/android/graphics/TypefaceSystemFallbackTest.java
index 2b6eda8f..dc3376e 100644
--- a/core/tests/coretests/src/android/graphics/TypefaceSystemFallbackTest.java
+++ b/core/tests/coretests/src/android/graphics/TypefaceSystemFallbackTest.java
@@ -35,9 +35,9 @@
import android.text.FontConfig;
import android.util.ArrayMap;
-import androidx.test.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import androidx.test.platform.app.InstrumentationRegistry;
import com.android.text.flags.Flags;
@@ -63,9 +63,6 @@
@SmallTest
@RunWith(AndroidJUnit4.class)
public class TypefaceSystemFallbackTest {
- private static final String SYSTEM_FONT_DIR = "/system/fonts/";
- private static final String SYSTEM_FONTS_XML = "/system/etc/fonts.xml";
-
private static final String[] TEST_FONT_FILES = {
"a3em.ttf", // Supports "a","b","c". The width of "a" is 3em, others are 1em.
"b3em.ttf", // Supports "a","b","c". The width of "b" is 3em, others are 1em.
@@ -118,8 +115,6 @@
@Before
public void setUp() {
- final AssetManager am =
- InstrumentationRegistry.getInstrumentation().getContext().getAssets();
for (final String fontFile : TEST_FONT_FILES) {
final String sourceInAsset = "fonts/" + fontFile;
copyAssetToFile(sourceInAsset, new File(TEST_FONT_DIR, fontFile));
@@ -216,7 +211,8 @@
FontConfig fontConfig;
try {
fontConfig = FontListParser.parse(
- SYSTEM_FONTS_XML, SYSTEM_FONT_DIR, null, TEST_OEM_DIR, null, 0, 0);
+ SystemFonts.LEGACY_FONTS_XML, SystemFonts.SYSTEM_FONT_DIR,
+ null, TEST_OEM_DIR, null, 0, 0);
} catch (IOException | XmlPullParserException e) {
throw new RuntimeException(e);
}
diff --git a/core/tests/coretests/src/android/graphics/TypefaceTest.java b/core/tests/coretests/src/android/graphics/TypefaceTest.java
index 80efa51..0c8b5ab 100644
--- a/core/tests/coretests/src/android/graphics/TypefaceTest.java
+++ b/core/tests/coretests/src/android/graphics/TypefaceTest.java
@@ -26,6 +26,7 @@
import android.graphics.fonts.FontFamily;
import android.graphics.fonts.SystemFonts;
import android.os.SharedMemory;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.text.FontConfig;
import android.util.ArrayMap;
@@ -196,6 +197,7 @@
@SmallTest
@Test
+ @DisabledOnRavenwood(blockedBy = SharedMemory.class)
public void testSerialize() throws Exception {
FontConfig fontConfig = SystemFonts.getSystemPreinstalledFontConfig();
Map<String, FontFamily[]> fallbackMap = SystemFonts.buildSystemFallback(fontConfig);
diff --git a/core/tests/coretests/src/android/os/PerfettoTraceTest.java b/core/tests/coretests/src/android/os/PerfettoTraceTest.java
index fb743d2..6915015 100644
--- a/core/tests/coretests/src/android/os/PerfettoTraceTest.java
+++ b/core/tests/coretests/src/android/os/PerfettoTraceTest.java
@@ -108,8 +108,8 @@
PerfettoTrace.Session session = new PerfettoTrace.Session(true, traceConfig.toByteArray());
PerfettoTrace.instant(FOO_CATEGORY, "event")
- .addFlow(2)
- .addTerminatingFlow(3)
+ .setFlow(2)
+ .setTerminatingFlow(3)
.addArg("long_val", 10000000000L)
.addArg("bool_val", true)
.addArg("double_val", 3.14)
diff --git a/core/tests/coretests/src/android/text/AndroidCharacterTest.java b/core/tests/coretests/src/android/text/AndroidCharacterTest.java
index 1c5986a..819a5fb 100644
--- a/core/tests/coretests/src/android/text/AndroidCharacterTest.java
+++ b/core/tests/coretests/src/android/text/AndroidCharacterTest.java
@@ -18,6 +18,7 @@
import static org.junit.Assert.assertArrayEquals;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
@@ -26,6 +27,7 @@
@Presubmit
@SmallTest
+@DisabledOnRavenwood(reason = "No need to make j.l.Character match behavior of AndroidCharacter")
public class AndroidCharacterTest {
@Test
diff --git a/core/tests/coretests/src/android/text/SpanColorsTest.java b/core/tests/coretests/src/android/text/SpanColorsTest.java
index d2cb8c1..4cdbd08 100644
--- a/core/tests/coretests/src/android/text/SpanColorsTest.java
+++ b/core/tests/coretests/src/android/text/SpanColorsTest.java
@@ -20,6 +20,7 @@
import android.graphics.Color;
import android.graphics.drawable.ShapeDrawable;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
@@ -35,6 +36,7 @@
@Presubmit
@SmallTest
@RunWith(AndroidJUnit4.class)
+@DisabledOnRavenwood(blockedBy = ShapeDrawable.class)
public class SpanColorsTest {
private final TextPaint mWorkPaint = new TextPaint();
private SpanColors mSpanColors;
diff --git a/core/tests/coretests/src/android/text/SpannableTest.java b/core/tests/coretests/src/android/text/SpannableTest.java
index a3e6a78..710d1e2 100644
--- a/core/tests/coretests/src/android/text/SpannableTest.java
+++ b/core/tests/coretests/src/android/text/SpannableTest.java
@@ -16,10 +16,10 @@
package android.text;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import android.platform.test.annotations.Presubmit;
-import android.test.MoreAsserts;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -50,13 +50,13 @@
// but other spans are not, unless the query region is empty, in
// in which case any abutting spans are returned.
spans = spannable.getSpans(0, 1, Object.class);
- MoreAsserts.assertEquals(new Object[]{emptySpan}, spans);
+ assertArrayEquals(new Object[]{emptySpan}, spans);
spans = spannable.getSpans(0, 2, Object.class);
- MoreAsserts.assertEquals(new Object[]{emptySpan, unemptySpan}, spans);
+ assertArrayEquals(new Object[]{emptySpan, unemptySpan}, spans);
spans = spannable.getSpans(1, 2, Object.class);
- MoreAsserts.assertEquals(new Object[]{emptySpan, unemptySpan}, spans);
+ assertArrayEquals(new Object[]{emptySpan, unemptySpan}, spans);
spans = spannable.getSpans(2, 2, Object.class);
- MoreAsserts.assertEquals(new Object[]{unemptySpan}, spans);
+ assertArrayEquals(new Object[]{unemptySpan}, spans);
}
@Test
diff --git a/core/tests/coretests/src/android/text/StaticLayoutTest.java b/core/tests/coretests/src/android/text/StaticLayoutTest.java
index 3541900..55f38b2 100644
--- a/core/tests/coretests/src/android/text/StaticLayoutTest.java
+++ b/core/tests/coretests/src/android/text/StaticLayoutTest.java
@@ -25,6 +25,7 @@
import android.graphics.Paint;
import android.graphics.Paint.FontMetricsInt;
import android.os.LocaleList;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import android.text.Layout.Alignment;
import android.text.method.EditorState;
@@ -726,6 +727,7 @@
}
@Test
+ @DisabledOnRavenwood(bug = 391342883)
public void testLocaleSpanAffectsHyphenation() {
TextPaint paint = new TextPaint();
paint.setTextLocale(Locale.US);
diff --git a/core/tests/coretests/src/android/text/TextUtilsTest.java b/core/tests/coretests/src/android/text/TextUtilsTest.java
index f552265..e38c880 100644
--- a/core/tests/coretests/src/android/text/TextUtilsTest.java
+++ b/core/tests/coretests/src/android/text/TextUtilsTest.java
@@ -18,6 +18,7 @@
import static android.text.TextUtils.formatSimple;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -28,7 +29,6 @@
import android.os.Parcel;
import android.platform.test.annotations.Presubmit;
-import android.test.MoreAsserts;
import android.text.style.StyleSpan;
import android.text.util.Rfc822Token;
import android.text.util.Rfc822Tokenizer;
@@ -237,7 +237,7 @@
for (String s : splitter) {
strings.add(s);
}
- MoreAsserts.assertEquals(expectedStrings, strings.toArray(new String[]{}));
+ assertArrayEquals(expectedStrings, strings.toArray(new String[]{}));
}
@Test
diff --git a/core/tests/coretests/src/android/text/format/DateFormatTest.java b/core/tests/coretests/src/android/text/format/DateFormatTest.java
index 59af6dd..c16393c 100644
--- a/core/tests/coretests/src/android/text/format/DateFormatTest.java
+++ b/core/tests/coretests/src/android/text/format/DateFormatTest.java
@@ -74,8 +74,9 @@
DateFormatSymbols dfs = DateFormat.getIcuDateFormatSymbols(Locale.US);
assertEquals("AM", dfs.getAmPmStrings()[0]);
assertEquals("PM", dfs.getAmPmStrings()[1]);
- assertEquals("a", dfs.getAmpmNarrowStrings()[0]);
- assertEquals("p", dfs.getAmpmNarrowStrings()[1]);
+ // getAmpmNarrowStrings() is a @CorePlatformApi that we should stop using in framework
+ // assertEquals("a", dfs.getAmpmNarrowStrings()[0]);
+ // assertEquals("p", dfs.getAmpmNarrowStrings()[1]);
}
@Test
diff --git a/core/tests/coretests/src/android/text/format/DateIntervalFormatTest.java b/core/tests/coretests/src/android/text/format/DateIntervalFormatTest.java
index a07d399..e542734 100644
--- a/core/tests/coretests/src/android/text/format/DateIntervalFormatTest.java
+++ b/core/tests/coretests/src/android/text/format/DateIntervalFormatTest.java
@@ -40,6 +40,7 @@
import android.icu.util.Calendar;
import android.icu.util.TimeZone;
import android.icu.util.ULocale;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -686,6 +687,7 @@
}
@Test
+ @DisabledOnRavenwood(bug = 391381043)
public void testIsLibcoreVFlagEnabled() {
// This flag has been fully ramped. It should never be false.
assertTrue(DateIntervalFormat.isLibcoreVFlagEnabled());
diff --git a/core/tests/coretests/src/android/text/format/DateUtilsTest.java b/core/tests/coretests/src/android/text/format/DateUtilsTest.java
index 47be893..a853d4a 100644
--- a/core/tests/coretests/src/android/text/format/DateUtilsTest.java
+++ b/core/tests/coretests/src/android/text/format/DateUtilsTest.java
@@ -21,6 +21,7 @@
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.LocaleList;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -116,6 +117,7 @@
}
@Test
+ @DisabledOnRavenwood(reason = "DateFormat.set24HourTimePref is not available on host JVM")
public void testFormatSameDayTime() {
// This test assumes a default DateFormat.is24Hour setting.
DateFormat.set24HourTimePref(null);
diff --git a/core/tests/coretests/src/android/text/format/TimeMigrationUtilsTest.java b/core/tests/coretests/src/android/text/format/TimeMigrationUtilsTest.java
index c8cb5f3..49f3373 100644
--- a/core/tests/coretests/src/android/text/format/TimeMigrationUtilsTest.java
+++ b/core/tests/coretests/src/android/text/format/TimeMigrationUtilsTest.java
@@ -18,6 +18,7 @@
import static org.junit.Assert.assertEquals;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -72,6 +73,7 @@
* Compares TimeMigrationUtils.formatSimpleDateTime() with the code it is replacing.
*/
@Test
+ @DisabledOnRavenwood(blockedBy = Time.class)
public void formatMillisAsDateTime_matchesOldBehavior() {
// A selection of interesting locales.
Locale[] locales = new Locale[] {
diff --git a/core/tests/coretests/src/android/text/format/TimeTest.java b/core/tests/coretests/src/android/text/format/TimeTest.java
index 6138ea1..29c5899 100644
--- a/core/tests/coretests/src/android/text/format/TimeTest.java
+++ b/core/tests/coretests/src/android/text/format/TimeTest.java
@@ -20,6 +20,7 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import android.util.Log;
import android.util.TimeFormatException;
@@ -34,6 +35,7 @@
@Presubmit
@SmallTest
@RunWith(AndroidJUnit4.class)
+@DisabledOnRavenwood(blockedBy = Time.class)
public class TimeTest {
@Test
diff --git a/core/tests/coretests/src/android/text/method/BackspaceTest.java b/core/tests/coretests/src/android/text/method/BackspaceTest.java
index a7ff244..646e8f9 100644
--- a/core/tests/coretests/src/android/text/method/BackspaceTest.java
+++ b/core/tests/coretests/src/android/text/method/BackspaceTest.java
@@ -16,6 +16,7 @@
package android.text.method;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import android.text.InputType;
import android.util.KeyUtils;
@@ -41,6 +42,7 @@
@Presubmit
@SmallTest
@RunWith(AndroidJUnit4.class)
+@DisabledOnRavenwood(blockedBy = EditText.class)
public class BackspaceTest {
private EditText mTextView;
diff --git a/core/tests/coretests/src/android/text/method/EditorState.java b/core/tests/coretests/src/android/text/method/EditorState.java
index 4eff7a4..633fa11 100644
--- a/core/tests/coretests/src/android/text/method/EditorState.java
+++ b/core/tests/coretests/src/android/text/method/EditorState.java
@@ -16,7 +16,7 @@
package android.text.method;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -181,4 +181,3 @@
Assert.assertEquals(expected.mSelectionEnd, mSelectionEnd);
}
}
-
diff --git a/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java b/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java
index 1e4024d..8044fd7 100644
--- a/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java
+++ b/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java
@@ -16,6 +16,7 @@
package android.text.method;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import android.text.InputType;
import android.util.KeyUtils;
@@ -40,6 +41,7 @@
@Presubmit
@SmallTest
@RunWith(AndroidJUnit4.class)
+@DisabledOnRavenwood(blockedBy = EditText.class)
public class ForwardDeleteTest {
private EditText mTextView;
diff --git a/core/tests/coretests/src/android/text/method/InsertModeTransformationMethodTest.java b/core/tests/coretests/src/android/text/method/InsertModeTransformationMethodTest.java
index e2c1902..37ad204 100644
--- a/core/tests/coretests/src/android/text/method/InsertModeTransformationMethodTest.java
+++ b/core/tests/coretests/src/android/text/method/InsertModeTransformationMethodTest.java
@@ -19,6 +19,7 @@
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.annotations.Presubmit;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
@@ -44,6 +45,7 @@
@Presubmit
@SmallTest
@RunWith(AndroidJUnit4.class)
+@DisabledOnRavenwood(blockedBy = View.class)
public class InsertModeTransformationMethodTest {
private static View sView;
private static final String TEXT = "abc def";
diff --git a/core/tests/coretests/src/android/text/util/LinkifyTest.java b/core/tests/coretests/src/android/text/util/LinkifyTest.java
index 52f3b2e..98bdb0b 100644
--- a/core/tests/coretests/src/android/text/util/LinkifyTest.java
+++ b/core/tests/coretests/src/android/text/util/LinkifyTest.java
@@ -23,6 +23,7 @@
import android.content.Context;
import android.content.res.Configuration;
import android.os.LocaleList;
+import android.platform.test.annotations.DisabledOnRavenwood;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
@@ -46,6 +47,7 @@
*/
@SmallTest
@RunWith(AndroidJUnit4.class)
+@DisabledOnRavenwood(blockedBy = Linkify.class)
public class LinkifyTest {
private static final LocaleList LOCALE_LIST_US = new LocaleList(Locale.US);
diff --git a/core/tests/coretests/src/android/widget/RemoteViewsTest.java b/core/tests/coretests/src/android/widget/RemoteViewsTest.java
index 8b0d315..9110898 100644
--- a/core/tests/coretests/src/android/widget/RemoteViewsTest.java
+++ b/core/tests/coretests/src/android/widget/RemoteViewsTest.java
@@ -22,6 +22,7 @@
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
@@ -1065,6 +1066,22 @@
assertEquals(b1Memory + b2Memory, rv.estimateTotalBitmapMemoryUsage());
}
+ @Test
+ public void remoteResponse_FillInIntentNestedIntentKeysCollected() {
+ Intent fillInIntent = new Intent();
+ fillInIntent.putExtra("extraIntent", new Intent());
+ RemoteViews.RemoteResponse.fromFillInIntent(fillInIntent);
+ assertNotEquals(0, fillInIntent.getExtendedFlags()
+ & Intent.EXTENDED_FLAG_NESTED_INTENT_KEYS_COLLECTED);
+
+ fillInIntent = new Intent();
+ fillInIntent.putExtra("extraIntent", new Intent());
+ RemoteViews rv = new RemoteViews(mPackage, R.layout.remote_views_test);
+ rv.setOnClickFillInIntent(R.id.view, fillInIntent);
+ assertNotEquals(0, fillInIntent.getExtendedFlags()
+ & Intent.EXTENDED_FLAG_NESTED_INTENT_KEYS_COLLECTED);
+ }
+
private static LayoutInflater.Factory2 createLayoutInflaterFactory(String viewTypeToReplace,
View replacementView) {
return new LayoutInflater.Factory2() {
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelSingleUidTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelSingleUidTimeReaderTest.java
index 3239598..0ba2d85 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelSingleUidTimeReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelSingleUidTimeReaderTest.java
@@ -23,6 +23,7 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import android.annotation.SuppressLint;
import android.platform.test.annotations.IgnoreUnderRavenwood;
import android.platform.test.ravenwood.RavenwoodRule;
import android.util.SparseArray;
@@ -287,6 +288,7 @@
0, lastUidCpuTimes.size());
}
+ @SuppressLint("CheckResult")
@Test
public void testAddDeltaFromBpf() {
LongArrayMultiStateCounter counter = new LongArrayMultiStateCounter(2, 5);
diff --git a/core/tests/coretests/src/com/android/internal/os/LongArrayMultiStateCounterTest.java b/core/tests/coretests/src/com/android/internal/os/LongArrayMultiStateCounterTest.java
index 7e5d0a4..959e121 100644
--- a/core/tests/coretests/src/com/android/internal/os/LongArrayMultiStateCounterTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/LongArrayMultiStateCounterTest.java
@@ -20,6 +20,7 @@
import static org.junit.Assert.assertThrows;
+import android.annotation.SuppressLint;
import android.os.BadParcelableException;
import android.os.Parcel;
import android.platform.test.ravenwood.RavenwoodRule;
@@ -176,6 +177,7 @@
assertCounts(newCounter, 0, new long[]{116, 232, 364, 528});
}
+ @SuppressLint("CheckResult")
private void assertCounts(LongArrayMultiStateCounter counter, int state, long[] expected) {
long[] counts = new long[expected.length];
counter.getCounts(counts, state);
diff --git a/graphics/java/android/graphics/AvoidXfermode.java b/graphics/java/android/graphics/AvoidXfermode.java
index 683c157..5296ee8 100644
--- a/graphics/java/android/graphics/AvoidXfermode.java
+++ b/graphics/java/android/graphics/AvoidXfermode.java
@@ -23,6 +23,7 @@
* @removed
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class AvoidXfermode extends Xfermode {
// these need to match the enum in AvoidXfermode.h on the native side
diff --git a/graphics/java/android/graphics/BLASTBufferQueue.java b/graphics/java/android/graphics/BLASTBufferQueue.java
index 9b9be244..9f60534 100644
--- a/graphics/java/android/graphics/BLASTBufferQueue.java
+++ b/graphics/java/android/graphics/BLASTBufferQueue.java
@@ -26,6 +26,7 @@
/**
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class BLASTBufferQueue {
// Note: This field is accessed by native code.
public long mNativeObject; // BLASTBufferQueue*
diff --git a/graphics/java/android/graphics/BaseCanvas.java b/graphics/java/android/graphics/BaseCanvas.java
index a2a0f49..0ca58cc 100644
--- a/graphics/java/android/graphics/BaseCanvas.java
+++ b/graphics/java/android/graphics/BaseCanvas.java
@@ -48,6 +48,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class BaseCanvas {
/**
* Should only be assigned in constructors (or setBitmap if software canvas),
diff --git a/graphics/java/android/graphics/BaseRecordingCanvas.java b/graphics/java/android/graphics/BaseRecordingCanvas.java
index 5b1fa7b..0511bd1 100644
--- a/graphics/java/android/graphics/BaseRecordingCanvas.java
+++ b/graphics/java/android/graphics/BaseRecordingCanvas.java
@@ -44,6 +44,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BaseRecordingCanvas extends Canvas {
public BaseRecordingCanvas(long nativeCanvas) {
diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index 0c4ea79..cd5a54c 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -51,6 +51,7 @@
import java.util.ArrayList;
import java.util.WeakHashMap;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class Bitmap implements Parcelable {
private static final String TAG = "Bitmap";
diff --git a/graphics/java/android/graphics/BitmapFactory.java b/graphics/java/android/graphics/BitmapFactory.java
index 1c20141..a5535c8 100644
--- a/graphics/java/android/graphics/BitmapFactory.java
+++ b/graphics/java/android/graphics/BitmapFactory.java
@@ -41,6 +41,7 @@
* Creates Bitmap objects from various sources, including files, streams,
* and byte-arrays.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BitmapFactory {
private static final int DECODE_BUFFER_SIZE = 16 * 1024;
diff --git a/graphics/java/android/graphics/BitmapRegionDecoder.java b/graphics/java/android/graphics/BitmapRegionDecoder.java
index 29112af..9b3f715 100644
--- a/graphics/java/android/graphics/BitmapRegionDecoder.java
+++ b/graphics/java/android/graphics/BitmapRegionDecoder.java
@@ -37,6 +37,7 @@
* to get a decoded Bitmap of the specified region.
*
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class BitmapRegionDecoder {
private long mNativeBitmapRegionDecoder;
private boolean mRecycled;
diff --git a/graphics/java/android/graphics/BitmapShader.java b/graphics/java/android/graphics/BitmapShader.java
index dcfff62..ac3543a 100644
--- a/graphics/java/android/graphics/BitmapShader.java
+++ b/graphics/java/android/graphics/BitmapShader.java
@@ -31,6 +31,7 @@
* Shader used to draw a bitmap as a texture. The bitmap can be repeated or
* mirrored by setting the tiling mode.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BitmapShader extends Shader {
/**
* Prevent garbage collection.
diff --git a/graphics/java/android/graphics/BlendMode.java b/graphics/java/android/graphics/BlendMode.java
index c6ae680..c07af4e 100644
--- a/graphics/java/android/graphics/BlendMode.java
+++ b/graphics/java/android/graphics/BlendMode.java
@@ -19,6 +19,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public enum BlendMode {
/**
diff --git a/graphics/java/android/graphics/BlendModeColorFilter.java b/graphics/java/android/graphics/BlendModeColorFilter.java
index d4e2373..d5dd0d3c 100644
--- a/graphics/java/android/graphics/BlendModeColorFilter.java
+++ b/graphics/java/android/graphics/BlendModeColorFilter.java
@@ -23,6 +23,7 @@
* A color filter that can be used to tint the source pixels using a single
* color and a specific {@link BlendMode}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class BlendModeColorFilter extends ColorFilter {
@ColorInt final int mColor;
diff --git a/graphics/java/android/graphics/BlurMaskFilter.java b/graphics/java/android/graphics/BlurMaskFilter.java
index f3064f8..22ed524 100644
--- a/graphics/java/android/graphics/BlurMaskFilter.java
+++ b/graphics/java/android/graphics/BlurMaskFilter.java
@@ -22,6 +22,7 @@
* inside, or straddles, the original mask's border, is controlled by the
* Blur enum.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BlurMaskFilter extends MaskFilter {
public enum Blur {
diff --git a/graphics/java/android/graphics/Camera.java b/graphics/java/android/graphics/Camera.java
index 46640d7..27b695c 100644
--- a/graphics/java/android/graphics/Camera.java
+++ b/graphics/java/android/graphics/Camera.java
@@ -21,6 +21,7 @@
* generate a matrix that can be applied, for instance, on a
* {@link Canvas}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Camera {
/**
* Creates a new camera, with empty transformations.
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index 28c2ca3..9137150b 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -54,6 +54,7 @@
* <a href="{@docRoot}guide/topics/graphics/2d-graphics.html">
* Canvas and Drawables</a> developer guide.</p></div>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Canvas extends BaseCanvas {
private static int sCompatibilityVersion = 0;
private static boolean sCompatibilityRestore = false;
diff --git a/graphics/java/android/graphics/CanvasProperty.java b/graphics/java/android/graphics/CanvasProperty.java
index e949584..755161d 100644
--- a/graphics/java/android/graphics/CanvasProperty.java
+++ b/graphics/java/android/graphics/CanvasProperty.java
@@ -25,6 +25,7 @@
* TODO: Make public?
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class CanvasProperty<T> {
private VirtualRefBasePtr mProperty;
diff --git a/graphics/java/android/graphics/ColorFilter.java b/graphics/java/android/graphics/ColorFilter.java
index 7050325..918f26d 100644
--- a/graphics/java/android/graphics/ColorFilter.java
+++ b/graphics/java/android/graphics/ColorFilter.java
@@ -23,6 +23,7 @@
* each pixel drawn with that paint. This is an abstract class that should
* never be used directly.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ColorFilter {
private static class NoImagePreloadHolder {
diff --git a/graphics/java/android/graphics/ColorMatrixColorFilter.java b/graphics/java/android/graphics/ColorMatrixColorFilter.java
index bfdf318..cb78a83 100644
--- a/graphics/java/android/graphics/ColorMatrixColorFilter.java
+++ b/graphics/java/android/graphics/ColorMatrixColorFilter.java
@@ -27,6 +27,7 @@
*
* @see ColorMatrix
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ColorMatrixColorFilter extends ColorFilter {
@UnsupportedAppUsage
private final ColorMatrix mMatrix = new ColorMatrix();
diff --git a/graphics/java/android/graphics/Compatibility.java b/graphics/java/android/graphics/Compatibility.java
index 747fbf1..f89a4f7 100644
--- a/graphics/java/android/graphics/Compatibility.java
+++ b/graphics/java/android/graphics/Compatibility.java
@@ -21,6 +21,7 @@
* specified by the app.
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class Compatibility {
private Compatibility() {}
diff --git a/graphics/java/android/graphics/ComposePathEffect.java b/graphics/java/android/graphics/ComposePathEffect.java
index 7d59ece..b380d2e 100644
--- a/graphics/java/android/graphics/ComposePathEffect.java
+++ b/graphics/java/android/graphics/ComposePathEffect.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ComposePathEffect extends PathEffect {
/**
diff --git a/graphics/java/android/graphics/ComposeShader.java b/graphics/java/android/graphics/ComposeShader.java
index e714568..57a11d2 100644
--- a/graphics/java/android/graphics/ComposeShader.java
+++ b/graphics/java/android/graphics/ComposeShader.java
@@ -22,6 +22,7 @@
/** A subclass of shader that returns the composition of two other shaders, combined by
an {@link android.graphics.Xfermode} subclass.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ComposeShader extends Shader {
Shader mShaderA;
diff --git a/graphics/java/android/graphics/CornerPathEffect.java b/graphics/java/android/graphics/CornerPathEffect.java
index 8f4d7d9..37f0d29 100644
--- a/graphics/java/android/graphics/CornerPathEffect.java
+++ b/graphics/java/android/graphics/CornerPathEffect.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class CornerPathEffect extends PathEffect {
/**
diff --git a/graphics/java/android/graphics/DashPathEffect.java b/graphics/java/android/graphics/DashPathEffect.java
index ef3ebe8..ff3c376 100644
--- a/graphics/java/android/graphics/DashPathEffect.java
+++ b/graphics/java/android/graphics/DashPathEffect.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DashPathEffect extends PathEffect {
/**
diff --git a/graphics/java/android/graphics/DiscretePathEffect.java b/graphics/java/android/graphics/DiscretePathEffect.java
index 3b3c9c9..77f9845 100644
--- a/graphics/java/android/graphics/DiscretePathEffect.java
+++ b/graphics/java/android/graphics/DiscretePathEffect.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DiscretePathEffect extends PathEffect {
/**
diff --git a/graphics/java/android/graphics/DrawFilter.java b/graphics/java/android/graphics/DrawFilter.java
index c7fdcb2..505a830 100644
--- a/graphics/java/android/graphics/DrawFilter.java
+++ b/graphics/java/android/graphics/DrawFilter.java
@@ -22,6 +22,7 @@
* can disable/enable antialiasing, or change the color for everything this is
* drawn.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DrawFilter {
/**
diff --git a/graphics/java/android/graphics/EmbossMaskFilter.java b/graphics/java/android/graphics/EmbossMaskFilter.java
index 003678a..f0a661f 100644
--- a/graphics/java/android/graphics/EmbossMaskFilter.java
+++ b/graphics/java/android/graphics/EmbossMaskFilter.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class EmbossMaskFilter extends MaskFilter {
/**
* Create an emboss maskfilter
diff --git a/graphics/java/android/graphics/FontFamily.java b/graphics/java/android/graphics/FontFamily.java
index 88f0e8e..09022ee 100644
--- a/graphics/java/android/graphics/FontFamily.java
+++ b/graphics/java/android/graphics/FontFamily.java
@@ -41,6 +41,7 @@
* @deprecated Use {@link android.graphics.fonts.FontFamily} instead.
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class FontFamily {
private static String TAG = "FontFamily";
diff --git a/graphics/java/android/graphics/FontListParser.java b/graphics/java/android/graphics/FontListParser.java
index 13c4a94..8d0f128 100644
--- a/graphics/java/android/graphics/FontListParser.java
+++ b/graphics/java/android/graphics/FontListParser.java
@@ -48,6 +48,7 @@
* Parser for font config files.
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class FontListParser {
private static final String TAG = "FontListParser";
diff --git a/graphics/java/android/graphics/ForceDarkType.java b/graphics/java/android/graphics/ForceDarkType.java
index 396b037..d21aef3 100644
--- a/graphics/java/android/graphics/ForceDarkType.java
+++ b/graphics/java/android/graphics/ForceDarkType.java
@@ -29,6 +29,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ForceDarkType {
/**
* Force dark disabled: normal, default operation.
diff --git a/graphics/java/android/graphics/FrameInfo.java b/graphics/java/android/graphics/FrameInfo.java
index 3b8f466..5202138 100644
--- a/graphics/java/android/graphics/FrameInfo.java
+++ b/graphics/java/android/graphics/FrameInfo.java
@@ -38,6 +38,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class FrameInfo {
public long[] frameInfo = new long[FRAME_INFO_SIZE];
diff --git a/graphics/java/android/graphics/Gainmap.java b/graphics/java/android/graphics/Gainmap.java
index 63ca3b8..7fc13db 100644
--- a/graphics/java/android/graphics/Gainmap.java
+++ b/graphics/java/android/graphics/Gainmap.java
@@ -86,6 +86,7 @@
* for these functions cancels out and does not affect the result, so other bases may be used
* if preferred.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class Gainmap implements Parcelable {
/** @hide */
diff --git a/graphics/java/android/graphics/GraphicBuffer.java b/graphics/java/android/graphics/GraphicBuffer.java
index 6705b25..4982851 100644
--- a/graphics/java/android/graphics/GraphicBuffer.java
+++ b/graphics/java/android/graphics/GraphicBuffer.java
@@ -28,6 +28,7 @@
* @hide
*/
@SuppressWarnings("UnusedDeclaration")
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class GraphicBuffer implements Parcelable {
// Note: keep usage flags in sync with GraphicBuffer.h and gralloc.h
public static final int USAGE_SW_READ_NEVER = 0x0;
diff --git a/graphics/java/android/graphics/GraphicsProtos.java b/graphics/java/android/graphics/GraphicsProtos.java
index 6bc41d3..fa7eaf9 100644
--- a/graphics/java/android/graphics/GraphicsProtos.java
+++ b/graphics/java/android/graphics/GraphicsProtos.java
@@ -24,6 +24,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class GraphicsProtos {
/** GraphicsProtos can never be an instance */
private GraphicsProtos() {}
diff --git a/graphics/java/android/graphics/GraphicsStatsService.java b/graphics/java/android/graphics/GraphicsStatsService.java
index 7a012bc..d0b9998 100644
--- a/graphics/java/android/graphics/GraphicsStatsService.java
+++ b/graphics/java/android/graphics/GraphicsStatsService.java
@@ -74,6 +74,7 @@
* for the process to use.
*
* @hide */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class GraphicsStatsService extends IGraphicsStats.Stub {
public static final String GRAPHICS_STATS_SERVICE = "graphicsstats";
diff --git a/graphics/java/android/graphics/HardwareBufferRenderer.java b/graphics/java/android/graphics/HardwareBufferRenderer.java
index e04f13c..8179870 100644
--- a/graphics/java/android/graphics/HardwareBufferRenderer.java
+++ b/graphics/java/android/graphics/HardwareBufferRenderer.java
@@ -55,6 +55,7 @@
* HardwareBufferRenderer will never clear contents before each draw invocation so previous contents
* in the {@link HardwareBuffer} target will be preserved across renders.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class HardwareBufferRenderer implements AutoCloseable {
private static final ColorSpace DEFAULT_COLORSPACE = ColorSpace.get(Named.SRGB);
diff --git a/graphics/java/android/graphics/HardwareRenderer.java b/graphics/java/android/graphics/HardwareRenderer.java
index ef6b728..3444f84 100644
--- a/graphics/java/android/graphics/HardwareRenderer.java
+++ b/graphics/java/android/graphics/HardwareRenderer.java
@@ -79,6 +79,7 @@
* Failure to do so will cause the render thread to stall on that surface, blocking all
* HardwareRenderer instances.</p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class HardwareRenderer {
private static final String LOG_TAG = "HardwareRenderer";
diff --git a/graphics/java/android/graphics/HardwareRendererObserver.java b/graphics/java/android/graphics/HardwareRendererObserver.java
index d5a6a2f..9926378 100644
--- a/graphics/java/android/graphics/HardwareRendererObserver.java
+++ b/graphics/java/android/graphics/HardwareRendererObserver.java
@@ -28,6 +28,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class HardwareRendererObserver {
private final long[] mFrameMetrics;
private final Handler mHandler;
diff --git a/graphics/java/android/graphics/ImageDecoder.java b/graphics/java/android/graphics/ImageDecoder.java
index 6395179..419929a 100644
--- a/graphics/java/android/graphics/ImageDecoder.java
+++ b/graphics/java/android/graphics/ImageDecoder.java
@@ -44,6 +44,7 @@
import android.net.Uri;
import android.os.Build;
import android.os.Trace;
+import android.ravenwood.annotation.RavenwoodIgnore;
import android.system.ErrnoException;
import android.system.Os;
import android.util.DisplayMetrics;
@@ -173,6 +174,7 @@
* });
* </pre>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class ImageDecoder implements AutoCloseable {
/**
* Source of encoded image data.
@@ -1987,6 +1989,7 @@
* Check if HEVC decoder is supported by the device.
*/
@SuppressWarnings("AndroidFrameworkCompatChange")
+ @RavenwoodIgnore(blockedBy = MediaCodecList.class)
private static boolean isHevcDecoderSupported() {
synchronized (sIsHevcDecoderSupportedLock) {
if (sIsHevcDecoderSupportedInitialized) {
@@ -2010,6 +2013,7 @@
* Checks if the device supports decoding 10-bit AV1.
*/
@SuppressWarnings("AndroidFrameworkCompatChange") // This is not an app-visible API.
+ @RavenwoodIgnore(blockedBy = MediaCodecList.class)
private static boolean isP010SupportedForAV1() {
synchronized (sIsP010SupportedLock) {
if (sIsP010SupportedFlagsInitialized) {
@@ -2025,6 +2029,7 @@
* This method is called by JNI.
*/
@SuppressWarnings("unused")
+ @RavenwoodIgnore(blockedBy = MediaCodecList.class)
private static boolean isP010SupportedForHEVC() {
synchronized (sIsP010SupportedLock) {
if (sIsP010SupportedFlagsInitialized) {
diff --git a/graphics/java/android/graphics/ImageFormat.java b/graphics/java/android/graphics/ImageFormat.java
index b4899f9..4c9f5ac 100644
--- a/graphics/java/android/graphics/ImageFormat.java
+++ b/graphics/java/android/graphics/ImageFormat.java
@@ -24,6 +24,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ImageFormat {
/** @hide */
@Retention(RetentionPolicy.SOURCE)
diff --git a/graphics/java/android/graphics/LayerRasterizer.java b/graphics/java/android/graphics/LayerRasterizer.java
index 25155ab..1a44248 100644
--- a/graphics/java/android/graphics/LayerRasterizer.java
+++ b/graphics/java/android/graphics/LayerRasterizer.java
@@ -20,6 +20,7 @@
* @removed feature is not supported by hw-accerlerated or PDF backends
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LayerRasterizer extends Rasterizer {
public LayerRasterizer() { }
diff --git a/graphics/java/android/graphics/LeakyTypefaceStorage.java b/graphics/java/android/graphics/LeakyTypefaceStorage.java
index 618e60d..25a84369 100644
--- a/graphics/java/android/graphics/LeakyTypefaceStorage.java
+++ b/graphics/java/android/graphics/LeakyTypefaceStorage.java
@@ -32,6 +32,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LeakyTypefaceStorage {
private static final Object sLock = new Object();
diff --git a/graphics/java/android/graphics/LightingColorFilter.java b/graphics/java/android/graphics/LightingColorFilter.java
index fe73a1a..1afdc77 100644
--- a/graphics/java/android/graphics/LightingColorFilter.java
+++ b/graphics/java/android/graphics/LightingColorFilter.java
@@ -40,6 +40,7 @@
* </pre>
* The result is pinned to the <code>[0..255]</code> range for each channel.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LightingColorFilter extends ColorFilter {
@ColorInt
private int mMul;
diff --git a/graphics/java/android/graphics/LinearGradient.java b/graphics/java/android/graphics/LinearGradient.java
index 0879371..c6566c9 100644
--- a/graphics/java/android/graphics/LinearGradient.java
+++ b/graphics/java/android/graphics/LinearGradient.java
@@ -24,6 +24,7 @@
import android.os.Build;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LinearGradient extends Shader {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
private float mX0;
diff --git a/graphics/java/android/graphics/MaskFilter.java b/graphics/java/android/graphics/MaskFilter.java
index d474315..b490650 100644
--- a/graphics/java/android/graphics/MaskFilter.java
+++ b/graphics/java/android/graphics/MaskFilter.java
@@ -21,6 +21,7 @@
* an alpha-channel mask before drawing it. A subclass of MaskFilter may be
* installed into a Paint. Blur and emboss are implemented as subclasses of MaskFilter.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class MaskFilter {
protected void finalize() throws Throwable {
diff --git a/graphics/java/android/graphics/Mesh.java b/graphics/java/android/graphics/Mesh.java
index 6be8332..f4d841b 100644
--- a/graphics/java/android/graphics/Mesh.java
+++ b/graphics/java/android/graphics/Mesh.java
@@ -37,6 +37,7 @@
* for the mesh. Once generated, a mesh object can be drawn through
* {@link Canvas#drawMesh(Mesh, BlendMode, Paint)}
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Mesh {
private long mNativeMeshWrapper;
private boolean mIsIndexed;
diff --git a/graphics/java/android/graphics/MeshSpecification.java b/graphics/java/android/graphics/MeshSpecification.java
index b1aae7f..9c7e948 100644
--- a/graphics/java/android/graphics/MeshSpecification.java
+++ b/graphics/java/android/graphics/MeshSpecification.java
@@ -72,6 +72,7 @@
* These should be kept in mind when generating a mesh specification, as exceeding them will
* lead to errors.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class MeshSpecification {
long mNativeMeshSpec;
diff --git a/graphics/java/android/graphics/Movie.java b/graphics/java/android/graphics/Movie.java
index 9c9535d..cefe391 100644
--- a/graphics/java/android/graphics/Movie.java
+++ b/graphics/java/android/graphics/Movie.java
@@ -27,6 +27,7 @@
* @deprecated Prefer {@link android.graphics.drawable.AnimatedImageDrawable}.
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Movie {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
private long mNativeMovie;
diff --git a/graphics/java/android/graphics/NinePatch.java b/graphics/java/android/graphics/NinePatch.java
index 382269f..00df23f 100644
--- a/graphics/java/android/graphics/NinePatch.java
+++ b/graphics/java/android/graphics/NinePatch.java
@@ -32,6 +32,7 @@
* using a WYSIWYG graphics editor.
* </p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class NinePatch {
/**
* Struct of inset information attached to a 9 patch bitmap.
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 3d4dccf..a0ca098 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -66,6 +66,7 @@
* The Paint class holds the style and color information about how to draw
* geometries, text and bitmaps.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Paint {
private static final String TAG = "Paint";
diff --git a/graphics/java/android/graphics/PaintFlagsDrawFilter.java b/graphics/java/android/graphics/PaintFlagsDrawFilter.java
index 2326611..f4c49b1 100644
--- a/graphics/java/android/graphics/PaintFlagsDrawFilter.java
+++ b/graphics/java/android/graphics/PaintFlagsDrawFilter.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PaintFlagsDrawFilter extends DrawFilter {
/**
* Subclass of DrawFilter that affects every paint by first clearing
diff --git a/graphics/java/android/graphics/PathDashPathEffect.java b/graphics/java/android/graphics/PathDashPathEffect.java
index 2b6a6ed..dc92e6c 100644
--- a/graphics/java/android/graphics/PathDashPathEffect.java
+++ b/graphics/java/android/graphics/PathDashPathEffect.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PathDashPathEffect extends PathEffect {
public enum Style {
diff --git a/graphics/java/android/graphics/PathEffect.java b/graphics/java/android/graphics/PathEffect.java
index 3292501..9bb7193 100644
--- a/graphics/java/android/graphics/PathEffect.java
+++ b/graphics/java/android/graphics/PathEffect.java
@@ -21,6 +21,7 @@
* the geometry of a drawing primitive before it is transformed by the
* canvas' matrix and drawn.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PathEffect {
protected void finalize() throws Throwable {
diff --git a/graphics/java/android/graphics/PathIterator.java b/graphics/java/android/graphics/PathIterator.java
index d7caabf..1ed70d0 100644
--- a/graphics/java/android/graphics/PathIterator.java
+++ b/graphics/java/android/graphics/PathIterator.java
@@ -34,6 +34,7 @@
* <code>PathIterator</code> can be used to query a given {@link Path} object, to discover its
* operations and point values.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PathIterator implements Iterator<PathIterator.Segment> {
private final float[] mPointsArray;
@@ -47,9 +48,11 @@
private static final boolean IS_DALVIK = "dalvik".equalsIgnoreCase(
System.getProperty("java.vm.name"));
- private static final NativeAllocationRegistry sRegistry =
- NativeAllocationRegistry.createMalloced(
- PathIterator.class.getClassLoader(), nGetFinalizer());
+ private static class NoImagePreloadHolder {
+ private static final NativeAllocationRegistry sRegistry =
+ NativeAllocationRegistry.createMalloced(
+ PathIterator.class.getClassLoader(), nGetFinalizer());
+ }
/**
* The <code>Verb</code> indicates the operation for a given segment of a path. These
@@ -69,6 +72,11 @@
public static final int VERB_CLOSE = 5;
public static final int VERB_DONE = 6;
+
+ static {
+ // Keep <cinit> exist in bytecode
+ }
+
/**
* Returns a {@link PathIterator} object for this path, which can be used to query the
* data (operations and points) in the path. Iterators can only be used on Path objects
@@ -90,7 +98,7 @@
mPointsArray = new float[POINT_ARRAY_SIZE];
mPointsAddress = 0;
}
- sRegistry.registerNativeAllocation(this, mNativeIterator);
+ NoImagePreloadHolder.sRegistry.registerNativeAllocation(this, mNativeIterator);
}
/**
diff --git a/graphics/java/android/graphics/PathMeasure.java b/graphics/java/android/graphics/PathMeasure.java
index 2c6cfa5..4d123db 100644
--- a/graphics/java/android/graphics/PathMeasure.java
+++ b/graphics/java/android/graphics/PathMeasure.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PathMeasure {
private Path mPath;
diff --git a/graphics/java/android/graphics/Picture.java b/graphics/java/android/graphics/Picture.java
index ee4165b..54eb2bc 100644
--- a/graphics/java/android/graphics/Picture.java
+++ b/graphics/java/android/graphics/Picture.java
@@ -33,6 +33,7 @@
* <p class="note"><strong>Note:</strong> Prior to API level 23 a picture cannot
* be replayed on a hardware accelerated canvas.</p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Picture {
private PictureCanvas mRecordingCanvas;
// TODO: Figure out if this was a false-positive
diff --git a/graphics/java/android/graphics/PixelXorXfermode.java b/graphics/java/android/graphics/PixelXorXfermode.java
index 27884e0..6427852 100644
--- a/graphics/java/android/graphics/PixelXorXfermode.java
+++ b/graphics/java/android/graphics/PixelXorXfermode.java
@@ -20,6 +20,7 @@
* @removed
*/
@Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PixelXorXfermode extends Xfermode {
public PixelXorXfermode(int opColor) {
diff --git a/graphics/java/android/graphics/PorterDuff.java b/graphics/java/android/graphics/PorterDuff.java
index eb940e2..730a804 100644
--- a/graphics/java/android/graphics/PorterDuff.java
+++ b/graphics/java/android/graphics/PorterDuff.java
@@ -26,6 +26,7 @@
*
* Consider using {@link BlendMode} instead as it provides a wider variety of tinting options
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PorterDuff {
/**
* {@usesMathJax}
diff --git a/graphics/java/android/graphics/PorterDuffColorFilter.java b/graphics/java/android/graphics/PorterDuffColorFilter.java
index 0700f21..777ef6c 100644
--- a/graphics/java/android/graphics/PorterDuffColorFilter.java
+++ b/graphics/java/android/graphics/PorterDuffColorFilter.java
@@ -25,6 +25,7 @@
* A color filter that can be used to tint the source pixels using a single
* color and a specific {@link PorterDuff Porter-Duff composite mode}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PorterDuffColorFilter extends ColorFilter {
@ColorInt
private int mColor;
diff --git a/graphics/java/android/graphics/PorterDuffXfermode.java b/graphics/java/android/graphics/PorterDuffXfermode.java
index 83d0507..e10d7370 100644
--- a/graphics/java/android/graphics/PorterDuffXfermode.java
+++ b/graphics/java/android/graphics/PorterDuffXfermode.java
@@ -23,6 +23,7 @@
* information on the available alpha compositing and blending modes.</p>
*
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class PorterDuffXfermode extends Xfermode {
/**
* Create an xfermode that uses the specified porter-duff mode.
diff --git a/graphics/java/android/graphics/PostProcessor.java b/graphics/java/android/graphics/PostProcessor.java
index 6fed39b..066214a 100644
--- a/graphics/java/android/graphics/PostProcessor.java
+++ b/graphics/java/android/graphics/PostProcessor.java
@@ -37,6 +37,7 @@
*
* <p>Supplied to ImageDecoder via {@link ImageDecoder#setPostProcessor setPostProcessor}.</p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface PostProcessor {
/**
* Do any processing after (for example) decoding.
diff --git a/graphics/java/android/graphics/RadialGradient.java b/graphics/java/android/graphics/RadialGradient.java
index e582e66..06e92ea 100644
--- a/graphics/java/android/graphics/RadialGradient.java
+++ b/graphics/java/android/graphics/RadialGradient.java
@@ -24,6 +24,7 @@
import android.compat.annotation.UnsupportedAppUsage;
import android.os.Build;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RadialGradient extends Shader {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
private float mX;
diff --git a/graphics/java/android/graphics/Rasterizer.java b/graphics/java/android/graphics/Rasterizer.java
index 5750954..5e67da5 100644
--- a/graphics/java/android/graphics/Rasterizer.java
+++ b/graphics/java/android/graphics/Rasterizer.java
@@ -24,6 +24,7 @@
/**
* @removed feature is not supported by hw-accerlerated or PDF backends
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Rasterizer {
protected void finalize() throws Throwable { }
diff --git a/graphics/java/android/graphics/RecordingCanvas.java b/graphics/java/android/graphics/RecordingCanvas.java
index cc5b3b9..a56f461 100644
--- a/graphics/java/android/graphics/RecordingCanvas.java
+++ b/graphics/java/android/graphics/RecordingCanvas.java
@@ -33,6 +33,7 @@
* {@link RenderNode#endRecording()} is called. It must not be retained beyond that as it is
* internally reused.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class RecordingCanvas extends BaseRecordingCanvas {
// The recording canvas pool should be large enough to handle a deeply nested
// view hierarchy because display lists are generated recursively.
diff --git a/graphics/java/android/graphics/Region.java b/graphics/java/android/graphics/Region.java
index 2970873..e2215d4 100644
--- a/graphics/java/android/graphics/Region.java
+++ b/graphics/java/android/graphics/Region.java
@@ -23,6 +23,7 @@
import android.os.Parcelable;
import android.util.Pools.SynchronizedPool;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Region implements Parcelable {
private static final int MAX_POOL_SIZE = 10;
diff --git a/graphics/java/android/graphics/RegionIterator.java b/graphics/java/android/graphics/RegionIterator.java
index 443b23c..5d74487 100644
--- a/graphics/java/android/graphics/RegionIterator.java
+++ b/graphics/java/android/graphics/RegionIterator.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RegionIterator {
/**
diff --git a/graphics/java/android/graphics/RenderEffect.java b/graphics/java/android/graphics/RenderEffect.java
index b8a4685..06bfb82 100644
--- a/graphics/java/android/graphics/RenderEffect.java
+++ b/graphics/java/android/graphics/RenderEffect.java
@@ -30,6 +30,7 @@
* Additionally a {@link RenderEffect} can be applied to a View's backing RenderNode through
* {@link android.view.View#setRenderEffect(RenderEffect)}
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class RenderEffect {
private static class RenderEffectHolder {
diff --git a/graphics/java/android/graphics/RenderNode.java b/graphics/java/android/graphics/RenderNode.java
index 03a8b30..fa41876 100644
--- a/graphics/java/android/graphics/RenderNode.java
+++ b/graphics/java/android/graphics/RenderNode.java
@@ -192,6 +192,7 @@
* top-level content is desired, and finally calling {@link Surface#unlockCanvasAndPost(Canvas)}.
* </p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class RenderNode {
// Use a Holder to allow static initialization in the boot image.
diff --git a/graphics/java/android/graphics/RuntimeColorFilter.java b/graphics/java/android/graphics/RuntimeColorFilter.java
index a64acfe..06aecc3 100644
--- a/graphics/java/android/graphics/RuntimeColorFilter.java
+++ b/graphics/java/android/graphics/RuntimeColorFilter.java
@@ -37,6 +37,7 @@
* </pre>
*/
@FlaggedApi(Flags.FLAG_RUNTIME_COLOR_FILTERS_BLENDERS)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RuntimeColorFilter extends ColorFilter {
private String mAgsl;
diff --git a/graphics/java/android/graphics/RuntimeShader.java b/graphics/java/android/graphics/RuntimeShader.java
index db2376e..6464f72 100644
--- a/graphics/java/android/graphics/RuntimeShader.java
+++ b/graphics/java/android/graphics/RuntimeShader.java
@@ -248,6 +248,7 @@
* the bitmap), remember that the coordinates are local to the canvas.</p>
*
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RuntimeShader extends Shader {
private static class NoImagePreloadHolder {
diff --git a/graphics/java/android/graphics/RuntimeXfermode.java b/graphics/java/android/graphics/RuntimeXfermode.java
index c8a0b1a..1e20bd3 100644
--- a/graphics/java/android/graphics/RuntimeXfermode.java
+++ b/graphics/java/android/graphics/RuntimeXfermode.java
@@ -39,6 +39,7 @@
* </pre>
*/
@FlaggedApi(Flags.FLAG_RUNTIME_COLOR_FILTERS_BLENDERS)
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RuntimeXfermode extends Xfermode {
private static class NoImagePreloadHolder {
diff --git a/graphics/java/android/graphics/Shader.java b/graphics/java/android/graphics/Shader.java
index 4d6bead..369fab4 100644
--- a/graphics/java/android/graphics/Shader.java
+++ b/graphics/java/android/graphics/Shader.java
@@ -29,6 +29,7 @@
* paint.setShader(shader). After that any object (other than a bitmap) that is
* drawn with that paint will get its color(s) from the shader.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Shader {
private static class NoImagePreloadHolder {
diff --git a/graphics/java/android/graphics/SumPathEffect.java b/graphics/java/android/graphics/SumPathEffect.java
index 8fedc31..3543e10 100644
--- a/graphics/java/android/graphics/SumPathEffect.java
+++ b/graphics/java/android/graphics/SumPathEffect.java
@@ -16,6 +16,7 @@
package android.graphics;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SumPathEffect extends PathEffect {
/**
diff --git a/graphics/java/android/graphics/SurfaceTexture.java b/graphics/java/android/graphics/SurfaceTexture.java
index 5caedba..df384ea 100644
--- a/graphics/java/android/graphics/SurfaceTexture.java
+++ b/graphics/java/android/graphics/SurfaceTexture.java
@@ -78,6 +78,7 @@
* frame-available callback is called on an arbitrary thread, so unless special care is taken {@link
* #updateTexImage} should not be called directly from the callback.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SurfaceTexture {
private final Looper mCreatorLooper;
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
diff --git a/graphics/java/android/graphics/SweepGradient.java b/graphics/java/android/graphics/SweepGradient.java
index 3a29395..9421925 100644
--- a/graphics/java/android/graphics/SweepGradient.java
+++ b/graphics/java/android/graphics/SweepGradient.java
@@ -23,6 +23,7 @@
import android.compat.annotation.UnsupportedAppUsage;
import android.os.Build;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SweepGradient extends Shader {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
private float mCx;
diff --git a/graphics/java/android/graphics/TableMaskFilter.java b/graphics/java/android/graphics/TableMaskFilter.java
index 204f970..ca7627c 100644
--- a/graphics/java/android/graphics/TableMaskFilter.java
+++ b/graphics/java/android/graphics/TableMaskFilter.java
@@ -21,6 +21,7 @@
/**
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TableMaskFilter extends MaskFilter {
public TableMaskFilter(byte[] table) {
diff --git a/graphics/java/android/graphics/TemporaryBuffer.java b/graphics/java/android/graphics/TemporaryBuffer.java
index ef3f7f7..681c48e 100644
--- a/graphics/java/android/graphics/TemporaryBuffer.java
+++ b/graphics/java/android/graphics/TemporaryBuffer.java
@@ -23,6 +23,7 @@
/**
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TemporaryBuffer {
@UnsupportedAppUsage
public static char[] obtain(int len) {
diff --git a/graphics/java/android/graphics/TextureLayer.java b/graphics/java/android/graphics/TextureLayer.java
index ac1bd69..981b78a 100644
--- a/graphics/java/android/graphics/TextureLayer.java
+++ b/graphics/java/android/graphics/TextureLayer.java
@@ -29,6 +29,7 @@
*
* @hide TODO: Make this a SystemApi for b/155905258
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class TextureLayer implements AutoCloseable {
private HardwareRenderer mRenderer;
private VirtualRefBasePtr mFinalizer;
diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java
index 874b847..d1aca34 100644
--- a/graphics/java/android/graphics/Typeface.java
+++ b/graphics/java/android/graphics/Typeface.java
@@ -42,6 +42,7 @@
import android.os.Trace;
import android.provider.FontRequest;
import android.provider.FontsContract;
+import android.ravenwood.annotation.RavenwoodReplace;
import android.system.ErrnoException;
import android.system.OsConstants;
import android.text.FontConfig;
@@ -86,6 +87,7 @@
* textSize, textSkewX, textScaleX to specify
* how text appears when drawn (and measured).
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Typeface {
private static String TAG = "Typeface";
@@ -93,9 +95,11 @@
/** @hide */
public static final boolean ENABLE_LAZY_TYPEFACE_INITIALIZATION = true;
- private static final NativeAllocationRegistry sRegistry =
- NativeAllocationRegistry.createMalloced(
- Typeface.class.getClassLoader(), nativeGetReleaseFunc());
+ private static class NoImagePreloadHolder {
+ static final NativeAllocationRegistry sRegistry =
+ NativeAllocationRegistry.createMalloced(
+ Typeface.class.getClassLoader(), nativeGetReleaseFunc());
+ }
/** The default NORMAL typeface object */
public static final Typeface DEFAULT = null;
@@ -1284,7 +1288,7 @@
}
native_instance = ni;
- mCleaner = sRegistry.registerNativeAllocation(this, native_instance);
+ mCleaner = NoImagePreloadHolder.sRegistry.registerNativeAllocation(this, native_instance);
mStyle = nativeGetStyle(ni);
mWeight = nativeGetWeight(ni);
mIsVariationInstance = nativeIsVariationInstance(ni);
@@ -1560,9 +1564,23 @@
}
static {
+ staticInitializer();
+ }
+
+ @RavenwoodReplace(reason = "Prevent circular reference on host side JVM", bug = 337329128)
+ private static void staticInitializer() {
+ init();
+ }
+
+ private static void staticInitializer$ravenwood() {
+ /* no-op */
+ }
+
+ /** @hide */
+ public static void init() {
// Preload Roboto-Regular.ttf in Zygote for improving app launch performance.
- preloadFontFile("/system/fonts/Roboto-Regular.ttf");
- preloadFontFile("/system/fonts/RobotoStatic-Regular.ttf");
+ preloadFontFile(SystemFonts.SYSTEM_FONT_DIR + "Roboto-Regular.ttf");
+ preloadFontFile(SystemFonts.SYSTEM_FONT_DIR + "RobotoStatic-Regular.ttf");
String locale = SystemProperties.get("persist.sys.locale", "en-US");
String script = ULocale.addLikelySubtags(ULocale.forLanguageTag(locale)).getScript();
@@ -1642,6 +1660,21 @@
setSystemFontMap(typefaceMap);
}
+ /**
+ * {@link #loadPreinstalledSystemFontMap()} does not actually initialize the native
+ * system font APIs. Add a new method to actually load the font files without going
+ * through SharedMemory.
+ *
+ * @hide
+ */
+ public static void loadNativeSystemFonts() {
+ synchronized (SYSTEM_FONT_MAP_LOCK) {
+ for (var type : sSystemFontMap.values()) {
+ nativeAddFontCollections(type.native_instance);
+ }
+ }
+ }
+
static {
if (!ENABLE_LAZY_TYPEFACE_INITIALIZATION) {
loadPreinstalledSystemFontMap();
diff --git a/graphics/java/android/graphics/Xfermode.java b/graphics/java/android/graphics/Xfermode.java
index fb689e4..eda9e3c 100644
--- a/graphics/java/android/graphics/Xfermode.java
+++ b/graphics/java/android/graphics/Xfermode.java
@@ -28,4 +28,5 @@
* specified in the Modes enum. When an Xfermode is assigned to a Paint, then
* objects drawn with that paint have the xfermode applied.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Xfermode {}
diff --git a/graphics/java/android/graphics/YuvImage.java b/graphics/java/android/graphics/YuvImage.java
index b0c7f20..2b7f404 100644
--- a/graphics/java/android/graphics/YuvImage.java
+++ b/graphics/java/android/graphics/YuvImage.java
@@ -32,6 +32,7 @@
* To compress a rectangle region in the YUV data, users have to specify the
* region by left, top, width and height.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class YuvImage {
/**
diff --git a/graphics/java/android/graphics/fonts/Font.java b/graphics/java/android/graphics/fonts/Font.java
index 2893177..8be3400 100644
--- a/graphics/java/android/graphics/fonts/Font.java
+++ b/graphics/java/android/graphics/fonts/Font.java
@@ -44,6 +44,7 @@
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
+import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import java.util.Arrays;
import java.util.Collections;
@@ -54,6 +55,7 @@
/**
* A font class can be used for creating FontFamily.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class Font {
private static final String TAG = "Font";
@@ -293,7 +295,14 @@
int capacity = assetStream.available();
ByteBuffer buffer = ByteBuffer.allocateDirect(capacity);
buffer.order(ByteOrder.nativeOrder());
- assetStream.read(buffer.array(), buffer.arrayOffset(), assetStream.available());
+ if (buffer.hasArray()) {
+ assetStream.read(buffer.array(), buffer.arrayOffset(), assetStream.available());
+ } else {
+ // Direct buffer does not have a backing array on Ravenwood,
+ // wrap it with a channel and read from it
+ var ch = Channels.newChannel(assetStream);
+ ch.read(buffer.duplicate());
+ }
if (assetStream.read() != -1) {
throw new IOException("Unable to access full contents of " + path);
diff --git a/graphics/java/android/graphics/fonts/FontCustomizationParser.java b/graphics/java/android/graphics/fonts/FontCustomizationParser.java
index b7bf055..732a5f3 100644
--- a/graphics/java/android/graphics/fonts/FontCustomizationParser.java
+++ b/graphics/java/android/graphics/fonts/FontCustomizationParser.java
@@ -43,6 +43,7 @@
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class FontCustomizationParser {
private static final String TAG = "FontCustomizationParser";
diff --git a/graphics/java/android/graphics/fonts/FontFamily.java b/graphics/java/android/graphics/fonts/FontFamily.java
index 5a7b0bb..0ab4639 100644
--- a/graphics/java/android/graphics/fonts/FontFamily.java
+++ b/graphics/java/android/graphics/fonts/FontFamily.java
@@ -66,6 +66,7 @@
* </p>
*
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class FontFamily {
private static final String TAG = "FontFamily";
diff --git a/graphics/java/android/graphics/fonts/FontFileUtil.java b/graphics/java/android/graphics/fonts/FontFileUtil.java
index abcafb6..305ab3b 100644
--- a/graphics/java/android/graphics/fonts/FontFileUtil.java
+++ b/graphics/java/android/graphics/fonts/FontFileUtil.java
@@ -32,6 +32,7 @@
* Provides a utility for font file operations.
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class FontFileUtil {
private FontFileUtil() {} // Do not instantiate
diff --git a/graphics/java/android/graphics/fonts/FontStyle.java b/graphics/java/android/graphics/fonts/FontStyle.java
index 48969aa..b3ddbed 100644
--- a/graphics/java/android/graphics/fonts/FontStyle.java
+++ b/graphics/java/android/graphics/fonts/FontStyle.java
@@ -44,6 +44,7 @@
* </p>
*
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class FontStyle {
private static final String TAG = "FontStyle";
diff --git a/graphics/java/android/graphics/fonts/FontVariationAxis.java b/graphics/java/android/graphics/fonts/FontVariationAxis.java
index 30a248b..1d71594 100644
--- a/graphics/java/android/graphics/fonts/FontVariationAxis.java
+++ b/graphics/java/android/graphics/fonts/FontVariationAxis.java
@@ -31,6 +31,7 @@
/**
* Class that holds information about single font variation axis.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class FontVariationAxis {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
private final int mTag;
diff --git a/graphics/java/android/graphics/fonts/SystemFonts.java b/graphics/java/android/graphics/fonts/SystemFonts.java
index 0e25c34..599c426 100644
--- a/graphics/java/android/graphics/fonts/SystemFonts.java
+++ b/graphics/java/android/graphics/fonts/SystemFonts.java
@@ -25,6 +25,7 @@
import android.graphics.FontListParser;
import android.graphics.Typeface;
import android.os.LocaleList;
+import android.ravenwood.annotation.RavenwoodReplace;
import android.text.FontConfig;
import android.util.ArrayMap;
import android.util.Log;
@@ -32,6 +33,7 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.ravenwood.RavenwoodEnvironment;
import org.xmlpull.v1.XmlPullParserException;
@@ -50,23 +52,46 @@
/**
* Provides the system font configurations.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class SystemFonts {
private static final String TAG = "SystemFonts";
- private static final String FONTS_XML = "/system/etc/font_fallback.xml";
- private static final String LEGACY_FONTS_XML = "/system/etc/fonts.xml";
+ private static final String FONTS_XML = getFontsXmlDir() + "font_fallback.xml";
+ /** @hide */
+ public static final String LEGACY_FONTS_XML = getFontsXmlDir() + "fonts.xml";
/** @hide */
- public static final String SYSTEM_FONT_DIR = "/system/fonts/";
+ public static final String SYSTEM_FONT_DIR = getSystemFontDir();
private static final String OEM_XML = "/product/etc/fonts_customization.xml";
/** @hide */
public static final String OEM_FONT_DIR = "/product/fonts/";
+ private static final String DEVICE_FONTS_XML_DIR = "/system/etc/";
+ private static final String DEVICE_FONT_DIR = "/system/fonts/";
+
private SystemFonts() {} // Do not instansiate.
private static final Object LOCK = new Object();
private static @GuardedBy("sLock") Set<Font> sAvailableFonts;
+ @RavenwoodReplace
+ private static String getFontsXmlDir() {
+ return DEVICE_FONTS_XML_DIR;
+ }
+
+ private static String getFontsXmlDir$ravenwood() {
+ return RavenwoodEnvironment.getInstance().getRavenwoodRuntimePath() + "fonts/";
+ }
+
+ @RavenwoodReplace
+ private static String getSystemFontDir() {
+ return DEVICE_FONT_DIR;
+ }
+
+ private static String getSystemFontDir$ravenwood() {
+ return RavenwoodEnvironment.getInstance().getRavenwoodRuntimePath() + "fonts/";
+ }
+
/**
* Returns all available font files in the system.
*
diff --git a/graphics/java/android/graphics/text/GraphemeBreak.java b/graphics/java/android/graphics/text/GraphemeBreak.java
index f82b2fd..0bc1e3b 100644
--- a/graphics/java/android/graphics/text/GraphemeBreak.java
+++ b/graphics/java/android/graphics/text/GraphemeBreak.java
@@ -17,6 +17,7 @@
package android.graphics.text;
/** @hide */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class GraphemeBreak {
private GraphemeBreak() { }
diff --git a/graphics/java/android/graphics/text/LineBreakConfig.java b/graphics/java/android/graphics/text/LineBreakConfig.java
index 5a1086c..fa3cfbd 100644
--- a/graphics/java/android/graphics/text/LineBreakConfig.java
+++ b/graphics/java/android/graphics/text/LineBreakConfig.java
@@ -24,12 +24,13 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
-import android.app.ActivityThread;
import android.os.Build;
import android.os.LocaleList;
import android.os.Parcel;
import android.os.Parcelable;
+import dalvik.system.VMRuntime;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Objects;
@@ -41,6 +42,7 @@
* <a href="https://www.w3.org/TR/css-text-3/#line-break-property" class="external">
* line-break property</a> for more information.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class LineBreakConfig implements Parcelable {
/**
* No hyphenation preference is specified.
@@ -484,8 +486,7 @@
* @hide
*/
public static @LineBreakStyle int getResolvedLineBreakStyle(@Nullable LineBreakConfig config) {
- final int targetSdkVersion = ActivityThread.currentApplication().getApplicationInfo()
- .targetSdkVersion;
+ final int targetSdkVersion = VMRuntime.getRuntime().getTargetSdkVersion();
final int defaultStyle;
final int vicVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM;
if (targetSdkVersion >= vicVersion) {
@@ -519,8 +520,7 @@
*/
public static @LineBreakWordStyle int getResolvedLineBreakWordStyle(
@Nullable LineBreakConfig config) {
- final int targetSdkVersion = ActivityThread.currentApplication().getApplicationInfo()
- .targetSdkVersion;
+ final int targetSdkVersion = VMRuntime.getRuntime().getTargetSdkVersion();
final int defaultWordStyle;
final int vicVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM;
if (targetSdkVersion >= vicVersion) {
diff --git a/graphics/java/android/graphics/text/LineBreaker.java b/graphics/java/android/graphics/text/LineBreaker.java
index 94de066..29135b8 100644
--- a/graphics/java/android/graphics/text/LineBreaker.java
+++ b/graphics/java/android/graphics/text/LineBreaker.java
@@ -91,6 +91,7 @@
* </pre>
* </p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LineBreaker {
/** @hide */
@IntDef(prefix = { "BREAK_STRATEGY_" }, value = {
diff --git a/graphics/java/android/graphics/text/MeasuredText.java b/graphics/java/android/graphics/text/MeasuredText.java
index 884268a..f58d531 100644
--- a/graphics/java/android/graphics/text/MeasuredText.java
+++ b/graphics/java/android/graphics/text/MeasuredText.java
@@ -56,6 +56,7 @@
* </pre>
* </p>
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class MeasuredText {
private static final String TAG = "MeasuredText";
diff --git a/graphics/java/android/graphics/text/PositionedGlyphs.java b/graphics/java/android/graphics/text/PositionedGlyphs.java
index 43216ba..31125ff 100644
--- a/graphics/java/android/graphics/text/PositionedGlyphs.java
+++ b/graphics/java/android/graphics/text/PositionedGlyphs.java
@@ -46,6 +46,7 @@
* @see TextRunShaper#shapeTextRun(char[], int, int, int, int, float, float, boolean, Paint)
* @see TextRunShaper#shapeTextRun(CharSequence, int, int, int, int, float, float, boolean, Paint)
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class PositionedGlyphs {
private static class NoImagePreloadHolder {
private static final NativeAllocationRegistry REGISTRY =
diff --git a/graphics/java/android/graphics/text/TextRunShaper.java b/graphics/java/android/graphics/text/TextRunShaper.java
index 19ea04a..f1e3d67 100644
--- a/graphics/java/android/graphics/text/TextRunShaper.java
+++ b/graphics/java/android/graphics/text/TextRunShaper.java
@@ -40,6 +40,7 @@
* @see android.text.TextShaper#shapeText(CharSequence, int, int, TextDirectionHeuristic, TextPaint,
* TextShaper.GlyphsConsumer)
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class TextRunShaper {
private TextRunShaper() {} // Do not instantiate
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
index eb59d6ef..7ab9e2e 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
@@ -705,8 +705,7 @@
}
private static boolean isOverlayTransitionSupported() {
- return Flags.moveAnimationOptionsToChange()
- && Flags.activityEmbeddingOverlayPresentationFlag();
+ return Flags.activityEmbeddingOverlayPresentationFlag();
}
@NonNull
diff --git a/libs/WindowManager/Shell/aconfig/multitasking.aconfig b/libs/WindowManager/Shell/aconfig/multitasking.aconfig
index a08f88a..1e72d64 100644
--- a/libs/WindowManager/Shell/aconfig/multitasking.aconfig
+++ b/libs/WindowManager/Shell/aconfig/multitasking.aconfig
@@ -184,3 +184,13 @@
description: "Try out bubble bar on phones"
bug: "394869612"
}
+
+flag {
+ name: "enable_bubble_task_view_listener"
+ namespace: "multitasking"
+ description: "Use the same taskview listener for bubble bar and floating"
+ bug: "272102927"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/libs/WindowManager/Shell/multivalentTests/AndroidManifest.xml b/libs/WindowManager/Shell/multivalentTests/AndroidManifest.xml
index 95cd1c7..800ea74 100644
--- a/libs/WindowManager/Shell/multivalentTests/AndroidManifest.xml
+++ b/libs/WindowManager/Shell/multivalentTests/AndroidManifest.xml
@@ -2,6 +2,7 @@
package="com.android.wm.shell.multivalenttests">
<uses-permission android:name="android.permission.MANAGE_ACTIVITY_TASKS"/>
+ <uses-permission android:name="android.permission.GET_INTENT_SENDER_INTENT"/>
<application android:debuggable="true" android:supportsRtl="true" >
<uses-library android:name="android.test.runner" />
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleTaskViewListenerTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleTaskViewListenerTest.kt
index 9ebc3d7..3aefcd5 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleTaskViewListenerTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleTaskViewListenerTest.kt
@@ -16,6 +16,7 @@
package com.android.wm.shell.bubbles
+import android.app.ActivityOptions
import android.app.Notification
import android.app.PendingIntent
import android.content.ComponentName
@@ -24,6 +25,8 @@
import android.content.pm.ShortcutInfo
import android.graphics.drawable.Icon
import android.os.UserHandle
+import android.platform.test.annotations.EnableFlags
+import android.platform.test.flag.junit.SetFlagsRule
import android.service.notification.NotificationListenerService.Ranking
import android.service.notification.StatusBarNotification
import android.view.View
@@ -33,6 +36,7 @@
import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
import com.android.internal.protolog.ProtoLog
+import com.android.wm.shell.Flags.FLAG_ENABLE_BUBBLE_ANYTHING
import com.android.wm.shell.R
import com.android.wm.shell.bubbles.Bubbles.BubbleMetadataFlagListener
import com.android.wm.shell.common.TestShellExecutor
@@ -41,6 +45,7 @@
import com.android.wm.shell.taskview.TaskViewTaskController
import com.google.common.truth.Truth.assertThat
import org.junit.Before
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito
@@ -48,6 +53,7 @@
import org.mockito.Mockito.reset
import org.mockito.kotlin.any
import org.mockito.kotlin.anyOrNull
+import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
@@ -61,6 +67,9 @@
@RunWith(AndroidJUnit4::class)
class BubbleTaskViewListenerTest {
+ @get:Rule
+ val setFlagsRule = SetFlagsRule()
+
private val context = ApplicationProvider.getApplicationContext<Context>()
private var taskViewController = mock<TaskViewController>()
@@ -155,9 +164,22 @@
}
getInstrumentation().waitForIdleSync()
- // ..so it's pending intent-based, and launches that
+ // ..so it's pending intent-based, so the pending intent should be active
assertThat(b.isPendingIntentActive).isTrue()
- verify(taskViewController).startActivity(any(), eq(pendingIntent), any(), any(), any())
+
+ val intentCaptor = argumentCaptor<Intent>()
+ val optionsCaptor = argumentCaptor<ActivityOptions>()
+
+ verify(taskViewController).startActivity(any(),
+ eq(pendingIntent),
+ intentCaptor.capture(),
+ optionsCaptor.capture(),
+ any())
+ val intentFlags = intentCaptor.lastValue.flags
+ assertThat((intentFlags and Intent.FLAG_ACTIVITY_NEW_DOCUMENT) != 0).isTrue()
+ assertThat((intentFlags and Intent.FLAG_ACTIVITY_MULTIPLE_TASK) != 0).isTrue()
+ assertThat(optionsCaptor.lastValue.launchedFromBubble).isTrue()
+ assertThat(optionsCaptor.lastValue.taskAlwaysOnTop).isTrue()
}
@Test
@@ -178,12 +200,52 @@
}
getInstrumentation().waitForIdleSync()
- assertThat(b.isPendingIntentActive).isFalse()
- verify(taskViewController).startShortcutActivity(any(), eq(shortcutInfo), any(), any())
+ val optionsCaptor = argumentCaptor<ActivityOptions>()
+
+ assertThat(b.isPendingIntentActive).isFalse() // not triggered for shortcut chats
+ verify(taskViewController).startShortcutActivity(any(),
+ eq(shortcutInfo),
+ optionsCaptor.capture(),
+ any())
+ assertThat(optionsCaptor.lastValue.launchedFromBubble).isTrue()
+ assertThat(optionsCaptor.lastValue.isApplyActivityFlagsForBubbles).isTrue()
+ assertThat(optionsCaptor.lastValue.taskAlwaysOnTop).isTrue()
+ }
+
+ @EnableFlags(FLAG_ENABLE_BUBBLE_ANYTHING)
+ @Test
+ fun onInitialized_shortcutBubble() {
+ val shortcutInfo = ShortcutInfo.Builder(context)
+ .setId("mockShortcutId")
+ .build()
+
+ val b = createShortcutBubble(shortcutInfo)
+ bubbleTaskViewListener.setBubble(b)
+
+ assertThat(b.isChat).isFalse()
+ assertThat(b.isShortcut).isTrue()
+ assertThat(b.shortcutInfo).isNotNull()
+
+ getInstrumentation().runOnMainSync {
+ bubbleTaskViewListener.onInitialized()
+ }
+ getInstrumentation().waitForIdleSync()
+
+ val optionsCaptor = argumentCaptor<ActivityOptions>()
+
+ assertThat(b.isPendingIntentActive).isFalse() // chat only triggers setting it active
+ verify(taskViewController).startShortcutActivity(any(),
+ eq(shortcutInfo),
+ optionsCaptor.capture(),
+ any())
+ assertThat(optionsCaptor.lastValue.launchedFromBubble).isFalse() // chat only
+ assertThat(optionsCaptor.lastValue.isApplyActivityFlagsForBubbles).isFalse() // chat only
+ assertThat(optionsCaptor.lastValue.isApplyMultipleTaskFlagForShortcut).isTrue()
+ assertThat(optionsCaptor.lastValue.taskAlwaysOnTop).isTrue()
}
@Test
- fun onInitialized_appBubble() {
+ fun onInitialized_appBubble_intent() {
val b = createAppBubble()
bubbleTaskViewListener.setBubble(b)
@@ -194,11 +256,83 @@
}
getInstrumentation().waitForIdleSync()
- assertThat(b.isPendingIntentActive).isFalse()
- verify(taskViewController).startActivity(any(), any(), anyOrNull(), any(), any())
+ val intentCaptor = argumentCaptor<Intent>()
+ val optionsCaptor = argumentCaptor<ActivityOptions>()
+
+ assertThat(b.isPendingIntentActive).isFalse() // chat only triggers setting it active
+ verify(taskViewController).startActivity(any(),
+ any(),
+ intentCaptor.capture(),
+ optionsCaptor.capture(),
+ any())
+
+ assertThat((intentCaptor.lastValue.flags
+ and Intent.FLAG_ACTIVITY_MULTIPLE_TASK) != 0).isTrue()
+ assertThat(optionsCaptor.lastValue.launchedFromBubble).isFalse() // chat only
+ assertThat(optionsCaptor.lastValue.isApplyActivityFlagsForBubbles).isFalse() // chat only
+ assertThat(optionsCaptor.lastValue.taskAlwaysOnTop).isTrue()
}
@Test
+ fun onInitialized_appBubble_pendingIntent() {
+ val b = createAppBubble(usePendingIntent = true)
+ bubbleTaskViewListener.setBubble(b)
+
+ assertThat(b.isApp).isTrue()
+
+ getInstrumentation().runOnMainSync {
+ bubbleTaskViewListener.onInitialized()
+ }
+ getInstrumentation().waitForIdleSync()
+
+ val intentCaptor = argumentCaptor<Intent>()
+ val optionsCaptor = argumentCaptor<ActivityOptions>()
+
+ assertThat(b.isPendingIntentActive).isFalse() // chat only triggers setting it active
+ verify(taskViewController).startActivity(any(),
+ any(),
+ intentCaptor.capture(),
+ optionsCaptor.capture(),
+ any())
+
+ assertThat((intentCaptor.lastValue.flags
+ and Intent.FLAG_ACTIVITY_MULTIPLE_TASK) != 0).isTrue()
+ assertThat(optionsCaptor.lastValue.launchedFromBubble).isFalse() // chat only
+ assertThat(optionsCaptor.lastValue.isApplyActivityFlagsForBubbles).isFalse() // chat only
+ assertThat(optionsCaptor.lastValue.taskAlwaysOnTop).isTrue()
+ }
+
+ @Test
+ fun onInitialized_noteBubble() {
+ val b = createNoteBubble()
+ bubbleTaskViewListener.setBubble(b)
+
+ assertThat(b.isNote).isTrue()
+
+ getInstrumentation().runOnMainSync {
+ bubbleTaskViewListener.onInitialized()
+ }
+ getInstrumentation().waitForIdleSync()
+
+ val intentCaptor = argumentCaptor<Intent>()
+ val optionsCaptor = argumentCaptor<ActivityOptions>()
+
+ assertThat(b.isPendingIntentActive).isFalse() // chat only triggers setting it active
+ verify(taskViewController).startActivity(any(),
+ any(),
+ intentCaptor.capture(),
+ optionsCaptor.capture(),
+ any())
+
+ assertThat((intentCaptor.lastValue.flags
+ and Intent.FLAG_ACTIVITY_MULTIPLE_TASK) != 0).isTrue()
+ assertThat(optionsCaptor.lastValue.launchedFromBubble).isFalse() // chat only
+ assertThat(optionsCaptor.lastValue.isApplyActivityFlagsForBubbles).isFalse() // chat only
+ assertThat(optionsCaptor.lastValue.taskAlwaysOnTop).isTrue()
+ }
+
+
+ @Test
fun onInitialized_preparingTransition() {
val b = createAppBubble()
bubbleTaskViewListener.setBubble(b)
@@ -416,13 +550,24 @@
assertThat(isNew).isTrue()
}
- private fun createAppBubble(): Bubble {
+ private fun createAppBubble(usePendingIntent: Boolean = false): Bubble {
val target = Intent(context, TestActivity::class.java)
target.setPackage(context.packageName)
+ if (usePendingIntent) {
+ // Robolectric doesn't seem to play nice with PendingIntents, have to mock it.
+ val pendingIntent = mock<PendingIntent>()
+ whenever(pendingIntent.intent).thenReturn(target)
+ return Bubble.createAppBubble(pendingIntent, mock<UserHandle>(),
+ mainExecutor, bgExecutor)
+ }
return Bubble.createAppBubble(target, mock<UserHandle>(), mock<Icon>(),
mainExecutor, bgExecutor)
}
+ private fun createShortcutBubble(shortcutInfo: ShortcutInfo): Bubble {
+ return Bubble.createShortcutBubble(shortcutInfo, mainExecutor, bgExecutor)
+ }
+
private fun createNoteBubble(): Bubble {
val target = Intent(context, TestActivity::class.java)
target.setPackage(context.packageName)
diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml
index b4d594f..0f42645 100644
--- a/libs/WindowManager/Shell/res/values-af/strings.xml
+++ b/libs/WindowManager/Shell/res/values-af/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Apphandvatsel"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Appikoon"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Volskerm"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Rekenaaraansig"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Verdeelde skerm"</string>
<string name="more_button_text" msgid="3655388105592893530">"Meer"</string>
<string name="float_button_text" msgid="9221657008391364581">"Sweef"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Verander aspekverhouding"</string>
<string name="close_text" msgid="4986518933445178928">"Maak toe"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Maak kieslys toe"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Rekenaaraansig)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimeer skerm"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Verander grootte"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"App kan nie hierheen geskuif word nie"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Verander grootte van linkerkantse venster"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Verander grootte van regterkantse venster"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimeer of stel venstergrootte terug"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Maak kieslys oop"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Voer <xliff:g id="WINDOWING_MODE">%1$s</xliff:g> in"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Verander grootte van linkerkantse venster"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Verander grootte van regterkantse venster"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimeer of stel venstergrootte terug"</string>
diff --git a/libs/WindowManager/Shell/res/values-am/strings.xml b/libs/WindowManager/Shell/res/values-am/strings.xml
index 9ec8001..be02f43 100644
--- a/libs/WindowManager/Shell/res/values-am/strings.xml
+++ b/libs/WindowManager/Shell/res/values-am/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"የመተግበሪያ መያዣ"</string>
<string name="app_icon_text" msgid="2823268023931811747">"የመተግበሪያ አዶ"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"ሙሉ ማያ"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"የዴስክቶፕ ዕይታ"</string>
<string name="split_screen_text" msgid="1396336058129570886">"የተከፈለ ማያ ገፅ"</string>
<string name="more_button_text" msgid="3655388105592893530">"ተጨማሪ"</string>
<string name="float_button_text" msgid="9221657008391364581">"ተንሳፋፊ"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"ምጥጥነ ገፅታ ለውጥ"</string>
<string name="close_text" msgid="4986518933445178928">"ዝጋ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ምናሌ ዝጋ"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> የዴስክቶፕ ዕይታ"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"የማያ ገጹ መጠን አሳድግ"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"መጠን ቀይር"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"መተግበሪያ ወደዚህ መንቀሳቀስ አይችልም"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"የመተግበሪያ መስኮትን ወደ ግራ መጠን ቀይር"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"የመተግበሪያ መስኮትን ወደ ቀኝ መጠን ቀይር"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"የመስኮት መጠንን አሳድግ ወይም ወደነበረበት መልስ"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"ምናሌን ክፈት"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> አስገባ"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"መስኮትን ወደ ግራ መጠን ቀይር"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"መስኮትን ወደ ቀኝ መጠን ቀይር"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"የመስኮት መጠንን አሳድግ ወይም ወደነበረበት መልስ"</string>
diff --git a/libs/WindowManager/Shell/res/values-as/strings.xml b/libs/WindowManager/Shell/res/values-as/strings.xml
index 05860c2..0bc4a0a 100644
--- a/libs/WindowManager/Shell/res/values-as/strings.xml
+++ b/libs/WindowManager/Shell/res/values-as/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"এপৰ হেণ্ডেল"</string>
<string name="app_icon_text" msgid="2823268023931811747">"এপৰ চিহ্ন"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"সম্পূৰ্ণ স্ক্ৰীন"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ডেস্কটপ ভিউ"</string>
<string name="split_screen_text" msgid="1396336058129570886">"বিভাজিত স্ক্ৰীন"</string>
<string name="more_button_text" msgid="3655388105592893530">"অধিক"</string>
<string name="float_button_text" msgid="9221657008391364581">"ওপঙা"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"আকাৰৰ অনুপাত সলনি কৰক"</string>
<string name="close_text" msgid="4986518933445178928">"বন্ধ কৰক"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"মেনু বন্ধ কৰক"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ডেস্কটপ ভিউ)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"স্ক্ৰীন মেক্সিমাইজ কৰক"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"আকাৰ সলনি কৰক"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ইয়ালৈ এপ্টো আনিব নোৱাৰি"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"বাওঁফালে এপ্ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"সোঁফালে এপ্ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"মেনু খোলক"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>ত সোমাওক"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"সোঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"বাওঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string>
diff --git a/libs/WindowManager/Shell/res/values-az/strings.xml b/libs/WindowManager/Shell/res/values-az/strings.xml
index ea64749..2ccae4b 100644
--- a/libs/WindowManager/Shell/res/values-az/strings.xml
+++ b/libs/WindowManager/Shell/res/values-az/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Tətbiq ləqəbi"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Tətbiq ikonası"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Tam Ekran"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Masaüstü Görünüş"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Bölünmüş Ekran"</string>
<string name="more_button_text" msgid="3655388105592893530">"Ardı"</string>
<string name="float_button_text" msgid="9221657008391364581">"Üzən pəncərə"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Tərəflər nisbətini dəyişin"</string>
<string name="close_text" msgid="4986518933445178928">"Bağlayın"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menyunu bağlayın"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Masaüstü Görünüş)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ekranı maksimum böyüdün"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ölçüsünü dəyişin"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Tətbiqi bura köçürmək mümkün deyil"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Tətbiq pəncərəsinin ölçüsünü sola dəyişin"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Tətbiq pəncərəsinin ölçüsünü sağa dəyişin"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Pəncərə ölçüsünü artırın və ya bərpa edin"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Menyunu açın"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> rejiminə daxil olun"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pəncərə ölçüsünü sola dəyişin"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pəncərə ölçüsünü sağa dəyişin"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Pəncərə ölçüsünü artırın və ya bərpa edin"</string>
diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
index deec04f..b79b860 100644
--- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
@@ -134,9 +134,9 @@
<string name="collapse_menu_text" msgid="7515008122450342029">"Zatvorite meni"</string>
<string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (prikaz za računare)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Povećaj ekran"</string>
- <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Promeni veličinu"</string>
+ <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Prilagodi"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikacija ne može da se premesti ovde"</string>
- <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Imerzivne"</string>
+ <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Imerzivno"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Vrati"</string>
<string name="desktop_mode_maximize_menu_maximize_button_text" msgid="3090199175564175845">"Uvećaj"</string>
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Vratite"</string>
diff --git a/libs/WindowManager/Shell/res/values-bg/strings.xml b/libs/WindowManager/Shell/res/values-bg/strings.xml
index 0bb5960..9cc9db8 100644
--- a/libs/WindowManager/Shell/res/values-bg/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bg/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Манипулатор за приложението"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Икона на приложението"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Цял екран"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Изглед за настолни компютри"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Разделяне на екрана"</string>
<string name="more_button_text" msgid="3655388105592893530">"Още"</string>
<string name="float_button_text" msgid="9221657008391364581">"Плаващо"</string>
@@ -133,10 +132,9 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Промяна на съотношението"</string>
<string name="close_text" msgid="4986518933445178928">"Затваряне"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Затваряне на менюто"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (изглед за настолни компютри)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Увеличаване на екрана"</string>
- <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Преоразмеряване"</string>
+ <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Нов размер"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Приложението не може да бъде преместено тук"</string>
<string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Реалистично"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Възстановяване"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Преоразмеряване на прозореца на приложението наляво"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Преоразмеряване на прозореца на приложението надясно"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Увеличаване или възстановяване на размера на прозореца"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Отваряне на менюто"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Въвеждане на <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Преоразмеряване на прозореца наляво"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Преоразмеряване на прозореца надясно"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Увеличаване или възстановяване на размера на прозореца"</string>
diff --git a/libs/WindowManager/Shell/res/values-bn/strings.xml b/libs/WindowManager/Shell/res/values-bn/strings.xml
index ae63e04..c1264d4 100644
--- a/libs/WindowManager/Shell/res/values-bn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bn/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"অ্যাপের হ্যান্ডেল"</string>
<string name="app_icon_text" msgid="2823268023931811747">"অ্যাপ আইকন"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"ফুলস্ক্রিন"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ডেস্কটপ ভিউ"</string>
<string name="split_screen_text" msgid="1396336058129570886">"স্প্লিট স্ক্রিন"</string>
<string name="more_button_text" msgid="3655388105592893530">"আরও"</string>
<string name="float_button_text" msgid="9221657008391364581">"ফ্লোট"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"অ্যাস্পেক্ট রেশিও পরিবর্তন করুন"</string>
<string name="close_text" msgid="4986518933445178928">"বন্ধ করুন"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"\'মেনু\' বন্ধ করুন"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ডেস্কটপ ভিউ)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"স্ক্রিন বড় করুন"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ছোট বড় করুন"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"অ্যাপটি এখানে সরানো যাবে না"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"বাঁদিকে অ্যাপ উইন্ডো রিসাইজ করুন"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ডানদিকে অ্যাপ উইন্ডো রিসাইজ করুন"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"উইন্ডো সাইজ বড় বা রিস্টোর করুন"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"মেনু খুলুন"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>-এ খুলুন"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"বাঁদিকে উইন্ডো রিসাইজ করুন"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ডানদিকে উইন্ডো রিসাইজ করুন"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"উইন্ডো সাইজ বড় বা রিস্টোর করুন"</string>
diff --git a/libs/WindowManager/Shell/res/values-bs/strings.xml b/libs/WindowManager/Shell/res/values-bs/strings.xml
index b7c76b5..7c912b6 100644
--- a/libs/WindowManager/Shell/res/values-bs/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bs/strings.xml
@@ -119,7 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Ručica aplikacije"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Cijeli ekran"</string>
- <string name="desktop_text" msgid="1582173066857454541">"Prikaz na računalu"</string>
+ <string name="desktop_text" msgid="1582173066857454541">"Prikaz na računaru"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Podijeljeni ekran"</string>
<string name="more_button_text" msgid="3655388105592893530">"Više"</string>
<string name="float_button_text" msgid="9221657008391364581">"Lebdeći"</string>
@@ -132,7 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Promjena formata slike"</string>
<string name="close_text" msgid="4986518933445178928">"Zatvaranje"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zatvaranje menija"</string>
- <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (prikaz na računalu)"</string>
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (prikaz na računaru)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimiziraj ekran"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Promijeni veličinu"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Ne možete premjestiti aplikaciju ovdje"</string>
@@ -145,8 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Promjena veličine prozora aplikacije lijevo"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Promjena veličine prozora aplikacije desno"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimiziranje ili vraćanje veličine prozora"</string>
- <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Otvorite izbornik"</string>
- <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Unesite <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Otvaranje menija"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Aktiviranje načina rada <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promjena veličine prozora i poravnanje lijevo"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promjena veličine prozora i poravnanje desno"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimiziranje ili vraćanje veličine prozora"</string>
diff --git a/libs/WindowManager/Shell/res/values-ca/strings.xml b/libs/WindowManager/Shell/res/values-ca/strings.xml
index 80dd380..2c2a177 100644
--- a/libs/WindowManager/Shell/res/values-ca/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ca/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Identificador de l\'aplicació"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Icona de l\'aplicació"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Visualització per a ordinadors"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string>
<string name="more_button_text" msgid="3655388105592893530">"Més"</string>
<string name="float_button_text" msgid="9221657008391364581">"Flotant"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Canvia la relació d\'aspecte"</string>
<string name="close_text" msgid="4986518933445178928">"Tanca"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Tanca el menú"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (visualització per a ordinadors)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximitza la pantalla"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Canvia la mida"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"L\'aplicació no es pot moure aquí"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Canvia la mida de la finestra de l\'aplicació a l\'esquerra"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Canvia la mida de la finestra de l\'aplicació a la dreta"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximitza o restaura la mida de la finestra"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Obre el menú"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Introdueix <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Canvia la mida de la finestra a l\'esquerra"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Canvia la mida de la finestra a la dreta"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximitza o restaura la mida de la finestra"</string>
diff --git a/libs/WindowManager/Shell/res/values-da/strings.xml b/libs/WindowManager/Shell/res/values-da/strings.xml
index c465ce3..f5656d5 100644
--- a/libs/WindowManager/Shell/res/values-da/strings.xml
+++ b/libs/WindowManager/Shell/res/values-da/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Apphåndtag"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Fuld skærm"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Computervenlig visning"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Opdelt skærm"</string>
<string name="more_button_text" msgid="3655388105592893530">"Mere"</string>
<string name="float_button_text" msgid="9221657008391364581">"Svævende"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Skift billedformat"</string>
<string name="close_text" msgid="4986518933445178928">"Luk"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Luk menu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (computervenlig visning)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimér skærm"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Tilpas størrelse"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Apps kan ikke flyttes hertil"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Juster størrelsen på appvinduet til venstre"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Juster størrelsen på appvinduet til højre"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimer eller gendan vinduesstørrelse"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Åbn menu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Åbn <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Juster størrelsen på vinduet til venstre"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Juster størrelsen på vinduet til højre"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimer eller gendan vinduesstørrelse"</string>
diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml
index 567dd7a..3762b4b 100644
--- a/libs/WindowManager/Shell/res/values-de/strings.xml
+++ b/libs/WindowManager/Shell/res/values-de/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"App-Ziehpunkt"</string>
<string name="app_icon_text" msgid="2823268023931811747">"App-Symbol"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Vollbild"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Desktop-Ansicht"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Splitscreen"</string>
<string name="more_button_text" msgid="3655388105592893530">"Mehr"</string>
<string name="float_button_text" msgid="9221657008391364581">"Frei schwebend"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Seitenverhältnis ändern"</string>
<string name="close_text" msgid="4986518933445178928">"Schließen"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menü schließen"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Desktop-Ansicht)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Bildschirm maximieren"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Größe ändern"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Die App kann nicht hierher verschoben werden"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Größe des App-Fensters links anpassen"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Größe des App-Fensters rechts anpassen"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Fenstergröße maximieren oder wiederherstellen"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Menü öffnen"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> aktivieren"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Fenstergröße nach links anpassen"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Fenstergröße nach rechts anpassen"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Fenstergröße maximieren oder wiederherstellen"</string>
diff --git a/libs/WindowManager/Shell/res/values-el/strings.xml b/libs/WindowManager/Shell/res/values-el/strings.xml
index 489a4ce..8e715d5 100644
--- a/libs/WindowManager/Shell/res/values-el/strings.xml
+++ b/libs/WindowManager/Shell/res/values-el/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Λαβή εφαρμογής"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Εικονίδιο εφαρμογής"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Πλήρης οθόνη"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Προβολή για υπολογιστές"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Διαχωρισμός οθόνης"</string>
<string name="more_button_text" msgid="3655388105592893530">"Περισσότερα"</string>
<string name="float_button_text" msgid="9221657008391364581">"Κινούμενο"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Αλλαγή λόγου διαστάσεων"</string>
<string name="close_text" msgid="4986518933445178928">"Κλείσιμο"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Κλείσιμο μενού"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Προβολή για υπολογιστές)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Μεγιστοποίηση οθόνης"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Αλλαγή μεγέθους"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Δεν είναι δυνατή η μετακίνηση της εφαρμογής εδώ"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Αλλαγή μεγέθους παραθύρου εφαρμογής αριστερά"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Αλλαγή μεγέθους παραθύρου εφαρμογής δεξιά"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Μεγιστοποίηση ή επαναφορά μεγέθους παραθύρου"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Άνοιγμα μενού"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Εισαγωγή <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Αλλαγή μεγέθους παραθύρου προς τα αριστερά"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Αλλαγή μεγέθους παραθύρου προς τα δεξιά"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Μεγιστοποίηση ή επαναφορά μεγέθους παραθύρου"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
index 1a3d422..75d2bf1 100644
--- a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"App handle"</string>
<string name="app_icon_text" msgid="2823268023931811747">"App icon"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Full screen"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Desktop view"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Split screen"</string>
<string name="more_button_text" msgid="3655388105592893530">"More"</string>
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Change aspect ratio"</string>
<string name="close_text" msgid="4986518933445178928">"Close"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (desktop view)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximise screen"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Resize"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"App can\'t be moved here"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Resize app window left"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Resize app window right"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximise or restore window size"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Open menu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Enter <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
index 1a3d422..75d2bf1 100644
--- a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"App handle"</string>
<string name="app_icon_text" msgid="2823268023931811747">"App icon"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Full screen"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Desktop view"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Split screen"</string>
<string name="more_button_text" msgid="3655388105592893530">"More"</string>
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Change aspect ratio"</string>
<string name="close_text" msgid="4986518933445178928">"Close"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (desktop view)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximise screen"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Resize"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"App can\'t be moved here"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Resize app window left"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Resize app window right"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximise or restore window size"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Open menu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Enter <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
index 1a3d422..75d2bf1 100644
--- a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"App handle"</string>
<string name="app_icon_text" msgid="2823268023931811747">"App icon"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Full screen"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Desktop view"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Split screen"</string>
<string name="more_button_text" msgid="3655388105592893530">"More"</string>
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Change aspect ratio"</string>
<string name="close_text" msgid="4986518933445178928">"Close"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (desktop view)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximise screen"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Resize"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"App can\'t be moved here"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Resize app window left"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Resize app window right"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximise or restore window size"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Open menu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Enter <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string>
diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
index 93aa1b6..c358ae4 100644
--- a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Controlador de la app"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Ícono de la app"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Vista para computadoras de escritorio"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string>
<string name="more_button_text" msgid="3655388105592893530">"Más"</string>
<string name="float_button_text" msgid="9221657008391364581">"Flotante"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Cambiar relación de aspecto"</string>
<string name="close_text" msgid="4986518933445178928">"Cerrar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Cerrar menú"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (vista para computadoras de escritorio)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizar pantalla"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Cambiar el tamaño"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"No se puede mover la app aquí"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ajustar el tamaño de la ventana de la app hacia la izquierda"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ajustar el tamaño de la ventana de la app hacia la derecha"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar o restablecer el tamaño de la ventana"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Abrir el menú"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Ingresar a <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ajustar el tamaño de la ventana hacia la izquierda"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ajustar el tamaño de la ventana hacia la derecha"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar o restablecer el tamaño de la ventana"</string>
diff --git a/libs/WindowManager/Shell/res/values-es/strings.xml b/libs/WindowManager/Shell/res/values-es/strings.xml
index 27c5b80..275d88d 100644
--- a/libs/WindowManager/Shell/res/values-es/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Controlador de la aplicación"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Icono de la aplicación"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Vista para ordenadores"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string>
<string name="more_button_text" msgid="3655388105592893530">"Más"</string>
<string name="float_button_text" msgid="9221657008391364581">"Flotante"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Cambiar relación de aspecto"</string>
<string name="close_text" msgid="4986518933445178928">"Cerrar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Cerrar menú"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (vista para ordenadores)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizar pantalla"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Cambiar tamaño"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"La aplicación no se puede mover aquí"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Cambiar tamaño de la ventana de la aplicación izquierda"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Cambiar tamaño de la ventana de la aplicación derecha"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar o restaurar tamaño de la ventana"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Abrir menú"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Introducir <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Cambiar tamaño de la ventana a la izquierda"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Cambiar tamaño de la ventana a la derecha"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar o restaurar tamaño de la ventana"</string>
diff --git a/libs/WindowManager/Shell/res/values-et/strings.xml b/libs/WindowManager/Shell/res/values-et/strings.xml
index c8ab83e..3a330b3 100644
--- a/libs/WindowManager/Shell/res/values-et/strings.xml
+++ b/libs/WindowManager/Shell/res/values-et/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Rakenduse element"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Rakenduse ikoon"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Täisekraan"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Arvutivaade"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Jagatud ekraanikuva"</string>
<string name="more_button_text" msgid="3655388105592893530">"Rohkem"</string>
<string name="float_button_text" msgid="9221657008391364581">"Hõljuv"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Kuvasuhte muutmine"</string>
<string name="close_text" msgid="4986518933445178928">"Sule"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Sule menüü"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (arvutivaade)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Kuva täisekraanil"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Suuruse muutmine"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Rakendust ei saa siia teisaldada"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Rakenduse akna suuruse muutmine vasakul"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Rakenduse akna suuruse muutmine paremal"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Akna suuruse maksimeerimine või taastamine"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Menüü avamine"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Režiimi <xliff:g id="WINDOWING_MODE">%1$s</xliff:g> sisenemine"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Akna suuruse muutmine, vasakule"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Akna suuruse muutmine, paremale"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Akna suuruse maksimeerimine või taastamine"</string>
diff --git a/libs/WindowManager/Shell/res/values-eu/strings.xml b/libs/WindowManager/Shell/res/values-eu/strings.xml
index abd92ab..c0766a2 100644
--- a/libs/WindowManager/Shell/res/values-eu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-eu/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Aplikazioaren kontrol-puntua"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Aplikazioaren ikonoa"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Pantaila osoa"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Ordenagailuetarako ikuspegia"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Pantaila zatitzea"</string>
<string name="more_button_text" msgid="3655388105592893530">"Gehiago"</string>
<string name="float_button_text" msgid="9221657008391364581">"Leiho gainerakorra"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Aldatu aspektu-erlazioa"</string>
<string name="close_text" msgid="4986518933445178928">"Itxi"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Itxi menua"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ordenagailuetarako ikuspegia)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Handitu pantaila"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Aldatu tamaina"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikazioa ezin da hona ekarri"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Aldatu aplikazioaren leihoaren tamaina eta eraman ezkerrera"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Aldatu aplikazioaren leihoaren tamaina eta eraman eskuinera"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizatu edo leheneratu leihoaren tamaina"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Ireki menua"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Idatzi <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Aldatu leihoaren tamaina eta eraman ezkerrera"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Aldatu leihoaren tamaina eta eraman eskuinera"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizatu edo leheneratu leihoaren tamaina"</string>
diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml
index 651635a..ace8b33 100644
--- a/libs/WindowManager/Shell/res/values-fa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fa/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"دستگیره برنامه"</string>
<string name="app_icon_text" msgid="2823268023931811747">"نماد برنامه"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"تمامصفحه"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"نمای ویژه رایانه رومیزی"</string>
<string name="split_screen_text" msgid="1396336058129570886">"صفحهٔ دونیمه"</string>
<string name="more_button_text" msgid="3655388105592893530">"بیشتر"</string>
<string name="float_button_text" msgid="9221657008391364581">"شناور"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"تغییر نسبت ابعادی"</string>
<string name="close_text" msgid="4986518933445178928">"بستن"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"بستن منو"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (نمای ویژه رایانه رومیزی)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"بزرگ کردن صفحه"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"تغییر اندازه"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"برنامه را نمیتوان به اینجا منتقل کرد"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"تغییر اندازه پنجره برنامه در چپ"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"تغییر اندازه پنجره برنامه در راست"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"بیشینهسازی یا بازیابی اندازه پنجره"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"باز کردن منو"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"وارد شدن به <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"تغییر اندازه پنجره به چپ"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"تغییر اندازه پنجره به راست"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"بیشینهسازی یا بازیابی اندازه پنجره"</string>
diff --git a/libs/WindowManager/Shell/res/values-fi/strings.xml b/libs/WindowManager/Shell/res/values-fi/strings.xml
index 47e9ea3..aed3fdc 100644
--- a/libs/WindowManager/Shell/res/values-fi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fi/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Sovelluksen tunnus"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Sovelluskuvake"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Koko näyttö"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Tietokonenäkymä"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Jaettu näyttö"</string>
<string name="more_button_text" msgid="3655388105592893530">"Lisää"</string>
<string name="float_button_text" msgid="9221657008391364581">"Kelluva ikkuna"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Vaihda kuvasuhdetta"</string>
<string name="close_text" msgid="4986518933445178928">"Sulje"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Sulje valikko"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (tietokonenäkymä)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Suurenna näyttö"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Muuta kokoa"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Sovellusta ei voi siirtää tänne"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Muuta vasemmanpuoleisen sovellusikkunan kokoa"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Muuta oikeanpuoleisen sovellusikkunan kokoa"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Suurenna ikkuna tai palauta ikkunan koko"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Avaa valikko"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Avaa <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Muuta vasemmanpuoleisen ikkunan kokoa"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Muuta vasemmanpuoleisen ikkunan kokoa"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Suurenna ikkuna tai palauta ikkunan koko"</string>
diff --git a/libs/WindowManager/Shell/res/values-fr/strings.xml b/libs/WindowManager/Shell/res/values-fr/strings.xml
index 038a90d..377413e 100644
--- a/libs/WindowManager/Shell/res/values-fr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Poignée de l\'appli"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Icône d\'application"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Plein écran"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Affichage sur ordinateur"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Écran partagé"</string>
<string name="more_button_text" msgid="3655388105592893530">"Plus"</string>
<string name="float_button_text" msgid="9221657008391364581">"Flottante"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Modifier le format"</string>
<string name="close_text" msgid="4986518933445178928">"Fermer"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Fermer le menu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (affichage sur ordinateur)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Mettre en plein écran"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Redimensionner"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Impossible de déplacer l\'appli ici"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionner la fenêtre de l\'appli vers la gauche"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionner la fenêtre de l\'appli vers la droite"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Agrandir ou restaurer la taille de la fenêtre"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Ouvrir le menu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Saisir l’<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionner la fenêtre vers la gauche"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionner la fenêtre vers la droite"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Agrandir ou restaurer la taille de la fenêtre"</string>
diff --git a/libs/WindowManager/Shell/res/values-gl/strings.xml b/libs/WindowManager/Shell/res/values-gl/strings.xml
index a2a6b3e..3022f62 100644
--- a/libs/WindowManager/Shell/res/values-gl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-gl/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Controlador da aplicación"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Icona de aplicación"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Vista para ordenadores"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string>
<string name="more_button_text" msgid="3655388105592893530">"Máis"</string>
<string name="float_button_text" msgid="9221657008391364581">"Flotante"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Cambiar a proporción"</string>
<string name="close_text" msgid="4986518933445178928">"Pechar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Pechar o menú"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (vista para ordenadores)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizar pantalla"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Cambiar tamaño"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Non se pode mover aquí a aplicación"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Axustar o tamaño da ventá da aplicación á esquerda"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Axustar o tamaño da ventá da aplicación á dereita"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar ou restaurar o tamaño da ventá"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Abrir o menú"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Entrar en <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Axustar o tamaño da ventá á esquerda"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Axustar o tamaño da ventá á dereita"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamaño da ventá"</string>
diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml
index f1f2a0a..945bc93 100644
--- a/libs/WindowManager/Shell/res/values-hi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hi/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"ऐप्लिकेशन का हैंडल"</string>
<string name="app_icon_text" msgid="2823268023931811747">"ऐप्लिकेशन आइकॉन"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"फ़ुलस्क्रीन"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"डेस्कटॉप व्यू"</string>
<string name="split_screen_text" msgid="1396336058129570886">"स्प्लिट स्क्रीन मोड"</string>
<string name="more_button_text" msgid="3655388105592893530">"ज़्यादा देखें"</string>
<string name="float_button_text" msgid="9221657008391364581">"फ़्लोट"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बदलें"</string>
<string name="close_text" msgid="4986518933445178928">"बंद करें"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"मेन्यू बंद करें"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (डेस्कटॉप व्यू)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"स्क्रीन को बड़ा करें"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"साइज़ बदलें"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ऐप्लिकेशन को यहां मूव नहीं किया जा सकता"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ऐप्लिकेशन विंडो का साइज़ बाईं ओर से बदलें"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ऐप्लिकेशन विंडो का साइज़ दाईं ओर से बदलें"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"विंडो को बड़ा करें या उसका साइज़ पहले जैसा करें"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"मेन्यू खोलें"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> में जाएं"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"विंडो का साइज़ बाईं ओर से बदलें"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"विंडो का साइज़ दाईं ओर से बढ़ाएं"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विंडो को बड़ा करें या उसका साइज़ पहले जैसा करें"</string>
diff --git a/libs/WindowManager/Shell/res/values-hu/strings.xml b/libs/WindowManager/Shell/res/values-hu/strings.xml
index 5d52c48..a7aedc4 100644
--- a/libs/WindowManager/Shell/res/values-hu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hu/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"App fogópontja"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Alkalmazásikon"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Teljes képernyő"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Asztali nézet"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Osztott képernyő"</string>
<string name="more_button_text" msgid="3655388105592893530">"Továbbiak"</string>
<string name="float_button_text" msgid="9221657008391364581">"Lebegő"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Méretarány módosítása"</string>
<string name="close_text" msgid="4986518933445178928">"Bezárás"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menü bezárása"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Asztali nézet)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Képernyő méretének maximalizálása"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Átméretezés"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Az alkalmazás nem helyezhető át ide"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Alkalmazásablak átméretezése balra"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Alkalmazásablak átméretezése jobbra"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Ablak teljes méretre állítása vagy visszaállítása"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Menü megnyitása"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Belépés <xliff:g id="WINDOWING_MODE">%1$s</xliff:g> módba"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ablak átméretezése balra"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ablak átméretezése jobbra"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ablak teljes méretre állítása vagy visszaállítása"</string>
diff --git a/libs/WindowManager/Shell/res/values-hy/strings.xml b/libs/WindowManager/Shell/res/values-hy/strings.xml
index b7b4422..00b2f91 100644
--- a/libs/WindowManager/Shell/res/values-hy/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hy/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Հավելվածի կեղծանուն"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Հավելվածի պատկերակ"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Լիաէկրան"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Համակարգչային տարբերակ"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Տրոհված էկրան"</string>
<string name="more_button_text" msgid="3655388105592893530">"Ավելին"</string>
<string name="float_button_text" msgid="9221657008391364581">"Լողացող պատուհան"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Փոխել կողմերի հարաբերակցությունը"</string>
<string name="close_text" msgid="4986518933445178928">"Փակել"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Փակել ընտրացանկը"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (համակարգչային տարբերակ)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ծավալել էկրանը"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Փոխել չափը"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Հավելվածը հնարավոր չէ տեղափոխել այստեղ"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ձգել հավելվածի պատուհանը դեպի ձախ"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ձգել հավելվածի պատուհանը դեպի աջ"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Ծավալել կամ վերականգնել պատուհանի չափսը"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Բացեք ընտրացանկը"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Մուտքագրեք <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ձգել պատուհանը դեպի ձախ"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ձգել պատուհանը դեպի աջ"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ծավալել կամ վերականգնել պատուհանի չափսը"</string>
diff --git a/libs/WindowManager/Shell/res/values-in/strings.xml b/libs/WindowManager/Shell/res/values-in/strings.xml
index a3ed7c3..54ccf84 100644
--- a/libs/WindowManager/Shell/res/values-in/strings.xml
+++ b/libs/WindowManager/Shell/res/values-in/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Penanganan aplikasi"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Ikon Aplikasi"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Layar Penuh"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Tampilan Desktop"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Layar Terpisah"</string>
<string name="more_button_text" msgid="3655388105592893530">"Lainnya"</string>
<string name="float_button_text" msgid="9221657008391364581">"Mengambang"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Ubah rasio aspek"</string>
<string name="close_text" msgid="4986518933445178928">"Tutup"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Tutup Menu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Tampilan Desktop)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Perbesar Layar"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ubah ukuran"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikasi tidak dapat dipindahkan ke sini"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ubah ukuran jendela aplikasi ke kiri"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ubah ukuran jendela aplikasi ke kanan"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimalkan atau pulihkan ukuran jendela"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Buka Menu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Masuk ke <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ubah ukuran jendela ke kiri"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ubah ukuran jendela ke kanan"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimalkan atau pulihkan ukuran jendela"</string>
diff --git a/libs/WindowManager/Shell/res/values-is/strings.xml b/libs/WindowManager/Shell/res/values-is/strings.xml
index e8ecad1..56b1790 100644
--- a/libs/WindowManager/Shell/res/values-is/strings.xml
+++ b/libs/WindowManager/Shell/res/values-is/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Handfang forrits"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Tákn forrits"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Allur skjárinn"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Tölvuútgáfa"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Skjáskipting"</string>
<string name="more_button_text" msgid="3655388105592893530">"Meira"</string>
<string name="float_button_text" msgid="9221657008391364581">"Reikult"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Breyta myndhlutfalli"</string>
<string name="close_text" msgid="4986518933445178928">"Loka"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Loka valmynd"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (tölvuútgáfa)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Stækka skjá"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Breyta stærð"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Ekki er hægt að færa forritið hingað"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Breyta stærð forritsglugga til vinstri"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Breyta stærð forritsglugga til hægri"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Hámarka eða endurheimta stærð glugga"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Opna valmynd"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Opna <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Breyta stærð glugga til vinstri"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Breyta stærð glugga til hægri"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Hámarka eða endurheimta stærð glugga"</string>
diff --git a/libs/WindowManager/Shell/res/values-it/strings.xml b/libs/WindowManager/Shell/res/values-it/strings.xml
index 630e9ee..30159c7 100644
--- a/libs/WindowManager/Shell/res/values-it/strings.xml
+++ b/libs/WindowManager/Shell/res/values-it/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Punto di manipolazione app"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Icona dell\'app"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Schermo intero"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Visualizzazione desktop"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Schermo diviso"</string>
<string name="more_button_text" msgid="3655388105592893530">"Altro"</string>
<string name="float_button_text" msgid="9221657008391364581">"Mobile"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Cambia proporzioni"</string>
<string name="close_text" msgid="4986518933445178928">"Chiudi"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Chiudi il menu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (visualizzazione desktop)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Massimizza schermo"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ridimensiona"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Impossibile spostare l\'app qui"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ridimensiona la finestra dell\'app a sinistra"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ridimensiona la finestra dell\'app a destra"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Ingrandisci o ripristina le dimensioni della finestra"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Apri menu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Attiva <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ridimensiona la finestra a sinistra"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ridimensiona la finestra a destra"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ingrandisci o ripristina le dimensioni della finestra"</string>
diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml
index 102d646..5a19f14 100644
--- a/libs/WindowManager/Shell/res/values-iw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-iw/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"נקודת אחיזה לאפליקציה"</string>
<string name="app_icon_text" msgid="2823268023931811747">"סמל האפליקציה"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"מסך מלא"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"תצוגה למחשב"</string>
<string name="split_screen_text" msgid="1396336058129570886">"מסך מפוצל"</string>
<string name="more_button_text" msgid="3655388105592893530">"עוד"</string>
<string name="float_button_text" msgid="9221657008391364581">"בלונים"</string>
@@ -133,12 +132,11 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"שינוי יחס הגובה-רוחב"</string>
<string name="close_text" msgid="4986518933445178928">"סגירה"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"סגירת התפריט"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (תצוגה למחשב)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"הגדלת המסך"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"שינוי הגודל"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"לא ניתן להעביר את האפליקציה לכאן"</string>
- <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"סוחף"</string>
+ <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"הטמעה"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"שחזור"</string>
<string name="desktop_mode_maximize_menu_maximize_button_text" msgid="3090199175564175845">"הגדלה"</string>
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"שחזור"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"שינוי הגודל של חלון האפליקציה שמשמאל"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"שינוי הגודל של חלון האפליקציה שמימין"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"שחזור של גודל החלון או הגדלת החלון"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"פתיחת התפריט"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"כניסה אל <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"שינוי גודל החלון שמשמאל"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"שינוי גודל החלון שמימין"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"שחזור של גודל החלון או הגדלת החלון"</string>
diff --git a/libs/WindowManager/Shell/res/values-kk/strings.xml b/libs/WindowManager/Shell/res/values-kk/strings.xml
index 31a0153..be9e9c1 100644
--- a/libs/WindowManager/Shell/res/values-kk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kk/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Қолданба идентификаторы"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Қолданба белгішесі"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Толық экран"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Компьютерлік нұсқа"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Экранды бөлу"</string>
<string name="more_button_text" msgid="3655388105592893530">"Қосымша"</string>
<string name="float_button_text" msgid="9221657008391364581">"Қалқыма"</string>
@@ -133,12 +132,11 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Арақатынасты өзгерту"</string>
<string name="close_text" msgid="4986518933445178928">"Жабу"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Мәзірді жабу"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (компьютерлік нұсқа)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Экранды ұлғайту"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Өлшемін өзгерту"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Қолданба бұл жерге қойылмайды."</string>
- <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Әсерлі"</string>
+ <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Иммерсивтік әсер"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Қалпына келтіру"</string>
<string name="desktop_mode_maximize_menu_maximize_button_text" msgid="3090199175564175845">"Жаю"</string>
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Қалпына келтіру"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Қолданба терезесінің өлшемін сол жақтан өзгерту"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Қолданба терезесінің өлшемін оң жақтан өзгерту"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Терезе өлшемін ұлғайту не қалпына келтіру"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Мәзірді ашу"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> режиміне өту"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Терезе өлшемін сол жаққа өзгерту"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Терезе өлшемін оң жаққа өзгерту"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Терезе өлшемін ұлғайту не қалпына келтіру"</string>
diff --git a/libs/WindowManager/Shell/res/values-km/strings.xml b/libs/WindowManager/Shell/res/values-km/strings.xml
index 9a7db67..c835650 100644
--- a/libs/WindowManager/Shell/res/values-km/strings.xml
+++ b/libs/WindowManager/Shell/res/values-km/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"ឈ្មោះអ្នកប្រើប្រាស់កម្មវិធី"</string>
<string name="app_icon_text" msgid="2823268023931811747">"រូបកម្មវិធី"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"អេក្រង់ពេញ"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ទិដ្ឋភាពលើកុំព្យូទ័រ"</string>
<string name="split_screen_text" msgid="1396336058129570886">"មុខងារបំបែកអេក្រង់"</string>
<string name="more_button_text" msgid="3655388105592893530">"ច្រើនទៀត"</string>
<string name="float_button_text" msgid="9221657008391364581">"អណ្ដែត"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"ប្ដូរសមាមាត្រ"</string>
<string name="close_text" msgid="4986518933445178928">"បិទ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"បិទម៉ឺនុយ"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ទិដ្ឋភាពលើកុំព្យូទ័រ)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ពង្រីកអេក្រង់"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ប្ដូរទំហំ"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"មិនអាចផ្លាស់ទីកម្មវិធីមកទីនេះបានទេ"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ប្ដូរទំហំវិនដូកម្មវិធីទៅឆ្វេង"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ប្ដូរទំហំវិនដូកម្មវិធីទៅស្ដាំ"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"បើកម៉ឺនុយ"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"ចូលទៅ<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ប្ដូរទំហំវិនដូទៅឆ្វេង"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ប្ដូរទំហំវិនដូទៅស្ដាំ"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string>
diff --git a/libs/WindowManager/Shell/res/values-kn/strings.xml b/libs/WindowManager/Shell/res/values-kn/strings.xml
index e9fa2cf..143208a 100644
--- a/libs/WindowManager/Shell/res/values-kn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kn/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"ಆ್ಯಪ್ ಹ್ಯಾಂಡಲ್"</string>
<string name="app_icon_text" msgid="2823268023931811747">"ಆ್ಯಪ್ ಐಕಾನ್"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"ಫುಲ್ಸ್ಕ್ರೀನ್"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ಡೆಸ್ಕ್ಟಾಪ್ ವೀಕ್ಷಣೆ"</string>
<string name="split_screen_text" msgid="1396336058129570886">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್"</string>
<string name="more_button_text" msgid="3655388105592893530">"ಇನ್ನಷ್ಟು"</string>
<string name="float_button_text" msgid="9221657008391364581">"ಫ್ಲೋಟ್"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"ದೃಶ್ಯಾನುಪಾತವನ್ನು ಬದಲಾಯಿಸಿ"</string>
<string name="close_text" msgid="4986518933445178928">"ಮುಚ್ಚಿ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ಮೆನು ಮುಚ್ಚಿ"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ಡೆಸ್ಕ್ಟಾಪ್ ವೀಕ್ಷಣೆ)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ಸ್ಕ್ರೀನ್ ಅನ್ನು ಮ್ಯಾಕ್ಸಿಮೈಸ್ ಮಾಡಿ"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ಮರುಗಾತ್ರಗೊಳಿಸಿ"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ಆ್ಯಪ್ ಅನ್ನು ಇಲ್ಲಿಗೆ ಸರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ಆ್ಯಪ್ ವಿಂಡೋ ಎಡ"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ಆ್ಯಪ್ ವಿಂಡೋ ಬಲ"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"ಮೆನು ತೆರೆಯಿರಿ"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> ಅನ್ನು ನಮೂದಿಸಿ"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಎಡಕ್ಕೆ ಸರಿಸಿ"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಬಲಕ್ಕೆ ಸರಿಸಿ"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string>
diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml
index 3716741..fe1bcd4 100644
--- a/libs/WindowManager/Shell/res/values-ky/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ky/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Колдонмонун маркери"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Колдонмонун сүрөтчөсү"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Толук экран"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Компьютердик версия"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Экранды бөлүү"</string>
<string name="more_button_text" msgid="3655388105592893530">"Дагы"</string>
<string name="float_button_text" msgid="9221657008391364581">"Калкыма"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Тараптардын катнашын өзгөртүү"</string>
<string name="close_text" msgid="4986518933445178928">"Жабуу"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Менюну жабуу"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (компьютердик версия)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Экранды чоңойтуу"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Өлчөмүн өзгөртүү"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Колдонмону бул жерге жылдырууга болбойт"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Колдонмонун терезесинин өлчөмүн солго өзгөртүү"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Колдонмонун терезесинин өлчөмүн оңго өзгөртүү"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Терезенин өлчөмүн чоңойтуу же калыбына келтирүү"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Менюну ачуу"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> режимине өтүү"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Терезенин өлчөмүн солго өзгөртүү"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Терезенин өлчөмүн оңго өзгөртүү"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Терезенин өлчөмүн чоңойтуу же калыбына келтирүү"</string>
diff --git a/libs/WindowManager/Shell/res/values-lo/strings.xml b/libs/WindowManager/Shell/res/values-lo/strings.xml
index a1d9d29..dd9df35 100644
--- a/libs/WindowManager/Shell/res/values-lo/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lo/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"ຊື່ຜູ້ໃຊ້ແອັບ"</string>
<string name="app_icon_text" msgid="2823268023931811747">"ໄອຄອນແອັບ"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"ເຕັມຈໍ"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ມຸມມອງຢູ່ເດັສທັອບ"</string>
<string name="split_screen_text" msgid="1396336058129570886">"ແບ່ງໜ້າຈໍ"</string>
<string name="more_button_text" msgid="3655388105592893530">"ເພີ່ມເຕີມ"</string>
<string name="float_button_text" msgid="9221657008391364581">"ລອຍ"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"ປ່ຽນອັດຕາສ່ວນຮູບ"</string>
<string name="close_text" msgid="4986518933445178928">"ປິດ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ປິດເມນູ"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ມຸມມອງຢູ່ເດັສທັອບ)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ປັບຈໍໃຫຍ່ສຸດ"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ປັບຂະໜາດ"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ບໍ່ສາມາດຍ້າຍແອັບມາບ່ອນນີ້ໄດ້"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ປັບຂະໜາດໜ້າຈໍແອັບໄປທາງຊ້າຍ"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ປັບຂະໜາດໜ້າຈໍແອັບໄປທາງຂວາ"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ຂະຫຍາຍ ຫຼື ຄືນຄ່າຂະໜາດໜ້າຈໍ"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"ເປີດເມນູ"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"ເຂົ້າສູ່ <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ປັບຂະໜາດໜ້າຈໍໄປທາງຊ້າຍ"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ປັບຂະໜາດໜ້າຈໍໄປທາງຂວາ"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ຂະຫຍາຍ ຫຼື ຄືນຄ່າຂະໜາດໜ້າຈໍ"</string>
diff --git a/libs/WindowManager/Shell/res/values-lv/strings.xml b/libs/WindowManager/Shell/res/values-lv/strings.xml
index 3fcbbe2..8c4360b 100644
--- a/libs/WindowManager/Shell/res/values-lv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lv/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Lietotnes turis"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Lietotnes ikona"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Pilnekrāna režīms"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Skats datorā"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Sadalīt ekrānu"</string>
<string name="more_button_text" msgid="3655388105592893530">"Vairāk"</string>
<string name="float_button_text" msgid="9221657008391364581">"Peldošs"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Mainīt malu attiecību"</string>
<string name="close_text" msgid="4986518933445178928">"Aizvērt"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Aizvērt izvēlni"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (skats datorā)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimizēt ekrānu"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Mainīt lielumu"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Lietotni nevar pārvietot šeit."</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Mainīt lietotnes loga lielumu uz kreiso pusi"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Mainīt lietotnes loga lielumu uz labo pusi"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimizēt vai atjaunot loga lielumu"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Atvērt izvēlni"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Atvērt: <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Mainīt loga lielumu uz kreiso pusi"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Mainīt loga lielumu uz labo pusi"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimizēt vai atjaunot loga lielumu"</string>
diff --git a/libs/WindowManager/Shell/res/values-mk/strings.xml b/libs/WindowManager/Shell/res/values-mk/strings.xml
index 76b62ec1..653e66a 100644
--- a/libs/WindowManager/Shell/res/values-mk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mk/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Прекар на апликацијата"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Икона на апликацијата"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Цел екран"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Приказ на компјутер"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Поделен екран"</string>
<string name="more_button_text" msgid="3655388105592893530">"Повеќе"</string>
<string name="float_button_text" msgid="9221657008391364581">"Лебдечко"</string>
@@ -133,10 +132,9 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Промени го соодносот"</string>
<string name="close_text" msgid="4986518933445178928">"Затворете"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Затворете го менито"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (приказ на компјутер)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Максимизирај го екранот"</string>
- <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Промени ја гол."</string>
+ <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Смени големина"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Апликацијата не може да се премести овде"</string>
<string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Реалистично"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Врати"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Променете ја големината на прозорецот на апликацијата одлево"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Променете ја големината на прозорецот на апликацијата оддесно"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Максимизирајте или вратете ја големината на прозорецот"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Отворете го менито"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Отворете <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Променете ја големината на прозорецот налево"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Променете ја големината на прозорецот надесно"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Максимизирајте или вратете ја големината на прозорецот"</string>
diff --git a/libs/WindowManager/Shell/res/values-ml/strings.xml b/libs/WindowManager/Shell/res/values-ml/strings.xml
index d9d0cf9..8887665 100644
--- a/libs/WindowManager/Shell/res/values-ml/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ml/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"ആപ്പ് ഹാൻഡിൽ"</string>
<string name="app_icon_text" msgid="2823268023931811747">"ആപ്പ് ഐക്കൺ"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"പൂർണ്ണസ്ക്രീൻ"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ഡെസ്ക്ടോപ്പ് വ്യൂ"</string>
<string name="split_screen_text" msgid="1396336058129570886">"സ്ക്രീൻ വിഭജനം"</string>
<string name="more_button_text" msgid="3655388105592893530">"കൂടുതൽ"</string>
<string name="float_button_text" msgid="9221657008391364581">"ഫ്ലോട്ട്"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"വീക്ഷണ അനുപാതം മാറ്റുക"</string>
<string name="close_text" msgid="4986518933445178928">"അടയ്ക്കുക"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"മെനു അടയ്ക്കുക"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ഡെസ്ക്ടോപ്പ് വ്യൂ)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"സ്ക്രീൻ വലുതാക്കുക"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"വലുപ്പം മാറ്റുക"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ആപ്പ് ഇവിടേക്ക് നീക്കാനാകില്ല"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ഇടത് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"വലത് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"വിന്ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"മെനു തുറക്കുക"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> നൽകുക"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ഇടത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"വലത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"വിന്ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string>
diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml
index 875ecea..df922e0 100644
--- a/libs/WindowManager/Shell/res/values-mn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mn/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Аппын бариул"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Aппын дүрс тэмдэг"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Бүтэн дэлгэц"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Дэлгэц дээр харагдах байдал"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Дэлгэцийг хуваах"</string>
<string name="more_button_text" msgid="3655388105592893530">"Бусад"</string>
<string name="float_button_text" msgid="9221657008391364581">"Хөвөгч"</string>
@@ -129,12 +128,11 @@
<string name="open_in_browser_text" msgid="9181692926376072904">"Хөтчид нээх"</string>
<string name="open_in_app_text" msgid="2874590745116268525">"Аппад нээх"</string>
<string name="new_window_text" msgid="6318648868380652280">"Шинэ цонх"</string>
- <string name="manage_windows_text" msgid="5567366688493093920">"Windows-г удирдах"</string>
+ <string name="manage_windows_text" msgid="5567366688493093920">"Цонхнуудыг удирдах"</string>
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Аспектын харьцааг өөрчлөх"</string>
<string name="close_text" msgid="4986518933445178928">"Хаах"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Цэсийг хаах"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (дэлгэц дээр харагдах байдал)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Дэлгэцийг томруулах"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Хэмжээг өөрчлөх"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Аппыг ийш зөөх боломжгүй"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Аппын цонхны хэмжээг зүүн тал руу өөрчлөх"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Аппын цонхны хэмжээг баруун тал руу өөрчлөх"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Цонхны хэмжээг томруулах эсвэл сэргээх"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Цэсийг нээх"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>-д орох"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Цонхны хэмжээг зүүн тал руу өөрчлөх"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Цонхны хэмжээг баруун тал руу өөрчлөх"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Цонхны хэмжээг томруулах эсвэл сэргээх"</string>
diff --git a/libs/WindowManager/Shell/res/values-mr/strings.xml b/libs/WindowManager/Shell/res/values-mr/strings.xml
index 73c16e6..f316311 100644
--- a/libs/WindowManager/Shell/res/values-mr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mr/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"अॅपचे हँडल"</string>
<string name="app_icon_text" msgid="2823268023931811747">"अॅप आयकन"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"फुलस्क्रीन"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"डेस्कटॉप दृश्य"</string>
<string name="split_screen_text" msgid="1396336058129570886">"स्प्लिट स्क्रीन"</string>
<string name="more_button_text" msgid="3655388105592893530">"आणखी"</string>
<string name="float_button_text" msgid="9221657008391364581">"फ्लोट"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"आस्पेक्ट रेशो बदला"</string>
<string name="close_text" msgid="4986518933445178928">"बंद करा"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"मेनू बंद करा"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (डेस्कटॉप दृश्य)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"स्क्रीन मोठी करा"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"आकार बदला"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"अॅप इथे हलवू शकत नाही"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"अॅप विंडोचा डावीकडून आकार बदला"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"अॅप विंडोचा उजवीकडून आकार बदला"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"विंडोचा आकार मोठा करा किंवा रिस्टोअर करा"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"मेनू उघडा"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> एंटर करा"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"अॅप विंडोचा डावीकडे आकार बदला"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"अॅप विंडोचा उजवीकडे आकार बदला"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विंडोचा आकार मोठा करा किंवा रिस्टोअर करा"</string>
diff --git a/libs/WindowManager/Shell/res/values-my/strings.xml b/libs/WindowManager/Shell/res/values-my/strings.xml
index be7cca5..8697af8 100644
--- a/libs/WindowManager/Shell/res/values-my/strings.xml
+++ b/libs/WindowManager/Shell/res/values-my/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"အက်ပ်သုံးသူအမည်"</string>
<string name="app_icon_text" msgid="2823268023931811747">"အက်ပ်သင်္ကေတ"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"ဖန်သားပြင်အပြည့်"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ဒက်စ်တော့ မြင်ကွင်း"</string>
<string name="split_screen_text" msgid="1396336058129570886">"မျက်နှာပြင် ခွဲ၍ပြသရန်"</string>
<string name="more_button_text" msgid="3655388105592893530">"ပိုပြပါ"</string>
<string name="float_button_text" msgid="9221657008391364581">"မျှောရန်"</string>
@@ -133,12 +132,11 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"အချိုးအစား ပြောင်းရန်"</string>
<string name="close_text" msgid="4986518933445178928">"ပိတ်ရန်"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"မီနူး ပိတ်ရန်"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ဒက်စ်တော့ မြင်ကွင်း)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"စခရင်ကို ချဲ့မည်"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"အရွယ်ပြင်ရန်"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"အက်ပ်ကို ဤနေရာသို့ ရွှေ့၍မရပါ"</string>
- <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"သုံးဘက်မြင်"</string>
+ <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"ဘက်ပေါင်းစုံ"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"ပြန်ပြောင်းရန်"</string>
<string name="desktop_mode_maximize_menu_maximize_button_text" msgid="3090199175564175845">"ချဲ့ရန်"</string>
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ပြန်ပြောင်းရန်"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"အက်ပ်ဝင်းဒိုး ဘယ်ဘက်ကို အရွယ်ပြင်ရန်"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"အက်ပ်ဝင်းဒိုး ညာဘက်ကို အရွယ်ပြင်ရန်"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ဝင်းဒိုးအရွယ်အစားကို ချဲ့ရန် (သို့) ပြန်ပြောင်းရန်"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"မီနူးဖွင့်ရန်"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> ကို ဝင်ရန်"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ဝင်းဒိုးကို ဘယ်ဘက်သို့ အရွယ်ပြင်ရန်"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ဝင်းဒိုးကို ညာဘက်သို့ အရွယ်ပြင်ရန်"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ဝင်းဒိုးအရွယ်အစားကို ချဲ့ရန် (သို့) ပြန်ပြောင်းရန်"</string>
diff --git a/libs/WindowManager/Shell/res/values-nb/strings.xml b/libs/WindowManager/Shell/res/values-nb/strings.xml
index c213b7b..43de636 100644
--- a/libs/WindowManager/Shell/res/values-nb/strings.xml
+++ b/libs/WindowManager/Shell/res/values-nb/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Apphåndtak"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Fullskjerm"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Datamaskinvisning"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Delt skjerm"</string>
<string name="more_button_text" msgid="3655388105592893530">"Mer"</string>
<string name="float_button_text" msgid="9221657008391364581">"Svevende"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Endre høyde/bredde-forholdet"</string>
<string name="close_text" msgid="4986518933445178928">"Lukk"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Lukk menyen"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (datamaskinvisning)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimer skjermen"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Endre størrelse"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Appen kan ikke flyttes hit"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Endre størrelsen på appvinduet til venstre"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Endre størrelsen på appvinduet til høyre"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimer eller gjenopprett størrelsen på vinduet"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Åpne menyen"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Skriv inn <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>."</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Endre størrelsen på vinduet til venstre"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Endre størrelsen på vinduet til høyre"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimer eller gjenopprett størrelsen på vinduet"</string>
diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml
index e5f4cbe..23b49b7 100644
--- a/libs/WindowManager/Shell/res/values-ne/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ne/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"एपको ह्यान्डल"</string>
<string name="app_icon_text" msgid="2823268023931811747">"एपको आइकन"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"फुल स्क्रिन"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"डेस्कटप भ्यू"</string>
<string name="split_screen_text" msgid="1396336058129570886">"स्प्लिट स्क्रिन"</string>
<string name="more_button_text" msgid="3655388105592893530">"थप"</string>
<string name="float_button_text" msgid="9221657008391364581">"फ्लोट"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"एस्पेक्ट रेसियो परिवर्तन गर्नुहोस्"</string>
<string name="close_text" msgid="4986518933445178928">"बन्द गर्नुहोस्"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"मेनु बन्द गर्नुहोस्"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (डेस्कटप भ्यू)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"स्क्रिन ठुलो बनाउनुहोस्"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"आकार बदल्नुहोस्"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"एप सारेर यहाँ ल्याउन सकिएन"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"एपको विन्डोको आकार बदलेर बायाँतिर लैजानुहोस्"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"एपको विन्डोको आकार बदलेर दायाँतिर लैजानुहोस्"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"विन्डोको आकार म्याक्सिमाइज गर्नुहोस् वा रिस्टोर गर्नुहोस्"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"मेनु खोल्नुहोस्"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> प्रयोग गर्नुहोस्"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"विन्डोको आकार बदलेर बायाँतिर लैजानुहोस्"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"विन्डोको आकार बदलेर दायाँतिर लैजानुहोस्"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विन्डोको आकार म्याक्सिमाइज गर्नुहोस् वा रिस्टोर गर्नुहोस्"</string>
diff --git a/libs/WindowManager/Shell/res/values-or/strings.xml b/libs/WindowManager/Shell/res/values-or/strings.xml
index 182ea46d8..9e1ee43 100644
--- a/libs/WindowManager/Shell/res/values-or/strings.xml
+++ b/libs/WindowManager/Shell/res/values-or/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"ଆପର ହେଣ୍ଡେଲ"</string>
<string name="app_icon_text" msgid="2823268023931811747">"ଆପ ଆଇକନ"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"ପୂର୍ଣ୍ଣସ୍କ୍ରିନ"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ଡେସ୍କଟପ ଭ୍ୟୁ"</string>
<string name="split_screen_text" msgid="1396336058129570886">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ"</string>
<string name="more_button_text" msgid="3655388105592893530">"ଅଧିକ"</string>
<string name="float_button_text" msgid="9221657008391364581">"ଫ୍ଲୋଟ"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"ଚଉଡ଼ା ଓ ଉଚ୍ଚତାର ଅନୁପାତ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
<string name="close_text" msgid="4986518933445178928">"ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ମେନୁ ବନ୍ଦ କରନ୍ତୁ"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ଡେସ୍କଟପ ଭ୍ୟୁ)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ସ୍କ୍ରିନକୁ ବଡ଼ କରନ୍ତୁ"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ରିସାଇଜ କରନ୍ତୁ"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ଆପକୁ ଏଠାକୁ ମୁଭ କରାଯାଇପାରିବ ନାହିଁ"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ଆପ ୱିଣ୍ଡୋ ରିସାଇଜ କରିବା ପାଇଁ ବାମ ବଟନ"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ଆପ ୱିଣ୍ଡୋ ରିସାଇଜ କରିବା ପାଇଁ ଡାହାଣ ବଟନ"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ୱିଣ୍ଡୋ ସାଇଜକୁ ମେକ୍ସିମାଇଜ କିମ୍ବା ରିଷ୍ଟୋର କରନ୍ତୁ"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"ମେନୁ ଖୋଲନ୍ତୁ"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>ରେ ଲେଖନ୍ତୁ"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ବାମପଟକୁ ୱିଣ୍ଡୋ ରିସାଇଜ କରନ୍ତୁ"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ଡାହାଣପଟକୁ ୱିଣ୍ଡୋ ରିସାଇଜ କରନ୍ତୁ"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ୱିଣ୍ଡୋ ସାଇଜକୁ ମେକ୍ସିମାଇଜ କିମ୍ବା ରିଷ୍ଟୋର କରନ୍ତୁ"</string>
diff --git a/libs/WindowManager/Shell/res/values-pl/strings.xml b/libs/WindowManager/Shell/res/values-pl/strings.xml
index 9a1bf33..3a55cf3 100644
--- a/libs/WindowManager/Shell/res/values-pl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pl/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Uchwyt aplikacji"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacji"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Pełny ekran"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Wersja na komputery"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Podzielony ekran"</string>
<string name="more_button_text" msgid="3655388105592893530">"Więcej"</string>
<string name="float_button_text" msgid="9221657008391364581">"Pływające"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Zmień format obrazu"</string>
<string name="close_text" msgid="4986518933445178928">"Zamknij"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zamknij menu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (wersja na komputery)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksymalizuj ekran"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Zmień rozmiar"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Nie można przenieść aplikacji tutaj"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Zmień rozmiar okna aplikacji po lewej"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Zmień rozmiar okna aplikacji po prawej"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Zmaksymalizuj lub przywróć rozmiar okna"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Otwórz menu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Wybierz <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Zmień rozmiar okna do lewej"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Zmień rozmiar okna do prawej"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Zmaksymalizuj lub przywróć rozmiar okna"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
index 0ca0e8e..3eaf0f5 100644
--- a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
@@ -128,7 +128,7 @@
<string name="open_in_browser_text" msgid="9181692926376072904">"Abrir no navegador"</string>
<string name="open_in_app_text" msgid="2874590745116268525">"Abrir na app"</string>
<string name="new_window_text" msgid="6318648868380652280">"Nova janela"</string>
- <string name="manage_windows_text" msgid="5567366688493093920">"Faça a gestão das janelas"</string>
+ <string name="manage_windows_text" msgid="5567366688493093920">"Gerir janelas"</string>
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Alterar formato"</string>
<string name="close_text" msgid="4986518933445178928">"Fechar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Fechar menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-ro/strings.xml b/libs/WindowManager/Shell/res/values-ro/strings.xml
index f71d93b..0195aca 100644
--- a/libs/WindowManager/Shell/res/values-ro/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ro/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Handle de aplicație"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Pictograma aplicației"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Ecran complet"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Afișare pe desktop"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Ecran împărțit"</string>
<string name="more_button_text" msgid="3655388105592893530">"Mai multe"</string>
<string name="float_button_text" msgid="9221657008391364581">"Flotantă"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Schimbă raportul de dimensiuni"</string>
<string name="close_text" msgid="4986518933445178928">"Închide"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Închide meniul"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (afișare pe desktop)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizează fereastra"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Redimensionează"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplicația nu poate fi mutată aici"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionează fereastra aplicației la stânga"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionează fereastra aplicației la dreapta"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizează sau restabilește dimensiunea ferestrei"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Deschide meniul"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Introdu <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionează fereastra la stânga"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionează fereastra la dreapta"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizează sau restabilește dimensiunea ferestrei"</string>
diff --git a/libs/WindowManager/Shell/res/values-si/strings.xml b/libs/WindowManager/Shell/res/values-si/strings.xml
index b7b2863..26bd937 100644
--- a/libs/WindowManager/Shell/res/values-si/strings.xml
+++ b/libs/WindowManager/Shell/res/values-si/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"යෙදුම් හසුරුව"</string>
<string name="app_icon_text" msgid="2823268023931811747">"යෙදුම් නිරූපකය"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"පූර්ණ තිරය"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ඩෙස්ක්ටොප් දසුන"</string>
<string name="split_screen_text" msgid="1396336058129570886">"බෙදුම් තිරය"</string>
<string name="more_button_text" msgid="3655388105592893530">"තව"</string>
<string name="float_button_text" msgid="9221657008391364581">"පාවෙන"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"දර්ශන අනුපාතය වෙනස් කරන්න"</string>
<string name="close_text" msgid="4986518933445178928">"වසන්න"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"මෙනුව වසන්න"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ඩෙස්ක්ටොප් දසුන)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"තිරය උපරිම කරන්න"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ප්රතිප්රමාණය කරන්න"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"යෙදුම මෙතැනට ගෙන යා නොහැක"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"යෙදුම් කවුළුව වමට ප්රතිප්රමාණ කරන්න"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"යෙදුම් කවුළුව දකුණට ප්රතිප්රමාණ කරන්න"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"කවුළු ප්රමාණය උපරිම කරන්න හෝ ප්රතිසාධනය කරන්න"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"මෙනුව විවෘත කරන්න"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> ඇතුළු කරන්න"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"කවුළුව වමට ප්රතිප්රමාණ කරන්න"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"කවුළුව දකුණට ප්රතිප්රමාණ කරන්න"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"කවුළු ප්රමාණය උපරිම කරන්න හෝ ප්රතිසාධනය කරන්න"</string>
diff --git a/libs/WindowManager/Shell/res/values-sk/strings.xml b/libs/WindowManager/Shell/res/values-sk/strings.xml
index ede0cdd..8b6999e 100644
--- a/libs/WindowManager/Shell/res/values-sk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sk/strings.xml
@@ -128,7 +128,7 @@
<string name="open_in_browser_text" msgid="9181692926376072904">"Otvoriť v prehliadači"</string>
<string name="open_in_app_text" msgid="2874590745116268525">"Otvoriť v aplikácii"</string>
<string name="new_window_text" msgid="6318648868380652280">"Nové okno"</string>
- <string name="manage_windows_text" msgid="5567366688493093920">"Správa okien"</string>
+ <string name="manage_windows_text" msgid="5567366688493093920">"Spravovať okná"</string>
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Zmeniť pomer strán"</string>
<string name="close_text" msgid="4986518933445178928">"Zavrieť"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zavrieť ponuku"</string>
diff --git a/libs/WindowManager/Shell/res/values-sq/strings.xml b/libs/WindowManager/Shell/res/values-sq/strings.xml
index ea26bc6..45a1c00 100644
--- a/libs/WindowManager/Shell/res/values-sq/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sq/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Emërtimi i aplikacionit"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Ikona e aplikacionit"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Ekrani i plotë"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Pamja për desktop"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Ekrani i ndarë"</string>
<string name="more_button_text" msgid="3655388105592893530">"Më shumë"</string>
<string name="float_button_text" msgid="9221657008391364581">"Pluskuese"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Ndrysho raportin e pamjes"</string>
<string name="close_text" msgid="4986518933445178928">"Mbyll"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Mbyll menynë"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Pamja për desktop)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimizo ekranin"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ndrysho përmasat"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikacioni nuk mund të zhvendoset këtu"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ndrysho përmasat e dritares së aplikacionit majtas"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ndrysho përmasat e dritares së aplikacionit djathtas"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimizo ose restauro madhësinë e dritares"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Hap menynë"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Kalo te \"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>\""</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ndrysho përmasat e dritares në të majtë"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ndrysho përmasat e dritares në të djathtë"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimizo ose restauro madhësinë e dritares"</string>
diff --git a/libs/WindowManager/Shell/res/values-sr/strings.xml b/libs/WindowManager/Shell/res/values-sr/strings.xml
index ea7a1bb..40ca9a4 100644
--- a/libs/WindowManager/Shell/res/values-sr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sr/strings.xml
@@ -134,9 +134,9 @@
<string name="collapse_menu_text" msgid="7515008122450342029">"Затворите мени"</string>
<string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (приказ за рачунаре)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Повећај екран"</string>
- <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Промени величину"</string>
+ <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Прилагоди"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Апликација не може да се премести овде"</string>
- <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Имерзивне"</string>
+ <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Имерзивно"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Врати"</string>
<string name="desktop_mode_maximize_menu_maximize_button_text" msgid="3090199175564175845">"Увећај"</string>
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Вратите"</string>
diff --git a/libs/WindowManager/Shell/res/values-sv/strings.xml b/libs/WindowManager/Shell/res/values-sv/strings.xml
index f3e53d0e..4e126e8 100644
--- a/libs/WindowManager/Shell/res/values-sv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sv/strings.xml
@@ -136,7 +136,7 @@
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximera skärmen"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ändra storlek"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Det går inte att flytta appen hit"</string>
- <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Uppslukande"</string>
+ <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Immersiv"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Återställ"</string>
<string name="desktop_mode_maximize_menu_maximize_button_text" msgid="3090199175564175845">"Utöka"</string>
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Återställ"</string>
diff --git a/libs/WindowManager/Shell/res/values-sw/strings.xml b/libs/WindowManager/Shell/res/values-sw/strings.xml
index 51aacac..8bfdfc6 100644
--- a/libs/WindowManager/Shell/res/values-sw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sw/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Utambulisho wa programu"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Aikoni ya Programu"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Skrini nzima"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Mwonekano wa Kompyuta"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Gawa Skrini"</string>
<string name="more_button_text" msgid="3655388105592893530">"Zaidi"</string>
<string name="float_button_text" msgid="9221657008391364581">"Inayoelea"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Badilisha uwiano"</string>
<string name="close_text" msgid="4986518933445178928">"Funga"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Funga Menyu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Mwonekano wa Kompyuta)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Panua Dirisha kwenye Skrini"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Badilisha ukubwa"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Imeshindwa kuhamishia programu hapa"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Badilisha ukubwa wa dirisha la programu kushoto"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Badilisha ukubwa wa dirisha la programu kulia"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Panua au urejeshe ukubwa wa dirisha"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Fungua Menyu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Weka <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Badilisha ukubwa wa dirisha kushoto"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Badilisha ukubwa wa dirisha kulia"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Panua au urejeshe ukubwa wa dirisha"</string>
diff --git a/libs/WindowManager/Shell/res/values-ta/strings.xml b/libs/WindowManager/Shell/res/values-ta/strings.xml
index 0c7206c..4d9093c 100644
--- a/libs/WindowManager/Shell/res/values-ta/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ta/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"ஆப்ஸ் ஹேண்டில்"</string>
<string name="app_icon_text" msgid="2823268023931811747">"ஆப்ஸ் ஐகான்"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"முழுத்திரை"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"டெஸ்க்டாப் காட்சி"</string>
<string name="split_screen_text" msgid="1396336058129570886">"திரையைப் பிரிக்கும்"</string>
<string name="more_button_text" msgid="3655388105592893530">"கூடுதல் விருப்பத்தேர்வுகள்"</string>
<string name="float_button_text" msgid="9221657008391364581">"மிதக்கும் சாளரம்"</string>
@@ -133,12 +132,11 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"தோற்ற விகிதத்தை மாற்று"</string>
<string name="close_text" msgid="4986518933445178928">"மூடும்"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"மெனுவை மூடும்"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (டெஸ்க்டாப் காட்சி)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"திரையைப் பெரிதாக்கு"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"அளவை மாற்று"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ஆப்ஸை இங்கே நகர்த்த முடியாது"</string>
- <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"ஈடுபட வைக்கும்"</string>
+ <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"முழுத்திரையும்"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"மீட்டெடுக்கும்"</string>
<string name="desktop_mode_maximize_menu_maximize_button_text" msgid="3090199175564175845">"பெரிதாக்கும்"</string>
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"மீட்டெடுக்கும்"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ஆப்ஸ் சாளரத்தின் இடதுபுறத்தில் அளவை மாற்றும்"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ஆப்ஸ் சாளரத்தின் வலதுபுறத்தில் அளவை மாற்றும்"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"சாளரத்தின் அளவைப் பெரிதாக்கும்/மீட்டெடுக்கும்"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"மெனுவைத் திறக்கும்"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> ஐ உள்ளிடும்"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"சாளரத்தை இடதுபுறமாக அளவு மாற்றும்"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"சாளரத்தை வலதுபுறமாக அளவு மாற்றும்"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"சாளரத்தின் அளவைப் பெரிதாக்கும்/மீட்டெடுக்கும்"</string>
diff --git a/libs/WindowManager/Shell/res/values-tl/strings.xml b/libs/WindowManager/Shell/res/values-tl/strings.xml
index 5787e10..056bc22 100644
--- a/libs/WindowManager/Shell/res/values-tl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tl/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Handle ng app"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Icon ng App"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Fullscreen"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Desktop View"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Split Screen"</string>
<string name="more_button_text" msgid="3655388105592893530">"Higit pa"</string>
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Baguhin ang aspect ratio"</string>
<string name="close_text" msgid="4986518933445178928">"Isara"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Isara ang Menu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Desktop View)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"I-maximize ang Screen"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"I-resize"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Hindi mailipat dito ang app"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"I-resize pakaliwa ang window ng app"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"I-resize pakanan ang window ng app"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"I-maximize o i-restore ang laki ng window"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Buksan ang Menu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Pumasok sa <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"I-resize pakaliwa ang window"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"I-resize pakanan ang window"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"I-maximize o i-restore ang laki ng window"</string>
diff --git a/libs/WindowManager/Shell/res/values-tr/strings.xml b/libs/WindowManager/Shell/res/values-tr/strings.xml
index 28b2a7d..017f6bb 100644
--- a/libs/WindowManager/Shell/res/values-tr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tr/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Uygulama tanıtıcısı"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Uygulama Simgesi"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Tam Ekran"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Masaüstü görünümü"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Bölünmüş Ekran"</string>
<string name="more_button_text" msgid="3655388105592893530">"Daha Fazla"</string>
<string name="float_button_text" msgid="9221657008391364581">"Havada Süzülen"</string>
@@ -133,12 +132,11 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"En boy oranını değiştir"</string>
<string name="close_text" msgid="4986518933445178928">"Kapat"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menüyü kapat"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (masaüstü görünümü)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ekranı Büyüt"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Yeniden boyutlandır"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Uygulama buraya taşınamıyor"</string>
- <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Etkileyici"</string>
+ <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Tam ekran"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Geri yükle"</string>
<string name="desktop_mode_maximize_menu_maximize_button_text" msgid="3090199175564175845">"Ekranı kapla"</string>
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Geri yükle"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Uygulama penceresini sola yeniden boyutlandır"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Uygulama penceresini sağa yeniden boyutlandır"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Pencereyi ekranı kaplayacak şekilde büyüt veya önceki boyutuna döndür"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Menüyü aç"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> moduna geç"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pencereyi sola yeniden boyutlandır"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pencereyi sağa yeniden boyutlandır"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Pencereyi ekranı kaplayacak şekilde büyüt veya önceki boyutuna döndür"</string>
diff --git a/libs/WindowManager/Shell/res/values-uk/strings.xml b/libs/WindowManager/Shell/res/values-uk/strings.xml
index f5693ca..32ce4a0 100644
--- a/libs/WindowManager/Shell/res/values-uk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uk/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Дескриптор додатка"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Значок додатка"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"На весь екран"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Версія для ПК"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Розділити екран"</string>
<string name="more_button_text" msgid="3655388105592893530">"Більше"</string>
<string name="float_button_text" msgid="9221657008391364581">"Плаваюче вікно"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Змінити формат"</string>
<string name="close_text" msgid="4986518933445178928">"Закрити"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Закрити меню"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (версія для ПК)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Розгорнути екран"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Змінити розмір"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Сюди не можна перемістити додаток"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Змінити розмір вікна додатка ліворуч"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Змінити розмір вікна додатка праворуч"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Розгорнути вікно або відновити його розмір"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Відкрити меню"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Відкрити в режимі \"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>\""</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Змінити розмір вікна ліворуч"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Змінити розмір вікна праворуч"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Розгорнути вікно або відновити його розмір"</string>
diff --git a/libs/WindowManager/Shell/res/values-ur/strings.xml b/libs/WindowManager/Shell/res/values-ur/strings.xml
index a801b5e..4de0c47 100644
--- a/libs/WindowManager/Shell/res/values-ur/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ur/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"ایپ ہینڈل"</string>
<string name="app_icon_text" msgid="2823268023931811747">"ایپ کا آئیکن"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"مکمل اسکرین"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"ڈیسک ٹاپ منظر"</string>
<string name="split_screen_text" msgid="1396336058129570886">"اسپلٹ اسکرین"</string>
<string name="more_button_text" msgid="3655388105592893530">"مزید"</string>
<string name="float_button_text" msgid="9221657008391364581">"فلوٹ"</string>
@@ -129,12 +128,11 @@
<string name="open_in_browser_text" msgid="9181692926376072904">"براؤزر میں کھولیں"</string>
<string name="open_in_app_text" msgid="2874590745116268525">"ایپ میں کھولیں"</string>
<string name="new_window_text" msgid="6318648868380652280">"نئی ونڈو"</string>
- <string name="manage_windows_text" msgid="5567366688493093920">"Windows کا نظم کریں"</string>
+ <string name="manage_windows_text" msgid="5567366688493093920">"ونڈوز کا نظم کریں"</string>
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"تناسبی شرح کو تبدیل کریں"</string>
<string name="close_text" msgid="4986518933445178928">"بند کریں"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"مینیو بند کریں"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ڈیسک ٹاپ منظر)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"اسکرین کو بڑا کریں"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"سائز تبدیل کریں"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ایپ کو یہاں منتقل نہیں کیا جا سکتا"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"دائیں طرف ایپ ونڈو کا سائز تبدیل کریں"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ایپ ونڈو کا سائز بائیں طرف تبدیل کریں"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ونڈو کا سائز زیادہ سے زیادہ یا بحال کریں"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"مینیو کھولیں"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> درج کریں"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"دائیں طرف ونڈو کا سائز تبدیل کریں"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ونڈو کا سائز بائیں طرف تبدیل کریں"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ونڈو کا سائز زیادہ سے زیادہ یا بحال کریں"</string>
diff --git a/libs/WindowManager/Shell/res/values-uz/strings.xml b/libs/WindowManager/Shell/res/values-uz/strings.xml
index 9fbbdc8..8c0d9bb 100644
--- a/libs/WindowManager/Shell/res/values-uz/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uz/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Ilova identifikatori"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Ilova belgisi"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Butun ekran"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Desktop versiya"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Ekranni ikkiga ajratish"</string>
<string name="more_button_text" msgid="3655388105592893530">"Yana"</string>
<string name="float_button_text" msgid="9221657008391364581">"Pufakli"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Tomonlar nisbatini oʻzgartirish"</string>
<string name="close_text" msgid="4986518933445178928">"Yopish"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menyuni yopish"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (desktop versiya)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ekranni yoyish"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Oʻlchamini oʻzgartirish"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Ilova bu yerga surilmaydi"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ilova chap oynasi oʻlchamini oʻzgartirish"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ilova oʻng oynasi oʻlchamini oʻzgartirish"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Menyuni ochish"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> rejimiga kirish"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Oyna oʻlchamini chapga oʻzgartirish"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Oyna oʻlchamini oʻngga oʻzgartirish"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string>
diff --git a/libs/WindowManager/Shell/res/values-vi/strings.xml b/libs/WindowManager/Shell/res/values-vi/strings.xml
index b40a4e6..3455eed 100644
--- a/libs/WindowManager/Shell/res/values-vi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-vi/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Ô điều khiển ứng dụng"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Biểu tượng ứng dụng"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Toàn màn hình"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Chế độ xem trên máy tính để bàn"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Chia đôi màn hình"</string>
<string name="more_button_text" msgid="3655388105592893530">"Tuỳ chọn khác"</string>
<string name="float_button_text" msgid="9221657008391364581">"Nổi"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Thay đổi tỷ lệ khung hình"</string>
<string name="close_text" msgid="4986518933445178928">"Đóng"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Đóng trình đơn"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Chế độ xem trên máy tính để bàn)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Mở rộng màn hình"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Đổi kích thước"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Không di chuyển được ứng dụng đến đây"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Đổi kích thước và chuyển cửa sổ ứng dụng sang trái"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Đổi kích thước và chuyển cửa sổ ứng dụng sang phải"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Phóng to hoặc khôi phục kích thước cửa sổ"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Mở Trình đơn"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Nhập <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Đổi kích thước và chuyển cửa sổ sang trái"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Đổi kích thước và chuyển cửa sổ sang phải"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Phóng to hoặc khôi phục kích thước cửa sổ"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
index 45cd25b..369fa4b 100644
--- a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"应用手柄"</string>
<string name="app_icon_text" msgid="2823268023931811747">"应用图标"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"全屏"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"桌面版视图"</string>
<string name="split_screen_text" msgid="1396336058129570886">"分屏"</string>
<string name="more_button_text" msgid="3655388105592893530">"更多"</string>
<string name="float_button_text" msgid="9221657008391364581">"悬浮"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"更改宽高比"</string>
<string name="close_text" msgid="4986518933445178928">"关闭"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"关闭菜单"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g>(桌面版视图)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"最大化屏幕"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"调整大小"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"无法将应用移至此处"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"调整应用窗口大小并贴靠左侧"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"调整应用窗口大小并贴靠右侧"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"将窗口最大化或恢复大小"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"打开菜单"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"进入<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"调整窗口大小并贴靠左侧"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"调整窗口大小并贴靠右侧"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"将窗口最大化或恢复大小"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
index d2c22da..8624f94d 100644
--- a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"應用程式控點"</string>
<string name="app_icon_text" msgid="2823268023931811747">"應用程式圖示"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"全螢幕"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"桌面電腦檢視模式"</string>
<string name="split_screen_text" msgid="1396336058129570886">"分割螢幕"</string>
<string name="more_button_text" msgid="3655388105592893530">"更多"</string>
<string name="float_button_text" msgid="9221657008391364581">"浮動"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"變更長寬比"</string>
<string name="close_text" msgid="4986518933445178928">"關閉"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"關閉選單"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (桌面電腦檢視模式)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"畫面最大化"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"調整大小"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"應用程式無法移至這裡"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"調整左邊應用程式視窗大小"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"調整右邊應用程式視窗大小"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"將視窗放到最大或者還原視窗大小"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"打開選單"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"進入<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"將視窗移去左邊調整大小"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"將視窗移去右邊調整大小"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"將視窗放到最大或者還原視窗大小"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
index 0984fad..199c102 100644
--- a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"應用程式控制代碼"</string>
<string name="app_icon_text" msgid="2823268023931811747">"應用程式圖示"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"全螢幕"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"電腦檢視畫面"</string>
<string name="split_screen_text" msgid="1396336058129570886">"分割畫面"</string>
<string name="more_button_text" msgid="3655388105592893530">"更多"</string>
<string name="float_button_text" msgid="9221657008391364581">"浮動"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"變更顯示比例"</string>
<string name="close_text" msgid="4986518933445178928">"關閉"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"關閉選單"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (電腦檢視畫面)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"畫面最大化"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"調整大小"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"應用程式無法移至此處"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"調整應用程式視窗大小並向左貼齊"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"調整應用程式視窗大小並向右貼齊"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"將視窗最大化或還原大小"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"開啟選單"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"進入<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"調整應用程式視窗大小並向左貼齊"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"調整應用程式視窗大小並向右貼齊"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"將視窗最大化或還原大小"</string>
diff --git a/libs/WindowManager/Shell/res/values-zu/strings.xml b/libs/WindowManager/Shell/res/values-zu/strings.xml
index 13f8ed1..8f40142 100644
--- a/libs/WindowManager/Shell/res/values-zu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zu/strings.xml
@@ -119,8 +119,7 @@
<string name="handle_text" msgid="4419667835599523257">"Inkomba ye-App"</string>
<string name="app_icon_text" msgid="2823268023931811747">"Isithonjana Se-app"</string>
<string name="fullscreen_text" msgid="1162316685217676079">"Isikrini esigcwele"</string>
- <!-- no translation found for desktop_text (1582173066857454541) -->
- <skip />
+ <string name="desktop_text" msgid="1582173066857454541">"Ukubuka Kwedeskithophu"</string>
<string name="split_screen_text" msgid="1396336058129570886">"Hlukanisa isikrini"</string>
<string name="more_button_text" msgid="3655388105592893530">"Okwengeziwe"</string>
<string name="float_button_text" msgid="9221657008391364581">"Iflowuthi"</string>
@@ -133,8 +132,7 @@
<string name="change_aspect_ratio_text" msgid="9104456064548212806">"Shintsha ukubukeka kwesilinganiselo"</string>
<string name="close_text" msgid="4986518933445178928">"Vala"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Vala Imenyu"</string>
- <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
- <skip />
+ <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Ukubuka Kwedeskithophu)"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Khulisa Isikrini Sifike Ekugcineni"</string>
<string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Shintsha usayizi"</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"I-app ayikwazi ukuhanjiswa lapha"</string>
@@ -147,10 +145,8 @@
<string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Shintsha usayizi we-app yewindi ngakwesokunxele"</string>
<string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Shintsha usayizi we-app yewindi ngakwesokudla"</string>
<string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Khulisa noma buyisela usayizi wewindi"</string>
- <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
- <skip />
- <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
- <skip />
+ <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Vula Imenyu"</string>
+ <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Faka i-<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
<string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Shintsha usayizi wewindi ngakwesokunxele"</string>
<string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Shintsha usayizi wewindi ngakwesokudla"</string>
<string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Khulisa noma buyisela usayizi wewindi"</string>
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/GroupedTaskInfo.java b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/GroupedTaskInfo.java
index 0a1e3b9..25b9f8c 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/GroupedTaskInfo.java
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/GroupedTaskInfo.java
@@ -47,20 +47,26 @@
public static final int TYPE_FULLSCREEN = 1;
public static final int TYPE_SPLIT = 2;
- public static final int TYPE_FREEFORM = 3;
+ public static final int TYPE_DESK = 3;
public static final int TYPE_MIXED = 4;
@IntDef(prefix = {"TYPE_"}, value = {
TYPE_FULLSCREEN,
TYPE_SPLIT,
- TYPE_FREEFORM,
+ TYPE_DESK,
TYPE_MIXED
})
public @interface GroupType {}
/**
+ * The ID of the desk that this `GroupedTaskInfo` represents (when the type is `TYPE_DESK`). The
+ * value is -1 if this is not a desk.
+ */
+ private final int mDeskId;
+
+ /**
* The type of this particular task info, can be one of TYPE_FULLSCREEN, TYPE_SPLIT or
- * TYPE_FREEFORM.
+ * TYPE_DESK.
*/
@GroupType
protected final int mType;
@@ -69,7 +75,7 @@
* The list of tasks associated with this single recent task info.
* TYPE_FULLSCREEN: Contains the stack of tasks associated with a single "task" in overview
* TYPE_SPLIT: Contains the two split roots of each side
- * TYPE_FREEFORM: Contains the set of tasks currently in freeform mode
+ * TYPE_DESK: Contains the set of tasks currently in freeform mode contained in desk.
*/
@Nullable
protected final List<TaskInfo> mTasks;
@@ -83,7 +89,7 @@
protected final SplitBounds mSplitBounds;
/**
- * Only set for TYPE_FREEFORM.
+ * Only set for TYPE_DESK.
*
* TODO(b/348332802): move isMinimized inside each Task object instead once we have a
* replacement for RecentTaskInfo
@@ -103,8 +109,8 @@
* Create new for a stack of fullscreen tasks
*/
public static GroupedTaskInfo forFullscreenTasks(@NonNull TaskInfo task) {
- return new GroupedTaskInfo(List.of(task), null, TYPE_FULLSCREEN,
- null /* minimizedFreeformTasks */);
+ return new GroupedTaskInfo(/* deskId = */ -1, List.of(task), null, TYPE_FULLSCREEN,
+ /* minimizedFreeformTaskIds = */ null);
}
/**
@@ -112,18 +118,19 @@
*/
public static GroupedTaskInfo forSplitTasks(@NonNull TaskInfo task1,
@NonNull TaskInfo task2, @NonNull SplitBounds splitBounds) {
- return new GroupedTaskInfo(List.of(task1, task2), splitBounds, TYPE_SPLIT,
- null /* minimizedFreeformTasks */);
+ return new GroupedTaskInfo(/* deskId = */ -1, List.of(task1, task2), splitBounds,
+ TYPE_SPLIT, /* minimizedFreeformTaskIds = */ null);
}
/**
- * Create new for a group of freeform tasks
+ * Create new for a group of freeform tasks that belong to a single desk.
*/
- public static GroupedTaskInfo forFreeformTasks(
- @NonNull List<TaskInfo> tasks,
- @NonNull Set<Integer> minimizedFreeformTasks) {
- return new GroupedTaskInfo(tasks, null /* splitBounds */, TYPE_FREEFORM,
- minimizedFreeformTasks.stream().mapToInt(i -> i).toArray());
+ public static GroupedTaskInfo forDeskTasks(
+ int deskId,
+ @NonNull List<TaskInfo> tasks,
+ @NonNull Set<Integer> minimizedFreeformTaskIds) {
+ return new GroupedTaskInfo(deskId, tasks, /* splitBounds = */ null, TYPE_DESK,
+ minimizedFreeformTaskIds.stream().mapToInt(i -> i).toArray());
}
/**
@@ -141,10 +148,12 @@
}
private GroupedTaskInfo(
+ int deskId,
@NonNull List<TaskInfo> tasks,
@Nullable SplitBounds splitBounds,
@GroupType int type,
@Nullable int[] minimizedFreeformTaskIds) {
+ mDeskId = deskId;
mTasks = tasks;
mGroupedTasks = null;
mSplitBounds = splitBounds;
@@ -154,6 +163,7 @@
}
private GroupedTaskInfo(@NonNull List<GroupedTaskInfo> groupedTasks) {
+ mDeskId = -1;
mTasks = null;
mGroupedTasks = groupedTasks;
mSplitBounds = null;
@@ -174,6 +184,7 @@
}
protected GroupedTaskInfo(@NonNull Parcel parcel) {
+ mDeskId = parcel.readInt();
mTasks = new ArrayList();
final int numTasks = parcel.readInt();
for (int i = 0; i < numTasks; i++) {
@@ -274,6 +285,16 @@
}
/**
+ * Returns the ID of the desk represented by `this` if the type is `TYPE_DESK`, or -1 otherwise.
+ */
+ public int getDeskId() {
+ if (mType == TYPE_MIXED) {
+ throw new IllegalStateException("No desk ID for a mixed task");
+ }
+ return mDeskId;
+ }
+
+ /**
* Get type of this recents entry. One of {@link GroupType}.
* Note: This is deprecated, callers should use `isBaseType()` and not make assumptions about
* specific group types
@@ -285,7 +306,7 @@
}
/**
- * Returns the set of minimized task ids, only valid for TYPE_FREEFORM.
+ * Returns the set of minimized task ids, only valid for TYPE_DESK.
*/
@Nullable
public int[] getMinimizedTaskIds() {
@@ -301,7 +322,8 @@
return false;
}
GroupedTaskInfo other = (GroupedTaskInfo) obj;
- return mType == other.mType
+ return mDeskId == other.mDeskId
+ && mType == other.mType
&& Objects.equals(mTasks, other.mTasks)
&& Objects.equals(mGroupedTasks, other.mGroupedTasks)
&& Objects.equals(mSplitBounds, other.mSplitBounds)
@@ -310,7 +332,7 @@
@Override
public int hashCode() {
- return Objects.hash(mType, mTasks, mGroupedTasks, mSplitBounds,
+ return Objects.hash(mDeskId, mType, mTasks, mGroupedTasks, mSplitBounds,
Arrays.hashCode(mMinimizedTaskIds));
}
@@ -322,6 +344,7 @@
.map(GroupedTaskInfo::toString)
.collect(Collectors.joining(",\n\t", "[\n\t", "\n]")));
} else {
+ taskString.append("Desk ID= ").append(mDeskId).append(", ");
taskString.append("Tasks=" + mTasks.stream()
.map(taskInfo -> getTaskInfoDumpString(taskInfo))
.collect(Collectors.joining(", ", "[", "]")));
@@ -353,6 +376,7 @@
@Override
public void writeToParcel(Parcel parcel, int flags) {
+ parcel.writeInt(mDeskId);
// We don't use the parcel list methods because we want to only write the TaskInfo state
// and not the subclasses (Recents/RunningTaskInfo) whose fields are all deprecated
final int tasksSize = mTasks != null ? mTasks.size() : 0;
@@ -375,7 +399,7 @@
return switch (type) {
case TYPE_FULLSCREEN -> "FULLSCREEN";
case TYPE_SPLIT -> "SPLIT";
- case TYPE_FREEFORM -> "FREEFORM";
+ case TYPE_DESK -> "DESK";
case TYPE_MIXED -> "MIXED";
default -> "UNKNOWN";
};
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/Interpolators.java b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/Interpolators.java
index e92c1eb..43dd9b7 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/Interpolators.java
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/Interpolators.java
@@ -74,6 +74,12 @@
0.05f, 0.7f, 0.1f, 1f);
/**
+ * The standard accelerating interpolator that should be used on every regular movement of
+ * content that is disappearing e.g. when moving off screen.
+ */
+ public static final Interpolator STANDARD_ACCELERATE = new PathInterpolator(0.3f, 0f, 1f, 1f);
+
+ /**
* The standard decelerating interpolator that should be used on every regular movement of
* content that is appearing e.g. when coming from off screen.
*/
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/MinimizeAnimator.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/MinimizeAnimator.kt
index 0586e26..4ecace0 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/MinimizeAnimator.kt
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/MinimizeAnimator.kt
@@ -19,52 +19,76 @@
import android.animation.Animator
import android.animation.AnimatorSet
import android.animation.ValueAnimator
-import android.util.DisplayMetrics
+import android.content.Context
+import android.os.Handler
+import android.view.Choreographer
import android.view.SurfaceControl.Transaction
-import android.view.animation.LinearInterpolator
-import android.view.animation.PathInterpolator
import android.window.TransitionInfo.Change
+import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_MINIMIZE_WINDOW
+import com.android.internal.jank.InteractionJankMonitor
/** Creates minimization animation */
object MinimizeAnimator {
private const val MINIMIZE_ANIM_ALPHA_DURATION_MS = 100L
- private val STANDARD_ACCELERATE = PathInterpolator(0.3f, 0f, 1f, 1f)
-
private val minimizeBoundsAnimationDef =
WindowAnimator.BoundsAnimationParams(
durationMs = 200,
endOffsetYDp = 12f,
endScale = 0.97f,
- interpolator = STANDARD_ACCELERATE,
+ interpolator = Interpolators.STANDARD_ACCELERATE,
)
+ /**
+ * Creates a minimize animator for given task [Change].
+ *
+ * @param onAnimFinish finish-callback for the animation, note that this is called on the same
+ * thread as the animation itself.
+ * @param animationHandler the Handler that the animation is running on.
+ */
@JvmStatic
fun create(
- displayMetrics: DisplayMetrics,
+ context: Context,
change: Change,
transaction: Transaction,
onAnimFinish: (Animator) -> Unit,
+ interactionJankMonitor: InteractionJankMonitor,
+ animationHandler: Handler,
): Animator {
val boundsAnimator = WindowAnimator.createBoundsAnimator(
- displayMetrics,
+ context.resources.displayMetrics,
minimizeBoundsAnimationDef,
change,
transaction,
)
val alphaAnimator = ValueAnimator.ofFloat(1f, 0f).apply {
duration = MINIMIZE_ANIM_ALPHA_DURATION_MS
- interpolator = LinearInterpolator()
+ interpolator = Interpolators.LINEAR
addUpdateListener { animation ->
- transaction.setAlpha(change.leash, animation.animatedValue as Float).apply()
+ transaction
+ .setAlpha(change.leash, animation.animatedValue as Float)
+ .setFrameTimeline(Choreographer.getInstance().vsyncId)
+ .apply()
}
}
val listener = object : Animator.AnimatorListener {
- override fun onAnimationEnd(animator: Animator) = onAnimFinish(animator)
- override fun onAnimationCancel(animator: Animator) = Unit
+ override fun onAnimationStart(animator: Animator) {
+ interactionJankMonitor.begin(
+ change.leash,
+ context,
+ animationHandler,
+ CUJ_DESKTOP_MODE_MINIMIZE_WINDOW,
+ )
+ }
+ override fun onAnimationCancel(animator: Animator) {
+ interactionJankMonitor.cancel(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW)
+ }
override fun onAnimationRepeat(animator: Animator) = Unit
- override fun onAnimationStart(animator: Animator) = Unit
+ override fun onAnimationEnd(animator: Animator) {
+ interactionJankMonitor.end(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW)
+ onAnimFinish(animator)
+ }
}
return AnimatorSet().apply {
playTogether(boundsAnimator, alphaAnimator)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java
index f269b38..78f5154 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java
@@ -364,7 +364,7 @@
@NonNull SurfaceControl.Transaction finishTransaction,
@NonNull List<ActivityEmbeddingAnimationAdapter> adapters) {
for (ActivityEmbeddingAnimationAdapter adapter : adapters) {
- final int backgroundColor = getTransitionBackgroundColorIfSet(info, adapter.mChange,
+ final int backgroundColor = getTransitionBackgroundColorIfSet(adapter.mChange,
adapter.mAnimation, 0 /* defaultColor */);
if (backgroundColor != 0) {
// We only need to show one color.
@@ -436,8 +436,8 @@
final TransitionInfo.AnimationOptions options = boundsAnimationChange
.getAnimationOptions();
if (options != null) {
- final Animation overrideAnimation = mAnimationSpec.loadCustomAnimationFromOptions(
- options, TRANSIT_CHANGE);
+ final Animation overrideAnimation =
+ mAnimationSpec.loadCustomAnimation(options, TRANSIT_CHANGE);
if (overrideAnimation != null) {
overrideShowBackdrop = overrideAnimation.getShowBackdrop();
}
@@ -447,7 +447,7 @@
// There are two animations in the array. The first one is for the start leash
// (snapshot), and the second one is for the end leash (TaskFragment).
final Animation[] animations =
- mAnimationSpec.createChangeBoundsChangeAnimations(info, change, parentBounds);
+ mAnimationSpec.createChangeBoundsChangeAnimations(change, parentBounds);
// Jump cut if either animation has zero for duration.
for (Animation animation : animations) {
if (shouldUseJumpCutForAnimation(animation)) {
@@ -500,12 +500,10 @@
// window without bounds change.
animation = ActivityEmbeddingAnimationSpec.createNoopAnimation(change);
} else if (TransitionUtil.isClosingType(change.getMode())) {
- animation =
- mAnimationSpec.createChangeBoundsCloseAnimation(info, change, parentBounds);
+ animation = mAnimationSpec.createChangeBoundsCloseAnimation(change, parentBounds);
shouldShowBackgroundColor = false;
} else {
- animation =
- mAnimationSpec.createChangeBoundsOpenAnimation(info, change, parentBounds);
+ animation = mAnimationSpec.createChangeBoundsOpenAnimation(change, parentBounds);
shouldShowBackgroundColor = false;
}
if (shouldUseJumpCutForAnimation(animation)) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java
index 77799e9..2b9eda4 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java
@@ -42,7 +42,6 @@
import android.window.TransitionInfo;
import com.android.internal.policy.TransitionAnimation;
-import com.android.window.flags.Flags;
import com.android.wm.shell.shared.TransitionUtil;
/** Animation spec for ActivityEmbedding transition. */
@@ -94,9 +93,10 @@
/** Animation for window that is opening in a change transition. */
@NonNull
- Animation createChangeBoundsOpenAnimation(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @NonNull Rect parentBounds) {
- final Animation customAnimation = loadCustomAnimation(info, change, TRANSIT_CHANGE);
+ Animation createChangeBoundsOpenAnimation(@NonNull TransitionInfo.Change change,
+ @NonNull Rect parentBounds) {
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), TRANSIT_CHANGE);
if (customAnimation != null) {
return customAnimation;
}
@@ -126,9 +126,10 @@
/** Animation for window that is closing in a change transition. */
@NonNull
- Animation createChangeBoundsCloseAnimation(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @NonNull Rect parentBounds) {
- final Animation customAnimation = loadCustomAnimation(info, change, TRANSIT_CHANGE);
+ Animation createChangeBoundsCloseAnimation(@NonNull TransitionInfo.Change change,
+ @NonNull Rect parentBounds) {
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), TRANSIT_CHANGE);
if (customAnimation != null) {
return customAnimation;
}
@@ -162,12 +163,13 @@
* the second one is for the end leash.
*/
@NonNull
- Animation[] createChangeBoundsChangeAnimations(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @NonNull Rect parentBounds) {
+ Animation[] createChangeBoundsChangeAnimations(@NonNull TransitionInfo.Change change,
+ @NonNull Rect parentBounds) {
// TODO(b/293658614): Support more complicated animations that may need more than a noop
// animation as the start leash.
final Animation noopAnimation = createNoopAnimation(change);
- final Animation customAnimation = loadCustomAnimation(info, change, TRANSIT_CHANGE);
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), TRANSIT_CHANGE);
if (customAnimation != null) {
return new Animation[]{noopAnimation, customAnimation};
}
@@ -221,7 +223,8 @@
Animation loadOpenAnimation(@NonNull TransitionInfo info,
@NonNull TransitionInfo.Change change, @NonNull Rect wholeAnimationBounds) {
final boolean isEnter = TransitionUtil.isOpeningType(change.getMode());
- final Animation customAnimation = loadCustomAnimation(info, change, change.getMode());
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), change.getMode());
final Animation animation;
if (customAnimation != null) {
animation = customAnimation;
@@ -248,7 +251,8 @@
Animation loadCloseAnimation(@NonNull TransitionInfo info,
@NonNull TransitionInfo.Change change, @NonNull Rect wholeAnimationBounds) {
final boolean isEnter = TransitionUtil.isOpeningType(change.getMode());
- final Animation customAnimation = loadCustomAnimation(info, change, change.getMode());
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), change.getMode());
final Animation animation;
if (customAnimation != null) {
animation = customAnimation;
@@ -280,20 +284,8 @@
}
@Nullable
- private Animation loadCustomAnimation(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @WindowManager.TransitionType int mode) {
- final TransitionInfo.AnimationOptions options;
- if (Flags.moveAnimationOptionsToChange()) {
- options = change.getAnimationOptions();
- } else {
- options = info.getAnimationOptions();
- }
- return loadCustomAnimationFromOptions(options, mode);
- }
-
- @Nullable
- Animation loadCustomAnimationFromOptions(@Nullable TransitionInfo.AnimationOptions options,
- @WindowManager.TransitionType int mode) {
+ Animation loadCustomAnimation(@Nullable TransitionInfo.AnimationOptions options,
+ @WindowManager.TransitionType int mode) {
if (options == null || options.getType() != ANIM_CUSTOM) {
return null;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
index 55ed5fa..3a95333 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
@@ -40,7 +40,6 @@
import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.window.flags.Flags;
import com.android.wm.shell.shared.TransitionUtil;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.Transitions;
@@ -123,9 +122,6 @@
}
private boolean shouldAnimateAnimationOptions(@NonNull TransitionInfo info) {
- if (!Flags.moveAnimationOptionsToChange()) {
- return shouldAnimateAnimationOptions(info.getAnimationOptions());
- }
for (TransitionInfo.Change change : info.getChanges()) {
if (!shouldAnimateAnimationOptions(change.getAnimationOptions())) {
// If any of override animation is not supported, don't animate the transition.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
index d948928..313d151 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
@@ -364,7 +364,7 @@
@ShellMainThread Executor mainExecutor, @ShellBackgroundThread Executor bgExecutor) {
return new Bubble(intent,
user,
- /* key= */ getAppBubbleKeyForApp(ComponentUtils.getPackageName(intent), user),
+ /* key= */ getAppBubbleKeyForApp(intent.getIntent().getPackage(), user),
mainExecutor, bgExecutor);
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
index 3f607a9..2c2451c 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
@@ -197,6 +197,8 @@
*/
private final FrameLayout mExpandedViewContainer = new FrameLayout(getContext());
+ private TaskView.Listener mCurrentTaskViewListener;
+
private final TaskView.Listener mTaskViewListener = new TaskView.Listener() {
private boolean mInitialized = false;
private boolean mDestroyed = false;
@@ -235,18 +237,24 @@
Context context =
mContext.createContextAsUser(
mBubble.getUser(), Context.CONTEXT_RESTRICTED);
+ Intent fillInIntent = new Intent();
+ fillInIntent.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
PendingIntent pi = PendingIntent.getActivity(
context,
/* requestCode= */ 0,
- mBubble.getIntent().addFlags(FLAG_ACTIVITY_MULTIPLE_TASK),
- PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT,
+ mBubble.getIntent(),
+ // Needs to be mutable for the fillInIntent
+ PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT,
/* options= */ null);
- mTaskView.startActivity(pi, /* fillInIntent= */ null, options,
- launchBounds);
+ mTaskView.startActivity(pi, fillInIntent, options, launchBounds);
} else if (!mIsOverflow && isShortcutBubble) {
ProtoLog.v(WM_SHELL_BUBBLES, "startingShortcutBubble=%s", getBubbleKey());
- options.setLaunchedFromBubble(true);
- options.setApplyActivityFlagsForBubbles(true);
+ if (mBubble.isChat()) {
+ options.setLaunchedFromBubble(true);
+ options.setApplyActivityFlagsForBubbles(true);
+ } else {
+ options.setApplyMultipleTaskFlagForShortcut(true);
+ }
mTaskView.startShortcutActivity(mBubble.getShortcutInfo(),
options, launchBounds);
} else {
@@ -453,7 +461,34 @@
mTaskView = bubbleTaskView.getTaskView();
// reset the insets that might left after TaskView is shown in BubbleBarExpandedView
mTaskView.setCaptionInsets(null);
- bubbleTaskView.setDelegateListener(mTaskViewListener);
+ if (Flags.enableBubbleTaskViewListener()) {
+ mCurrentTaskViewListener = new BubbleTaskViewListener(mContext, bubbleTaskView,
+ /* viewParent= */ this, expandedViewManager,
+ new BubbleTaskViewListener.Callback() {
+ @Override
+ public void onTaskCreated() {
+ setContentVisibility(true);
+ }
+
+ @Override
+ public void onContentVisibilityChanged(boolean visible) {
+ setContentVisibility(visible);
+ }
+
+ @Override
+ public void onBackPressed() {
+ mStackView.onBackPressed();
+ }
+
+ @Override
+ public void onTaskRemovalStarted() {
+ // nothing to do / handled in listener.
+ }
+ });
+ } else {
+ mCurrentTaskViewListener = mTaskViewListener;
+ bubbleTaskView.setDelegateListener(mCurrentTaskViewListener);
+ }
// set a fixed width so it is not recalculated as part of a rotation. the width will be
// updated manually after the rotation.
@@ -464,9 +499,12 @@
}
mExpandedViewContainer.addView(mTaskView, lp);
bringChildToFront(mTaskView);
- if (bubbleTaskView.isCreated()) {
- mTaskViewListener.onTaskCreated(
- bubbleTaskView.getTaskId(), bubbleTaskView.getComponentName());
+
+ if (!Flags.enableBubbleTaskViewListener()) {
+ if (bubbleTaskView.isCreated()) {
+ mCurrentTaskViewListener.onTaskCreated(
+ bubbleTaskView.getTaskId(), bubbleTaskView.getComponentName());
+ }
}
}
}
@@ -897,7 +935,12 @@
Log.w(TAG, "Stack is null for bubble: " + bubble);
return;
}
- boolean isNew = mBubble == null || didBackingContentChange(bubble);
+ boolean isNew;
+ if (mCurrentTaskViewListener instanceof BubbleTaskViewListener) {
+ isNew = ((BubbleTaskViewListener) mCurrentTaskViewListener).setBubble(bubble);
+ } else {
+ isNew = mBubble == null || didBackingContentChange(bubble);
+ }
boolean isUpdate = bubble != null && mBubble != null
&& bubble.getKey().equals(mBubble.getKey());
ProtoLog.d(WM_SHELL_BUBBLES, "BubbleExpandedView - update bubble=%s; isNew=%b; isUpdate=%b",
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewListener.java
index a38debb..63d7134 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewListener.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewListener.java
@@ -129,27 +129,28 @@
Context context =
mContext.createContextAsUser(
mBubble.getUser(), Context.CONTEXT_RESTRICTED);
- Intent fillInIntent = null;
+ Intent fillInIntent = new Intent();
+ fillInIntent.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
// First try get pending intent from the bubble
PendingIntent pi = mBubble.getPendingIntent();
if (pi == null) {
- // If null - create new one
+ // If null - create new one based on the bubble intent
pi = PendingIntent.getActivity(
context,
/* requestCode= */ 0,
- mBubble.getIntent()
- .addFlags(FLAG_ACTIVITY_MULTIPLE_TASK),
- PendingIntent.FLAG_IMMUTABLE
- | PendingIntent.FLAG_UPDATE_CURRENT,
+ mBubble.getIntent(),
+ // Needs to be mutable for the fillInIntent
+ PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT,
/* options= */ null);
- } else {
- fillInIntent = new Intent(pi.getIntent());
- fillInIntent.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
}
mTaskView.startActivity(pi, fillInIntent, options, launchBounds);
} else if (isShortcutBubble) {
- options.setLaunchedFromBubble(true);
- options.setApplyActivityFlagsForBubbles(true);
+ if (mBubble.isChat()) {
+ options.setLaunchedFromBubble(true);
+ options.setApplyActivityFlagsForBubbles(true);
+ } else {
+ options.setApplyMultipleTaskFlagForShortcut(true);
+ }
mTaskView.startShortcutActivity(mBubble.getShortcutInfo(),
options, launchBounds);
} else {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTransitions.java
index a676f41..338ffe7 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTransitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTransitions.java
@@ -21,6 +21,7 @@
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.view.View.INVISIBLE;
import static android.view.WindowManager.TRANSIT_CHANGE;
+import static android.view.WindowManager.TRANSIT_TO_FRONT;
import static com.android.wm.shell.transition.Transitions.TRANSIT_CONVERT_TO_BUBBLE;
@@ -325,7 +326,7 @@
for (int i = 0; i < info.getChanges().size(); ++i) {
final TransitionInfo.Change chg = info.getChanges().get(i);
if (chg.getTaskInfo() == null) continue;
- if (chg.getMode() != TRANSIT_CHANGE) continue;
+ if (chg.getMode() != TRANSIT_CHANGE && chg.getMode() != TRANSIT_TO_FRONT) continue;
if (!mTaskInfo.token.equals(chg.getTaskInfo().token)) continue;
mStartBounds.set(chg.getStartAbsBounds());
// Converting a task into taskview, so treat as "new"
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java
index 87a4115..df82091 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java
@@ -227,7 +227,13 @@
/** Hides the IME for Bubbles when the device is locked. */
public void hideImeForBubblesWhenLocked(int displayId) {
PerDisplay pd = mImePerDisplay.get(displayId);
- pd.setImeInputTargetRequestedVisibility(false, pd.getImeSourceControl().getImeStatsToken());
+ InsetsSourceControl imeSourceControl = pd.getImeSourceControl();
+ if (imeSourceControl != null) {
+ ImeTracker.Token imeStatsToken = imeSourceControl.getImeStatsToken();
+ if (imeStatsToken != null) {
+ pd.setImeInputTargetRequestedVisibility(false, imeStatsToken);
+ }
+ }
}
/** An implementation of {@link IDisplayWindowInsetsController} for a given display id. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsAlgorithm.java
index 8e026f0..04e8d8d 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsAlgorithm.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsAlgorithm.java
@@ -24,6 +24,7 @@
import android.content.res.Resources;
import android.graphics.Rect;
import android.util.DisplayMetrics;
+import android.util.Rational;
import android.util.Size;
import android.view.Gravity;
@@ -41,9 +42,6 @@
private static final String TAG = PipBoundsAlgorithm.class.getSimpleName();
private static final float INVALID_SNAP_FRACTION = -1f;
- // The same value (with the same name) is used in Launcher.
- private static final float PIP_ASPECT_RATIO_MISMATCH_THRESHOLD = 0.01f;
-
@NonNull private final PipBoundsState mPipBoundsState;
@NonNull protected final PipDisplayLayoutState mPipDisplayLayoutState;
@NonNull protected final SizeSpecSource mSizeSpecSource;
@@ -223,9 +221,8 @@
+ " than destination(%s)", sourceRectHint, destinationBounds);
return false;
}
- final float reportedRatio = destinationBounds.width() / (float) destinationBounds.height();
- final float inferredRatio = sourceRectHint.width() / (float) sourceRectHint.height();
- if (Math.abs(reportedRatio - inferredRatio) > PIP_ASPECT_RATIO_MISMATCH_THRESHOLD) {
+ if (!PictureInPictureParams.isSameAspectRatio(sourceRectHint,
+ new Rational(destinationBounds.width(), destinationBounds.height()))) {
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
"isSourceRectHintValidForEnterPip=false, hint(%s) does not match"
+ " destination(%s) aspect ratio", sourceRectHint, destinationBounds);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellConcurrencyModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellConcurrencyModule.java
index ee3e39e..e9dc613 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellConcurrencyModule.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellConcurrencyModule.java
@@ -162,22 +162,31 @@
}
}
+ /** Provide a Shell animation-thread Handler. */
+ @WMSingleton
+ @Provides
+ @ShellAnimationThread
+ public static Handler provideShellAnimationHandler() {
+ HandlerThread animThread = new HandlerThread("wmshell.anim", THREAD_PRIORITY_DISPLAY);
+ animThread.start();
+ if (Build.IS_DEBUGGABLE) {
+ animThread.getLooper().setTraceTag(Trace.TRACE_TAG_WINDOW_MANAGER);
+ animThread.getLooper().setSlowLogThresholdMs(MSGQ_SLOW_DISPATCH_THRESHOLD_MS,
+ MSGQ_SLOW_DELIVERY_THRESHOLD_MS);
+ }
+ return Handler.createAsync(animThread.getLooper());
+ }
+
/**
* Provide a Shell animation-thread Executor.
*/
@WMSingleton
@Provides
@ShellAnimationThread
- public static ShellExecutor provideShellAnimationExecutor() {
- HandlerThread shellAnimationThread = new HandlerThread("wmshell.anim",
- THREAD_PRIORITY_DISPLAY);
- shellAnimationThread.start();
- if (Build.IS_DEBUGGABLE) {
- shellAnimationThread.getLooper().setTraceTag(Trace.TRACE_TAG_WINDOW_MANAGER);
- shellAnimationThread.getLooper().setSlowLogThresholdMs(MSGQ_SLOW_DISPATCH_THRESHOLD_MS,
- MSGQ_SLOW_DELIVERY_THRESHOLD_MS);
- }
- return new HandlerExecutor(Handler.createAsync(shellAnimationThread.getLooper()));
+ public static ShellExecutor provideShellAnimationExecutor(
+ @ShellAnimationThread Handler animHandler
+ ) {
+ return new HandlerExecutor(animHandler);
}
/**
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java
index 5a246e7..5d5e4d3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java
@@ -431,9 +431,10 @@
Transitions transitions,
DisplayController displayController,
@ShellMainThread ShellExecutor mainExecutor,
- @ShellAnimationThread ShellExecutor animExecutor) {
+ @ShellAnimationThread ShellExecutor animExecutor,
+ @ShellAnimationThread Handler animHandler) {
return new FreeformTaskTransitionHandler(
- transitions, displayController, mainExecutor, animExecutor);
+ transitions, displayController, mainExecutor, animExecutor, animHandler);
}
@WMSingleton
@@ -1101,8 +1102,9 @@
Context context,
@ShellMainThread ShellExecutor mainExecutor,
@ShellAnimationThread ShellExecutor animExecutor,
- @ShellMainThread Handler handler) {
- return new CloseDesktopTaskTransitionHandler(context, mainExecutor, animExecutor, handler);
+ @ShellAnimationThread Handler animHandler) {
+ return new CloseDesktopTaskTransitionHandler(context, mainExecutor, animExecutor,
+ animHandler);
}
@WMSingleton
@@ -1110,9 +1112,10 @@
static DesktopMinimizationTransitionHandler provideDesktopMinimizationTransitionHandler(
@ShellMainThread ShellExecutor mainExecutor,
@ShellAnimationThread ShellExecutor animExecutor,
- DisplayController displayController) {
+ DisplayController displayController,
+ @ShellAnimationThread Handler mainHandler) {
return new DesktopMinimizationTransitionHandler(mainExecutor, animExecutor,
- displayController);
+ displayController, mainHandler);
}
@WMSingleton
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/CloseDesktopTaskTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/CloseDesktopTaskTransitionHandler.kt
index 1ce093e..b22a46e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/CloseDesktopTaskTransitionHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/CloseDesktopTaskTransitionHandler.kt
@@ -37,7 +37,6 @@
import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_CLOSE_TASK
import com.android.internal.jank.InteractionJankMonitor
import com.android.wm.shell.common.ShellExecutor
-import com.android.wm.shell.shared.annotations.ShellMainThread
import com.android.wm.shell.transition.Transitions
import java.util.function.Supplier
@@ -49,7 +48,7 @@
private val mainExecutor: ShellExecutor,
private val animExecutor: ShellExecutor,
private val transactionSupplier: Supplier<Transaction> = Supplier { Transaction() },
- @ShellMainThread private val handler: Handler,
+ private val animHandler: Handler,
) : Transitions.TransitionHandler {
private val runningAnimations = mutableMapOf<IBinder, List<Animator>>()
@@ -95,7 +94,7 @@
interactionJankMonitor.begin(
lastChangeLeash,
context,
- handler,
+ animHandler,
CUJ_DESKTOP_MODE_CLOSE_TASK,
)
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt
index 728638d..7074e8b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt
@@ -18,14 +18,17 @@
import android.animation.Animator
import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM
+import android.os.Handler
import android.os.IBinder
-import android.util.DisplayMetrics
import android.view.SurfaceControl.Transaction
import android.window.TransitionInfo
import android.window.TransitionRequestInfo
import android.window.WindowContainerTransaction
+import com.android.internal.jank.InteractionJankMonitor
+import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.common.ShellExecutor
+import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
import com.android.wm.shell.shared.TransitionUtil
import com.android.wm.shell.shared.animation.MinimizeAnimator.create
import com.android.wm.shell.transition.Transitions
@@ -41,6 +44,7 @@
private val mainExecutor: ShellExecutor,
private val animExecutor: ShellExecutor,
private val displayController: DisplayController,
+ private val animHandler: Handler,
) : Transitions.TransitionHandler {
/** Shouldn't handle anything */
@@ -90,10 +94,30 @@
val t = Transaction()
val sc = change.leash
finishTransaction.hide(sc)
- val displayMetrics: DisplayMetrics? =
- change.taskInfo?.let {
- displayController.getDisplayContext(it.displayId)?.getResources()?.displayMetrics
- }
- return displayMetrics?.let { create(it, change, t, onAnimFinish) }
+ val displayContext =
+ change.taskInfo?.let { displayController.getDisplayContext(it.displayId) }
+ if (displayContext == null) {
+ logW(
+ "displayContext is null for taskId=${change.taskInfo?.taskId}, " +
+ "displayId=${change.taskInfo?.displayId}"
+ )
+ return null
+ }
+ return create(
+ displayContext,
+ change,
+ t,
+ onAnimFinish,
+ InteractionJankMonitor.getInstance(),
+ animHandler,
+ )
+ }
+
+ private companion object {
+ private fun logW(msg: String, vararg arguments: Any?) {
+ ProtoLog.w(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
+ }
+
+ const val TAG = "DesktopMinimizationTransitionHandler"
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt
index 7c6cf4a..926e0f2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt
@@ -217,6 +217,9 @@
fun getDeskIds(displayId: Int): Set<Int> =
desktopData.desksSequence(displayId).map { desk -> desk.deskId }.toSet()
+ /** Returns all the ids of all desks in all displays. */
+ fun getAllDeskIds(): Set<Int> = desktopData.desksSequence().map { desk -> desk.deskId }.toSet()
+
/** Returns the id of the default desk in the given display. */
fun getDefaultDeskId(displayId: Int): Int? = getDefaultDesk(displayId)?.deskId
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
index 45adfe4..87d9674 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
@@ -1079,7 +1079,8 @@
)
}
- private fun startLaunchTransition(
+ @VisibleForTesting
+ fun startLaunchTransition(
transitionType: Int,
wct: WindowContainerTransaction,
launchingTaskId: Int?,
@@ -1087,34 +1088,52 @@
displayId: Int = DEFAULT_DISPLAY,
unminimizeReason: UnminimizeReason = UnminimizeReason.UNKNOWN,
): IBinder {
+ // TODO: b/397619806 - Consolidate sharable logic with [handleFreeformTaskLaunch].
+ var launchTransaction = wct
val taskIdToMinimize =
addAndGetMinimizeChanges(
displayId,
- wct,
+ launchTransaction,
newTaskId = launchingTaskId,
launchingNewIntent = launchingTaskId == null,
)
val exitImmersiveResult =
desktopImmersiveController.exitImmersiveIfApplicable(
- wct = wct,
+ wct = launchTransaction,
displayId = displayId,
excludeTaskId = launchingTaskId,
reason = DesktopImmersiveController.ExitReason.TASK_LAUNCH,
)
+ var deskIdToActivate: Int? = null
+ if (
+ DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue &&
+ !isDesktopModeShowing(displayId)
+ ) {
+ deskIdToActivate =
+ checkNotNull(
+ launchingTaskId?.let { taskRepository.getDeskIdForTask(it) }
+ ?: getDefaultDeskId(displayId)
+ )
+ val activateDeskWct = WindowContainerTransaction()
+ addDeskActivationChanges(deskIdToActivate, activateDeskWct)
+ // Desk activation must be handled before app launch-related transactions.
+ activateDeskWct.merge(launchTransaction, /* transfer= */ true)
+ launchTransaction = activateDeskWct
+ }
val t =
if (remoteTransition == null) {
desktopMixedTransitionHandler.startLaunchTransition(
transitionType = transitionType,
- wct = wct,
+ wct = launchTransaction,
taskId = launchingTaskId,
minimizingTaskId = taskIdToMinimize,
exitingImmersiveTask = exitImmersiveResult.asExit()?.exitingTask,
)
} else if (taskIdToMinimize == null) {
val remoteTransitionHandler = OneShotRemoteHandler(mainExecutor, remoteTransition)
- transitions.startTransition(transitionType, wct, remoteTransitionHandler).also {
- remoteTransitionHandler.setTransition(it)
- }
+ transitions
+ .startTransition(transitionType, launchTransaction, remoteTransitionHandler)
+ .also { remoteTransitionHandler.setTransition(it) }
} else {
val remoteTransitionHandler =
DesktopWindowLimitRemoteHandler(
@@ -1123,9 +1142,9 @@
remoteTransition,
taskIdToMinimize,
)
- transitions.startTransition(transitionType, wct, remoteTransitionHandler).also {
- remoteTransitionHandler.setTransition(it)
- }
+ transitions
+ .startTransition(transitionType, launchTransaction, remoteTransitionHandler)
+ .also { remoteTransitionHandler.setTransition(it) }
}
if (taskIdToMinimize != null) {
addPendingMinimizeTransition(t, taskIdToMinimize, MinimizeReason.TASK_LIMIT)
@@ -1133,6 +1152,24 @@
if (launchingTaskId != null && taskRepository.isMinimizedTask(launchingTaskId)) {
addPendingUnminimizeTransition(t, displayId, launchingTaskId, unminimizeReason)
}
+ if (
+ DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue &&
+ deskIdToActivate != null
+ ) {
+ if (DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue) {
+ desksTransitionObserver.addPendingTransition(
+ DeskTransition.ActivateDesk(
+ token = t,
+ displayId = displayId,
+ deskId = deskIdToActivate,
+ )
+ )
+ }
+
+ desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted(
+ FREEFORM_ANIMATION_DURATION
+ )
+ }
exitImmersiveResult.asExit()?.runOnTransitionStart?.invoke(t)
return t
}
@@ -1708,6 +1745,9 @@
launchWindowingMode = WINDOWING_MODE_FULLSCREEN
pendingIntentBackgroundActivityStartMode =
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_ALWAYS
+ if (Flags.enablePerDisplayDesktopWallpaperActivity()) {
+ launchDisplayId = displayId
+ }
}
val pendingIntent =
PendingIntent.getActivityAsUser(
@@ -2704,10 +2744,9 @@
activateDesk(deskId, remoteTransition)
}
- /** Activates the given desk. */
- fun activateDesk(deskId: Int, remoteTransition: RemoteTransition? = null) {
+ /** Activates the given desk but without starting a transition. */
+ fun addDeskActivationChanges(deskId: Int, wct: WindowContainerTransaction) {
val displayId = taskRepository.getDisplayForDesk(deskId)
- val wct = WindowContainerTransaction()
if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
prepareForDeskActivation(displayId, wct)
desksOrganizer.activateDesk(wct, deskId)
@@ -2720,6 +2759,13 @@
} else {
bringDesktopAppsToFront(displayId, wct)
}
+ }
+
+ /** Activates the given desk. */
+ fun activateDesk(deskId: Int, remoteTransition: RemoteTransition? = null) {
+ val displayId = taskRepository.getDisplayForDesk(deskId)
+ val wct = WindowContainerTransaction()
+ addDeskActivationChanges(deskId, wct)
val transitionType = transitionType(remoteTransition)
val handler =
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksLimiter.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksLimiter.kt
index 81b136d..f9ab359 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksLimiter.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksLimiter.kt
@@ -26,7 +26,6 @@
import android.window.TransitionInfo
import android.window.WindowContainerTransaction
import androidx.annotation.VisibleForTesting
-import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_MINIMIZE_WINDOW
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.ShellTaskOrganizer
@@ -176,28 +175,13 @@
return taskChange.mode == TRANSIT_TO_BACK
}
- override fun onTransitionStarting(transition: IBinder) {
- val mActiveTaskDetails = activeTransitionTokensAndTasks[transition]
- val info = mActiveTaskDetails?.transitionInfo ?: return
- val minimizeChange = getMinimizeChange(info, mActiveTaskDetails.taskId) ?: return
- // Begin minimize window CUJ instrumentation.
- interactionJankMonitor.begin(
- minimizeChange.leash,
- context,
- handler,
- CUJ_DESKTOP_MODE_MINIMIZE_WINDOW,
- )
- }
-
private fun getMinimizeChange(info: TransitionInfo, taskId: Int): TransitionInfo.Change? =
info.changes.find { change ->
change.taskInfo?.taskId == taskId && change.mode == TRANSIT_TO_BACK
}
override fun onTransitionMerged(merged: IBinder, playing: IBinder) {
- if (activeTransitionTokensAndTasks.remove(merged) != null) {
- interactionJankMonitor.end(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW)
- }
+ activeTransitionTokensAndTasks.remove(merged)
pendingTransitionTokensAndTasks.remove(merged)?.let { taskToTransfer ->
pendingTransitionTokensAndTasks[playing] = taskToTransfer
}
@@ -209,13 +193,6 @@
}
override fun onTransitionFinished(transition: IBinder, aborted: Boolean) {
- if (activeTransitionTokensAndTasks.remove(transition) != null) {
- if (aborted) {
- interactionJankMonitor.cancel(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW)
- } else {
- interactionJankMonitor.end(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW)
- }
- }
pendingTransitionTokensAndTasks.remove(transition)
activeUnminimizeTransitionTokensAndTasks.remove(transition)
pendingUnminimizeTransitionTokensAndTasks.remove(transition)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/README.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/README.md
index 3fad28a..a98ae55 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/README.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/README.md
@@ -9,6 +9,7 @@
4) [Threading model in the Shell](threading.md)
5) [Making changes in the Shell](changes.md)
6) [Extending the Shell for Products/OEMs](extending.md)
+6) [Shell transitions](transitions.md)
7) [Debugging in the Shell](debugging.md)
8) [Testing in the Shell](testing.md)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/transitions.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/transitions.md
new file mode 100644
index 0000000..dc23bb0
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/transitions.md
@@ -0,0 +1,118 @@
+# Shell transitions
+[Back to home](README.md)
+
+---
+
+## General
+
+General guides for using Shell Transitions can be found here:
+- [Shell transitions animation guide](http://go/shell-transit-anim)
+- [Hitchhiker's guide to transitions](http://go/transitions-book)
+
+## Transient-launch transitions
+<span style="color:orange">Use with care!</span>
+
+Transient-launch transitions are a way to handle non-atomic (ie. gestural) transitions by allowing
+WM Core to put participating activities into a transiently visible or hidden state for the duration
+of the animation and adding the ability to cancel the transition.
+
+For example, if you are launching an activity normally, WM Core will be updated
+at the start of the animation which includes pausing the previous activity and resuming the next
+activity (and subsequently the transition will reconcile that state via an animation).
+
+If you are transiently launching an activity though, WM Core will ensure that both the leaving
+activity and the incoming activity will be RESUMED for the duration of the transition duration. In
+addition, WM Core will track the position of the transient-launch activity in the window hierarchy
+prior to the launch, and allow Shell to restore it to that position if the transitions needs to be
+canceled.
+
+Starting a transient-launch transition can be done via the activity options (since the activity may
+not have been started yet):
+```kotlin
+val opts = ActivityOptions.makeBasic().setTransientLaunch()
+val wct = WindowContainerTransaction()
+wct.sendPendingIntent(pendingIntent, new Intent(), opts.toBundle())
+transitions.startTransition(TRANSIT_OPEN, wct, ...)
+```
+
+And restoring the transient order via a WCT:
+```kotlin
+val wct = WindowContainerTransaction()
+wct.restoreTransientOrder(transientLaunchContainerToken)
+transitions.startTransition(TRANSIT_RESTORE, wct, ...)
+```
+
+### <span style="color:orange">Considerations</span>
+
+Usage of transient-launch transitions should be done with consideration, there are a few gotchas
+that might result in subtle and hard-to-reproduce issues.
+
+#### Understanding the flow
+When starting a transient-launch transition, there are several possible outcomes:
+1) The transition finishes as normal: The user is committing the transition to the state requested
+ at the start of the transition. In such cases, you can simply finish the transition and the
+ states of the transiently shown/hidden activities will be updated to match the original state
+ that a non-transient transition would have (ie. closing activities will be stopped).
+
+2) The transition is interrupted: A change in the system results in the window hierarchy changing
+ in a way which may or may not affect the transient-launch activity. eg. We transiently-launch
+ home from app A, but then app B launches. In this case, WM attempts to create a new transition
+ reflecting the window hierarchy changes (ie. if B occludes Home in the above example, then the
+ transition will have Home TO_BACK, and B TO_FRONT).
+
+ At this point, the transition handler can choose to merge the incoming transition or not (to
+ queue it after this current transition). Take note of the next section for concerns re. bookend
+ transitions.
+
+3) The transition is canceled: The user is canceling the transition to the previous state. In such
+ cases, you need to store the `WindowContainerToken` for the task associated with the
+ transient-launch activity, and restore the transient order via the `WindowContainerTransaction`
+ API above. In some cases, if anything has been reordered since (ie. due to other merged
+ transitions), then you may also want to use `WindowContainerTransaction#reorder()` to place all
+ the relevant containers to their original order (provided via the change-order in the initial
+ launch transition).
+
+#### Finishing the transient-launch transition
+
+When restoring the transient order in the 3rd flow above, it is recommended to do it in a new
+transition and <span style="color:orange">**not**</span> via the WindowContainerTransaction in
+`TransitionFinishCallback#onTransitionFinished()` provided when starting the transition.
+
+Changes to the window hierarchy via the finish transaction are not applied in sync with other
+transitions that are collecting and aplying, and are also not observable in Shell in any way.
+Starting a new transition instead ensures both. (The finish transaction can still be used if there
+are non-transition affecting properties (ie. container properties) that need to be updated as a part
+of finishing the transient-launch transition).
+
+So the general idea is when restoring is:
+
+1) Start transient-launch transition START_T
+2) ...
+3) All done, start bookend transition END_T
+4) Handler receives END_T, merges it and then finishes START_T
+
+In practice it's not quite that simple, due to the ordering of transitions and extra care must be
+taken when using a new transition to prevent deadlocking when merging transitions.
+
+When a new transition arrives while a transient-launch transition is playing, the handler can
+choose to handle/merge the transition into the ongoing one, or skip merging to queue it up to be
+played after. In the above flow, we can see how this might result in a deadlock:
+
+Queueing END during merge:
+1) Start transient-launch transition START_T
+2) ...
+3) Incoming transition OTHER_T, choose to cancel START_T -> start bookend transition END_T, but don't merge OTHER_T
+3) Waiting for END_T... <span style="color:red">Deadlock!</span>
+
+Interrupt while pending END:
+1) Start transient-launch transition START_T
+2) ...
+3) All done, start bookend transition END_T
+3) Incoming transition OTHER_T occurs before END_T, but don't merge OTHER_T
+3) Waiting for END_T... <span style="color:red">Deadlock!</span>
+
+This means that when using transient-launch transitions with a bookend transition
+<span style="color:orange">requires</span> you to handle any incoming transitions if the bookend is
+ever queued (or already posted) after it. You can do so by preempting the bookend transition
+(finishing the transient-launch transition), or handling the merge of the new transition (so it
+doesn't queue).
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java
index b60fb5e..16e411e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java
@@ -25,10 +25,12 @@
import android.animation.ValueAnimator;
import android.app.ActivityManager;
import android.app.WindowConfiguration;
+import android.content.Context;
import android.graphics.Rect;
+import android.os.Handler;
import android.os.IBinder;
import android.util.ArrayMap;
-import android.util.DisplayMetrics;
+import android.util.Log;
import android.view.SurfaceControl;
import android.view.WindowManager;
import android.window.TransitionInfo;
@@ -38,6 +40,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import com.android.internal.jank.InteractionJankMonitor;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.shared.animation.MinimizeAnimator;
@@ -52,11 +55,13 @@
*/
public class FreeformTaskTransitionHandler
implements Transitions.TransitionHandler, FreeformTaskTransitionStarter {
+ private static final String TAG = "FreeformTaskTransitionHandler";
private static final int CLOSE_ANIM_DURATION = 400;
private final Transitions mTransitions;
private final DisplayController mDisplayController;
private final ShellExecutor mMainExecutor;
private final ShellExecutor mAnimExecutor;
+ private final Handler mAnimHandler;
private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
@@ -66,11 +71,13 @@
Transitions transitions,
DisplayController displayController,
ShellExecutor mainExecutor,
- ShellExecutor animExecutor) {
+ ShellExecutor animExecutor,
+ Handler animHandler) {
mTransitions = transitions;
mDisplayController = displayController;
mMainExecutor = mainExecutor;
mAnimExecutor = animExecutor;
+ mAnimHandler = animHandler;
}
@Override
@@ -123,13 +130,11 @@
@NonNull Transitions.TransitionFinishCallback finishCallback) {
boolean transitionHandled = false;
final ArrayList<Animator> animations = new ArrayList<>();
- final Runnable onAnimFinish = () -> {
+ final Runnable onAnimFinish = () -> mMainExecutor.execute(() -> {
if (!animations.isEmpty()) return;
- mMainExecutor.execute(() -> {
- mAnimations.remove(transition);
- finishCallback.onTransitionFinished(null /* wct */);
- });
- };
+ mAnimations.remove(transition);
+ finishCallback.onTransitionFinished(null /* wct */);
+ });
for (TransitionInfo.Change change : info.getChanges()) {
if ((change.getFlags() & TransitionInfo.FLAG_IS_WALLPAPER) != 0) {
continue;
@@ -234,18 +239,25 @@
SurfaceControl.Transaction t = new SurfaceControl.Transaction();
SurfaceControl sc = change.getLeash();
finishT.hide(sc);
- final DisplayMetrics displayMetrics =
- mDisplayController
- .getDisplayContext(taskInfo.displayId).getResources().getDisplayMetrics();
+ final Context displayContext =
+ mDisplayController.getDisplayContext(taskInfo.displayId);
+ if (displayContext == null) {
+ Log.w(TAG, "No displayContext for displayId=" + taskInfo.displayId);
+ return false;
+ }
final Animator animator = MinimizeAnimator.create(
- displayMetrics,
+ displayContext,
change,
t,
(anim) -> {
- animations.remove(anim);
- onAnimFinish.run();
+ mMainExecutor.execute(() -> {
+ animations.remove(anim);
+ onAnimFinish.run();
+ });
return null;
- });
+ },
+ InteractionJankMonitor.getInstance(),
+ mAnimHandler);
animations.add(animator);
return true;
}
@@ -277,8 +289,10 @@
new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
- animations.remove(animator);
- onAnimFinish.run();
+ mMainExecutor.execute(() -> {
+ animations.remove(animator);
+ onAnimFinish.run();
+ });
}
});
animations.add(animator);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelper.java
index c4d065f..e0cae81 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelper.java
@@ -134,6 +134,18 @@
}
/**
+ * Operates the round corner radius on a given transaction and leash, scaled by bounds
+ * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
+ */
+ public PipSurfaceTransactionHelper round(SurfaceControl.Transaction tx, SurfaceControl leash,
+ Rect fromBounds, Rect toBounds) {
+ final float scale = (float) (Math.hypot(fromBounds.width(), fromBounds.height())
+ / Math.hypot(toBounds.width(), toBounds.height()));
+ tx.setCornerRadius(leash, mCornerRadius * scale);
+ return this;
+ }
+
+ /**
* Operates the shadow radius on a given transaction and leash
* @return same {@link PipSurfaceTransactionHelper} instance for method chaining
*/
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipResizeAnimator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipResizeAnimator.java
index 06e8349..eb5fe88 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipResizeAnimator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipResizeAnimator.java
@@ -173,7 +173,7 @@
transformTensor.postRotate(degrees, targetBounds.centerX(), targetBounds.centerY());
tx.setMatrix(leash, transformTensor, mMatrixTmp)
- .setCornerRadius(leash, cornerRadius)
+ .setCornerRadius(leash, cornerRadius / scaleX)
.setShadowRadius(leash, shadowRadius);
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java
index 99c9302..1ce24f7 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java
@@ -404,6 +404,10 @@
mPipBoundsState.setBoundsStateForEntry(componentName, activityInfo, pictureInPictureParams,
mPipBoundsAlgorithm);
+
+ // Update the size spec in case aspect ratio is invariant, but display has changed
+ // since the last PiP session, or this is the first PiP session altogether.
+ mPipBoundsState.updateMinMaxSize(mPipBoundsState.getAspectRatio());
return mPipBoundsAlgorithm.getEntryDestinationBounds();
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java
index df7a25a..7805ec3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java
@@ -55,6 +55,7 @@
private PipTransitionController mPipTransitionController;
private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory
mSurfaceControlTransactionFactory;
+ private final PipSurfaceTransactionHelper mPipSurfaceTransactionHelper;
@Nullable private Runnable mUpdateMovementBoundsRunnable;
@@ -75,6 +76,7 @@
mSurfaceControlTransactionFactory =
new PipSurfaceTransactionHelper.VsyncSurfaceControlTransactionFactory();
+ mPipSurfaceTransactionHelper = new PipSurfaceTransactionHelper(mContext);
mPipAlphaAnimatorSupplier = PipAlphaAnimator::new;
}
@@ -214,6 +216,8 @@
transformTensor.postTranslate(toBounds.left, toBounds.top);
transformTensor.postRotate(degrees, toBounds.centerX(), toBounds.centerY());
+ mPipSurfaceTransactionHelper.round(tx, leash, mPipBoundsState.getBounds(), toBounds);
+
tx.setMatrix(leash, transformTensor, mMatrixTmp);
tx.apply();
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
index 035c93d..0cfab11 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
@@ -50,6 +50,7 @@
import android.graphics.Rect;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.SystemProperties;
import android.view.SurfaceControl;
import android.view.WindowManager;
import android.window.TransitionInfo;
@@ -105,7 +106,10 @@
* The fixed start delay in ms when fading out the content overlay from bounds animation.
* The fadeout animation is guaranteed to start after the client has drawn under the new config.
*/
- private static final int CONTENT_OVERLAY_FADE_OUT_DELAY_MS = 500;
+ private static final int EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS =
+ SystemProperties.getInt(
+ "persist.wm.debug.extra_content_overlay_fade_out_delay_ms", 400);
+ private static final int CONTENT_OVERLAY_FADE_OUT_DURATION_MS = 500;
//
// Dependencies
@@ -551,7 +555,8 @@
@NonNull Runnable onAnimationEnd) {
PipAlphaAnimator animator = new PipAlphaAnimator(mContext, overlayLeash,
null /* startTx */, null /* finishTx */, PipAlphaAnimator.FADE_OUT);
- animator.setDuration(CONTENT_OVERLAY_FADE_OUT_DELAY_MS);
+ animator.setDuration(CONTENT_OVERLAY_FADE_OUT_DURATION_MS);
+ animator.setStartDelay(EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS);
animator.setAnimationEndCallback(onAnimationEnd);
animator.start();
}
@@ -738,6 +743,13 @@
}
}
+ if (!mPipTransitionState.isInSwipePipToHomeTransition()) {
+ // Update the size spec in case aspect ratio is invariant, but display has changed
+ // since the last PiP session, or this is the first PiP session altogether.
+ // Skip the update if in swipe PiP to home, as this has already been done.
+ mPipBoundsState.updateMinMaxSize(mPipBoundsState.getAspectRatio());
+ }
+
// calculate the entry bounds and notify core to move task to pinned with final bounds
final Rect entryBounds = mPipBoundsAlgorithm.getEntryDestinationBounds();
mPipBoundsState.setBounds(entryBounds);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
index 2fa0966..bb5b5ce 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
@@ -44,6 +44,7 @@
import android.os.RemoteException;
import android.util.Slog;
import android.util.SparseIntArray;
+import android.window.DesktopExperienceFlags;
import android.window.DesktopModeFlags;
import android.window.WindowContainerToken;
@@ -92,6 +93,11 @@
TaskStackTransitionObserver.TaskStackTransitionObserverListener, UserChangeListener {
private static final String TAG = RecentTasksController.class.getSimpleName();
+ // When the multiple desktops feature is disabled, all freeform tasks are lumped together into
+ // a single `GroupedTaskInfo` whose type is `TYPE_DESK`, and its `mDeskId` doesn't matter, so
+ // we pick the below arbitrary value.
+ private static final int INVALID_DESK_ID = -1;
+
private final Context mContext;
private final ShellController mShellController;
private final ShellCommandHandler mShellCommandHandler;
@@ -128,6 +134,7 @@
// Temporary vars used in `generateList()`
private final Map<Integer, TaskInfo> mTmpRemaining = new HashMap<>();
+ private final Map<Integer, Desk> mTmpDesks = new HashMap<>();
/**
* Creates {@link RecentTasksController}, returns {@code null} if the feature is not
@@ -529,6 +536,78 @@
}
/**
+ * Represents a desk whose ID is `mDeskId` and contains the tasks in `mDeskTasks`. Some of these
+ * tasks are minimized and their IDs are contained in the `mMinimizedDeskTasks` set.
+ */
+ private static class Desk {
+ final int mDeskId;
+ boolean mHasVisibleTasks = false;
+ final ArrayList<TaskInfo> mDeskTasks = new ArrayList<>();
+ final Set<Integer> mMinimizedDeskTasks = new HashSet<>();
+
+ Desk(int deskId) {
+ mDeskId = deskId;
+ }
+
+ void addTask(TaskInfo taskInfo, boolean isMinimized, boolean isVisible) {
+ mDeskTasks.add(taskInfo);
+ if (isMinimized) {
+ mMinimizedDeskTasks.add(taskInfo.taskId);
+ }
+ mHasVisibleTasks |= isVisible;
+ }
+
+ boolean hasTasks() {
+ return !mDeskTasks.isEmpty();
+ }
+
+ GroupedTaskInfo createDeskTaskInfo() {
+ return GroupedTaskInfo.forDeskTasks(mDeskId, mDeskTasks, mMinimizedDeskTasks);
+ }
+ }
+
+ /**
+ * Clears the `mTmpDesks` map, and re-initializes it with the current state of desks from all
+ * displays, without adding any desk tasks. This is a preparation step so that tasks can be
+ * added to these desks in `generateList()`.
+ *
+ * This is needed since with the `ENABLE_MULTIPLE_DESKTOPS_BACKEND` flag, we want to include
+ * desk even if they're empty (i.e. have no tasks).
+ *
+ * @param multipleDesktopsEnabled whether the multiple desktops backend feature is enabled.
+ */
+ private void initializeDesksMap(boolean multipleDesktopsEnabled) {
+ mTmpDesks.clear();
+
+ if (DesktopModeStatus.canEnterDesktopMode(mContext)
+ && mDesktopUserRepositories.isPresent()) {
+ if (multipleDesktopsEnabled) {
+ for (var deskId : mDesktopUserRepositories.get().getCurrent().getAllDeskIds()) {
+ getOrCreateDesk(deskId);
+ }
+ } else {
+ // When the multiple desks feature is disabled, we lump all freeform windows in a
+ // single `GroupedTaskInfo` regardless of their display. The `deskId` in this case
+ // doesn't matter and can be any arbitrary value.
+ getOrCreateDesk(/* deskId = */ INVALID_DESK_ID);
+ }
+ }
+ }
+
+ /**
+ * Returns the `Desk` whose ID is `deskId` from the `mTmpDesks` map if it exists, or it creates
+ * one and adds it to the map and then returns it.
+ */
+ private Desk getOrCreateDesk(int deskId) {
+ var desk = mTmpDesks.get(deskId);
+ if (desk == null) {
+ desk = new Desk(deskId);
+ mTmpDesks.put(deskId, desk);
+ }
+ return desk;
+ }
+
+ /**
* Generates a list of GroupedTaskInfos for the given raw list of tasks (either recents or
* running tasks).
*
@@ -555,6 +634,14 @@
ProtoLog.v(WM_SHELL_TASK_OBSERVER, "RecentTasksController.generateList(%s)", reason);
}
+ final boolean multipleDesktopsEnabled =
+ DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue();
+ initializeDesksMap(multipleDesktopsEnabled);
+
+ // When the multiple desktops feature is enabled, we include all desks even if they're
+ // empty.
+ final boolean shouldIncludeEmptyDesktops = multipleDesktopsEnabled;
+
// Make a mapping of task id -> task info for the remaining tasks to be processed, this
// mapping is used to keep track of split tasks that may exist later in the task list that
// should be ignored because they've already been grouped
@@ -566,11 +653,7 @@
ArrayList<GroupedTaskInfo> groupedTasks = new ArrayList<>(tasks.size());
ArrayList<GroupedTaskInfo> visibleGroupedTasks = new ArrayList<>();
- // Phase 1: Extract the desktop and visible fullscreen/split tasks. We make new collections
- // here as the GroupedTaskInfo can store them without copying
- ArrayList<TaskInfo> desktopTasks = new ArrayList<>();
- Set<Integer> minimizedDesktopTasks = new HashSet<>();
- boolean desktopTasksVisible = false;
+ // Phase 1: Extract the desktops and visible fullscreen/split tasks.
for (int i = 0; i < tasks.size(); i++) {
final TaskInfo taskInfo = tasks.get(i);
final int taskId = taskInfo.taskId;
@@ -600,11 +683,15 @@
taskInfo.positionInParent = new Point(taskInfo.lastNonFullscreenBounds.left,
taskInfo.lastNonFullscreenBounds.top);
}
- desktopTasks.add(taskInfo);
- if (mDesktopUserRepositories.get().getCurrent().isMinimizedTask(taskId)) {
- minimizedDesktopTasks.add(taskId);
- }
- desktopTasksVisible |= mVisibleTasksMap.containsKey(taskId);
+ // Lump all freeform tasks together as if they were all in a single desk whose ID is
+ // `INVALID_DESK_ID` when the multiple desktops feature is disabled.
+ final int deskId = multipleDesktopsEnabled
+ ? mDesktopUserRepositories.get().getCurrent().getDeskIdForTask(taskId)
+ : INVALID_DESK_ID;
+ final Desk desk = getOrCreateDesk(deskId);
+ desk.addTask(taskInfo,
+ mDesktopUserRepositories.get().getCurrent().isMinimizedTask(taskId),
+ mVisibleTasksMap.containsKey(taskId));
mTmpRemaining.remove(taskId);
continue;
}
@@ -636,9 +723,10 @@
if (enableShellTopTaskTracking()) {
// Phase 2: If there were desktop tasks and they are visible, add them to the visible
// list as well (the actual order doesn't matter for Overview)
- if (!desktopTasks.isEmpty() && desktopTasksVisible) {
- visibleGroupedTasks.add(
- GroupedTaskInfo.forFreeformTasks(desktopTasks, minimizedDesktopTasks));
+ for (var desk : mTmpDesks.values()) {
+ if (desk.mHasVisibleTasks) {
+ visibleGroupedTasks.add(desk.createDeskTaskInfo());
+ }
}
if (!visibleGroupedTasks.isEmpty()) {
@@ -674,16 +762,18 @@
// Phase 5: If there were desktop tasks and they are not visible (ie. weren't added
// above), add them to the end of the final list (the actual order doesn't
// matter for Overview)
- if (!desktopTasks.isEmpty() && !desktopTasksVisible) {
- groupedTasks.add(
- GroupedTaskInfo.forFreeformTasks(desktopTasks, minimizedDesktopTasks));
+ for (var desk : mTmpDesks.values()) {
+ if (!desk.mHasVisibleTasks && (desk.hasTasks() || shouldIncludeEmptyDesktops)) {
+ groupedTasks.add(desk.createDeskTaskInfo());
+ }
}
dumpGroupedTasks(groupedTasks, "Phase 5");
} else {
// Add the desktop tasks at the end of the list
- if (!desktopTasks.isEmpty()) {
- groupedTasks.add(
- GroupedTaskInfo.forFreeformTasks(desktopTasks, minimizedDesktopTasks));
+ for (var desk : mTmpDesks.values()) {
+ if (desk.hasTasks() || shouldIncludeEmptyDesktops) {
+ groupedTasks.add(desk.createDeskTaskInfo());
+ }
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
index d6182e9..3e03e00 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
@@ -47,6 +47,7 @@
import android.app.ActivityTaskManager;
import android.app.IApplicationThread;
import android.app.PendingIntent;
+import android.app.WindowConfiguration;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
@@ -320,7 +321,7 @@
"RecentsTransitionHandler.mergeAnimation: no controller found");
return;
}
- controller.merge(info, startT, finishT, mergeTarget, finishCallback);
+ controller.merge(info, startT, finishT, finishCallback);
}
@Override
@@ -408,7 +409,8 @@
// next called.
private Pair<int[], TaskSnapshot[]> mPendingPauseSnapshotsForCancel;
- // Used to track a pending finish transition
+ // Used to track a pending finish transition, this is only non-null if
+ // enableRecentsBookendTransition() is enabled
private IBinder mPendingFinishTransition;
private IResultReceiver mPendingRunnerFinishCb;
@@ -917,7 +919,7 @@
*/
@SuppressLint("NewApi")
void merge(TransitionInfo info, SurfaceControl.Transaction startT,
- SurfaceControl.Transaction finishT, IBinder mergeTarget,
+ SurfaceControl.Transaction finishT,
Transitions.TransitionFinishCallback finishCallback) {
if (mFinishCB == null) {
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
@@ -927,16 +929,25 @@
return;
}
- if (Flags.enableRecentsBookendTransition()
- && info.getType() == TRANSIT_END_RECENTS_TRANSITION
- && mergeTarget == mTransition) {
- // This is a pending finish, so merge the end transition to trigger completing the
- // cleanup of the recents transition
- ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
- "[%d] RecentsController.merge: TRANSIT_END_RECENTS_TRANSITION",
- mInstanceId);
- finishCallback.onTransitionFinished(null /* wct */);
- return;
+ if (Flags.enableRecentsBookendTransition()) {
+ if (info.getType() == TRANSIT_END_RECENTS_TRANSITION) {
+ // This is a pending finish, so merge the end transition to trigger completing
+ // the cleanup of the recents transition
+ ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
+ "[%d] RecentsController.merge: TRANSIT_END_RECENTS_TRANSITION",
+ mInstanceId);
+ consumeMerge(info, startT, finishT, finishCallback);
+ return;
+ } else if (mPendingFinishTransition != null) {
+ // This transition is interrupting a pending finish that was already sent, so
+ // pre-empt the pending finish transition since the state has already changed
+ // in the core
+ ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
+ "[%d] RecentsController.merge: Awaiting TRANSIT_END_RECENTS_TRANSITION",
+ mInstanceId);
+ onFinishInner(null /* wct */);
+ return;
+ }
}
if (info.getType() == TRANSIT_SLEEP) {
@@ -1210,16 +1221,12 @@
}
return;
}
+
// At this point, we are accepting the merge.
- startT.apply();
- // Since we're accepting the merge, update the finish transaction so that changes via
- // that transaction will be applied on top of those of the merged transitions
- mFinishTransaction = finishT;
+ consumeMerge(info, startT, finishT, finishCallback);
+
+ // Notify Launcher of the new opening tasks if necessary
boolean passTransitionInfo = ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX.isTrue();
- if (!passTransitionInfo) {
- // not using the incoming anim-only surfaces
- info.releaseAnimSurfaces();
- }
if (appearedTargets != null) {
try {
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
@@ -1229,6 +1236,27 @@
Slog.e(TAG, "Error sending appeared tasks to recents animation", e);
}
}
+ }
+
+ /**
+ * Consumes the merge of the other given transition.
+ */
+ private void consumeMerge(TransitionInfo info, SurfaceControl.Transaction startT,
+ SurfaceControl.Transaction finishT,
+ Transitions.TransitionFinishCallback finishCallback) {
+ ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
+ "[%d] RecentsController.merge: consuming merge",
+ mInstanceId);
+
+ startT.apply();
+ // Since we're accepting the merge, update the finish transaction so that changes via
+ // that transaction will be applied on top of those of the merged transitions
+ mFinishTransaction = finishT;
+ boolean passTransitionInfo = ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX.isTrue();
+ if (!passTransitionInfo) {
+ // not using the incoming anim-only surfaces
+ info.releaseAnimSurfaces();
+ }
finishCallback.onTransitionFinished(null /* wct */);
}
@@ -1346,9 +1374,16 @@
final SurfaceControl.Transaction t = mFinishTransaction;
final WindowContainerTransaction wct = new WindowContainerTransaction();
+ // The following code must set this if it is changing anything in core that might affect
+ // transitions as a part of finishing the recents transition
+ boolean requiresBookendTransition = false;
+
if (mKeyguardLocked && mRecentsTask != null) {
if (toHome) wct.reorder(mRecentsTask, true /* toTop */);
else wct.restoreTransientOrder(mRecentsTask);
+ // We are manipulating the window hierarchy, which should only be done with the
+ // bookend transition
+ requiresBookendTransition = true;
}
if (returningToApp) {
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " returning to app");
@@ -1365,6 +1400,9 @@
if (!mKeyguardLocked && mRecentsTask != null) {
wct.restoreTransientOrder(mRecentsTask);
}
+ // We are manipulating the window hierarchy, which should only be done with the
+ // bookend transition
+ requiresBookendTransition = true;
} else if (toHome && mOpeningSeparateHome && mPausingTasks != null) {
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " 3p launching home");
// Special situation where 3p launcher was changed during recents (this happens
@@ -1384,6 +1422,9 @@
if (!mKeyguardLocked && mRecentsTask != null) {
wct.restoreTransientOrder(mRecentsTask);
}
+ // We are manipulating the window hierarchy, which should only be done with the
+ // bookend transition
+ requiresBookendTransition = true;
} else {
if (mPausingSeparateHome) {
if (mOpeningTasks.isEmpty()) {
@@ -1484,13 +1525,21 @@
if (Flags.enableRecentsBookendTransition()) {
if (!wct.isEmpty()) {
- ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
- "[%d] RecentsController.finishInner: "
- + "Queuing TRANSIT_END_RECENTS_TRANSITION", mInstanceId);
- mPendingRunnerFinishCb = runnerFinishCb;
- mPendingFinishTransition = mTransitions.startTransition(
- TRANSIT_END_RECENTS_TRANSITION, wct,
- new PendingFinishTransitionHandler());
+ if (requiresBookendTransition) {
+ ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
+ "[%d] RecentsController.finishInner: "
+ + "Queuing TRANSIT_END_RECENTS_TRANSITION", mInstanceId);
+ mPendingRunnerFinishCb = runnerFinishCb;
+ mPendingFinishTransition = mTransitions.startTransition(
+ TRANSIT_END_RECENTS_TRANSITION, wct,
+ new PendingFinishTransitionHandler());
+ } else {
+ ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
+ "[%d] RecentsController.finishInner: Non-transition affecting wct",
+ mInstanceId);
+ mPendingRunnerFinishCb = runnerFinishCb;
+ onFinishInner(wct);
+ }
} else {
// If there's no work to do, just go ahead and clean up
mPendingRunnerFinishCb = runnerFinishCb;
@@ -1631,6 +1680,9 @@
@NonNull SurfaceControl.Transaction startTransaction,
@NonNull SurfaceControl.Transaction finishTransaction,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
+ ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
+ "[%d] PendingFinishTransitionHandler.startAnimation: "
+ + "Started pending finish transition", mInstanceId);
return false;
}
@@ -1644,10 +1696,15 @@
@Override
public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted,
@Nullable SurfaceControl.Transaction finishTransaction) {
+ if (mPendingFinishTransition == null) {
+ // The cleanup was pre-empted by an earlier transition, nothing there is nothing
+ // to do here
+ return;
+ }
// Once we have merged (or not if the WCT didn't result in any changes), then we can
// run the pending finish logic
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
- "[%d] RecentsController.onTransitionConsumed: "
+ "[%d] PendingFinishTransitionHandler.onTransitionConsumed: "
+ "Consumed pending finish transition", mInstanceId);
onFinishInner(null /* wct */);
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java
index 743bd05..347dcff 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java
@@ -40,7 +40,6 @@
import android.window.WindowContainerTransaction;
import com.android.internal.protolog.ProtoLog;
-import com.android.window.flags.Flags;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.activityembedding.ActivityEmbeddingController;
import com.android.wm.shell.common.ComponentUtils;
@@ -439,9 +438,6 @@
for (int i = 0; i < info.getRootCount(); ++i) {
out.addRoot(info.getRoot(i));
}
- if (!Flags.moveAnimationOptionsToChange()) {
- out.setAnimationOptions(info.getAnimationOptions());
- }
return out;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
index 01428e6..e9c6ade 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
@@ -539,7 +539,7 @@
cornerRadius = 0;
}
- backgroundColorForTransition = getTransitionBackgroundColorIfSet(info, change, a,
+ backgroundColorForTransition = getTransitionBackgroundColorIfSet(change, a,
backgroundColorForTransition);
if (!isTask && a.getExtensionEdges() != 0x0) {
@@ -606,12 +606,7 @@
mTransactionPool, mMainExecutor, animRelOffset, cornerRadius,
clipRect);
- final TransitionInfo.AnimationOptions options;
- if (Flags.moveAnimationOptionsToChange()) {
- options = change.getAnimationOptions();
- } else {
- options = info.getAnimationOptions();
- }
+ final TransitionInfo.AnimationOptions options = change.getAnimationOptions();
if (options != null) {
attachThumbnail(animations, onAnimFinish, change, options, cornerRadius);
}
@@ -834,12 +829,7 @@
final boolean isOpeningType = TransitionUtil.isOpeningType(type);
final boolean enter = TransitionUtil.isOpeningType(changeMode);
final boolean isTask = change.getTaskInfo() != null;
- final TransitionInfo.AnimationOptions options;
- if (Flags.moveAnimationOptionsToChange()) {
- options = change.getAnimationOptions();
- } else {
- options = info.getAnimationOptions();
- }
+ final TransitionInfo.AnimationOptions options = change.getAnimationOptions();
final int overrideType = options != null ? options.getType() : ANIM_NONE;
final int userId = options != null ? options.getUserId() : UserHandle.USER_CURRENT;
final Rect endBounds = TransitionUtil.isClosingType(changeMode)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
index 1917996..938885c 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
@@ -21,6 +21,7 @@
import static android.window.TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
import static com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP;
+import static com.android.wm.shell.transition.Transitions.TRANSIT_CONVERT_TO_BUBBLE;
import static com.android.wm.shell.transition.Transitions.TransitionObserver;
import android.annotation.NonNull;
@@ -35,6 +36,7 @@
import com.android.wm.shell.common.SingleInstanceRemoteListener;
import com.android.wm.shell.shared.IHomeTransitionListener;
import com.android.wm.shell.shared.TransitionUtil;
+import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper;
/**
* The {@link TransitionObserver} that observes for transitions involving the home
@@ -48,6 +50,8 @@
private @NonNull final Context mContext;
private @NonNull final ShellExecutor mMainExecutor;
+ private Boolean mPendingHomeVisibilityUpdate;
+
public HomeTransitionObserver(@NonNull Context context,
@NonNull ShellExecutor mainExecutor) {
mContext = context;
@@ -59,28 +63,78 @@
@NonNull TransitionInfo info,
@NonNull SurfaceControl.Transaction startTransaction,
@NonNull SurfaceControl.Transaction finishTransaction) {
+ if (BubbleAnythingFlagHelper.enableBubbleToFullscreen()) {
+ handleTransitionReadyWithBubbleAnything(info);
+ } else {
+ handleTransitionReady(info);
+ }
+ }
+
+ private void handleTransitionReady(@NonNull TransitionInfo info) {
for (TransitionInfo.Change change : info.getChanges()) {
final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
- if (info.getType() == TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP
- || taskInfo == null
+ if (taskInfo == null
+ || info.getType() == TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP
+ || taskInfo.displayId != DEFAULT_DISPLAY
+ || taskInfo.taskId == -1
+ || !taskInfo.isRunning) {
+ continue;
+ }
+ Boolean homeVisibilityUpdate = getHomeVisibilityUpdate(info, change, taskInfo);
+ if (homeVisibilityUpdate != null) {
+ notifyHomeVisibilityChanged(homeVisibilityUpdate);
+ }
+ }
+ }
+
+ private void handleTransitionReadyWithBubbleAnything(@NonNull TransitionInfo info) {
+ Boolean homeVisibilityUpdate = null;
+ for (TransitionInfo.Change change : info.getChanges()) {
+ final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
+ if (taskInfo == null
|| taskInfo.displayId != DEFAULT_DISPLAY
|| taskInfo.taskId == -1
|| !taskInfo.isRunning) {
continue;
}
- final int mode = change.getMode();
- final boolean isBackGesture = change.hasFlags(FLAG_BACK_GESTURE_ANIMATED);
- if (taskInfo.getActivityType() == ACTIVITY_TYPE_HOME) {
- final boolean gestureToHomeTransition = isBackGesture
- && TransitionUtil.isClosingType(info.getType());
- if (gestureToHomeTransition || TransitionUtil.isClosingMode(mode)
- || (!isBackGesture && TransitionUtil.isOpeningMode(mode))) {
- notifyHomeVisibilityChanged(gestureToHomeTransition
- || TransitionUtil.isOpeningType(mode));
- }
+ Boolean update = getHomeVisibilityUpdate(info, change, taskInfo);
+ if (update != null) {
+ homeVisibilityUpdate = update;
}
}
+
+ if (info.getType() == TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP) {
+ // Do not apply at the start of desktop drag as that updates launcher UI visibility.
+ // Store the value and apply with a next transition if needed.
+ mPendingHomeVisibilityUpdate = homeVisibilityUpdate;
+ return;
+ }
+
+ if (info.getType() == TRANSIT_CONVERT_TO_BUBBLE && homeVisibilityUpdate == null) {
+ // We are converting to bubble and we did not get a change to home visibility in this
+ // transition. Apply the value from start of drag.
+ homeVisibilityUpdate = mPendingHomeVisibilityUpdate;
+ }
+ if (homeVisibilityUpdate != null) {
+ mPendingHomeVisibilityUpdate = null;
+ notifyHomeVisibilityChanged(homeVisibilityUpdate);
+ }
+ }
+
+ private Boolean getHomeVisibilityUpdate(TransitionInfo info,
+ TransitionInfo.Change change, ActivityManager.RunningTaskInfo taskInfo) {
+ final int mode = change.getMode();
+ final boolean isBackGesture = change.hasFlags(FLAG_BACK_GESTURE_ANIMATED);
+ if (taskInfo.getActivityType() == ACTIVITY_TYPE_HOME) {
+ final boolean gestureToHomeTransition = isBackGesture
+ && TransitionUtil.isClosingType(info.getType());
+ if (gestureToHomeTransition || TransitionUtil.isClosingMode(mode)
+ || (!isBackGesture && TransitionUtil.isOpeningMode(mode))) {
+ return gestureToHomeTransition || TransitionUtil.isOpeningType(mode);
+ }
+ }
+ return null;
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
index 4feb475..7984bce 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
@@ -58,7 +58,6 @@
import com.android.internal.R;
import com.android.internal.policy.TransitionAnimation;
import com.android.internal.protolog.ProtoLog;
-import com.android.window.flags.Flags;
import com.android.wm.shell.protolog.ShellProtoLogGroup;
import com.android.wm.shell.shared.TransitionUtil;
@@ -78,12 +77,7 @@
final boolean isFreeform = isTask && change.getTaskInfo().isFreeform();
final boolean isCoveredByOpaqueFullscreenChange =
isCoveredByOpaqueFullscreenChange(info, change);
- final TransitionInfo.AnimationOptions options;
- if (Flags.moveAnimationOptionsToChange()) {
- options = change.getAnimationOptions();
- } else {
- options = info.getAnimationOptions();
- }
+ final TransitionInfo.AnimationOptions options = change.getAnimationOptions();
final int overrideType = options != null ? options.getType() : ANIM_NONE;
int animAttr = 0;
boolean translucent = false;
@@ -279,16 +273,10 @@
* the given transition animation.
*/
@ColorInt
- public static int getTransitionBackgroundColorIfSet(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @NonNull Animation a,
- @ColorInt int defaultColor) {
+ public static int getTransitionBackgroundColorIfSet(@NonNull TransitionInfo.Change change,
+ @NonNull Animation a, @ColorInt int defaultColor) {
if (!a.getShowBackdrop()) {
return defaultColor;
- }
- if (!Flags.moveAnimationOptionsToChange() && info.getAnimationOptions() != null
- && info.getAnimationOptions().getBackgroundColor() != 0) {
- // If available use the background color provided through AnimationOptions
- return info.getAnimationOptions().getBackgroundColor();
} else if (a.getBackdropColor() != 0) {
// Otherwise fallback on the background color provided through the animation
// definition.
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/functional/AltTabSwitchInDesktopModeTest.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/functional/AltTabSwitchInDesktopModeTest.kt
new file mode 100644
index 0000000..617b3c5
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/functional/AltTabSwitchInDesktopModeTest.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2025 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.wm.shell.functional
+
+import com.android.wm.shell.scenarios.AltTabSwitchInDesktopMode
+import org.junit.Ignore
+import org.junit.runner.RunWith
+import org.junit.runners.BlockJUnit4ClassRunner
+
+/* Functional test for [AltTabSwitchInDesktopMode]. */
+@RunWith(BlockJUnit4ClassRunner::class)
+@Ignore("Blocked by b/392820286, include in Postsubmit, when the issue is resolved")
+class AltTabSwitchInDesktopModeTest : AltTabSwitchInDesktopMode()
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/AltTabSwitchInDesktopMode.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/AltTabSwitchInDesktopMode.kt
new file mode 100644
index 0000000..cf6d5a8
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/AltTabSwitchInDesktopMode.kt
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2025 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.wm.shell.scenarios
+
+import android.app.Instrumentation
+import android.tools.flicker.rules.ChangeDisplayOrientationRule
+import android.tools.NavBar
+import android.tools.Rotation
+import android.tools.traces.parsers.WindowManagerStateHelper
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.launcher3.tapl.LauncherInstrumentation
+import com.android.server.wm.flicker.helpers.DesktopModeAppHelper
+import com.android.server.wm.flicker.helpers.MailAppHelper
+import com.android.server.wm.flicker.helpers.NewTasksAppHelper
+import com.android.server.wm.flicker.helpers.SimpleAppHelper
+import com.android.window.flags.Flags
+import com.android.wm.shell.Utils
+import org.junit.After
+import org.junit.Assume
+import org.junit.Before
+import org.junit.Ignore
+import org.junit.Rule
+import org.junit.Test
+
+@Ignore("Test Base Class")
+abstract class AltTabSwitchInDesktopMode(val rotation: Rotation = Rotation.ROTATION_0) {
+
+ private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
+ private val tapl = LauncherInstrumentation()
+ private val wmHelper = WindowManagerStateHelper(instrumentation)
+ private val device = UiDevice.getInstance(instrumentation)
+ private val firstApp = DesktopModeAppHelper(SimpleAppHelper(instrumentation))
+ private val secondApp = MailAppHelper(instrumentation)
+ private val thirdApp = NewTasksAppHelper(instrumentation)
+
+ @Rule
+ @JvmField val testSetupRule = Utils.testSetupRule(NavBar.MODE_GESTURAL, rotation)
+
+ @Before
+ fun setup() {
+ Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet)
+ tapl.setEnableRotation(true)
+ tapl.setExpectedRotation(rotation.value)
+ tapl.enableTransientTaskbar(false)
+ ChangeDisplayOrientationRule.setRotation(rotation)
+ firstApp.enterDesktopMode(wmHelper, device)
+ secondApp.launchViaIntent(wmHelper)
+ thirdApp.launchViaIntent(wmHelper)
+ }
+
+ @Test
+ open fun switchApp() {
+ tapl.launchedAppState
+ .showQuickSwitchView()
+ .moveFocusForward()
+ .launchFocusedAppTask(firstApp.packageName)
+ }
+
+ @After
+ fun teardown() {
+ thirdApp.exit(wmHelper)
+ secondApp.exit(wmHelper)
+ firstApp.exit(wmHelper)
+ }
+}
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java
index 94dc774..d4d8d93 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java
@@ -39,7 +39,6 @@
import android.annotation.NonNull;
import android.graphics.Point;
import android.graphics.Rect;
-import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
@@ -77,7 +76,6 @@
doNothing().when(mController).onAnimationFinished(any());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -103,7 +101,6 @@
verify(mController).onAnimationFinished(mTransition);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testChangesBehindStartingWindow() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -118,7 +115,6 @@
assertEquals(0, animator.getDuration());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testTransitionTypeDragResize() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_TASK_FRAGMENT_DRAG_RESIZE, 0)
@@ -133,25 +129,6 @@
assertEquals(0, animator.getDuration());
}
- @DisableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
- @Test
- public void testInvalidCustomAnimation_disableAnimationOptionsPerChange() {
- final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
- .addChange(createChange(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY, TRANSIT_OPEN))
- .build();
- info.setAnimationOptions(TransitionInfo.AnimationOptions
- .makeCustomAnimOptions("packageName", 0 /* enterResId */, 0 /* exitResId */,
- 0 /* backgroundColor */, false /* overrideTaskTransition */));
- final Animator animator = mAnimRunner.createAnimator(
- info, mStartTransaction, mFinishTransaction,
- () -> mFinishCallback.onTransitionFinished(null /* wct */),
- new ArrayList<>());
-
- // An invalid custom animation is equivalent to jump-cut.
- assertEquals(0, animator.getDuration());
- }
-
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testInvalidCustomAnimation_enableAnimationOptionsPerChange() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -169,36 +146,6 @@
assertEquals(0, animator.getDuration());
}
- @DisableFlags(Flags.FLAG_ACTIVITY_EMBEDDING_OVERLAY_PRESENTATION_FLAG)
- @Test
- public void testCalculateParentBounds_flagDisabled() {
- final Rect parentBounds = new Rect(0, 0, 2000, 2000);
- final Rect primaryBounds = new Rect();
- final Rect secondaryBounds = new Rect();
- parentBounds.splitVertically(primaryBounds, secondaryBounds);
-
- final TransitionInfo.Change change = createChange(0 /* flags */);
- change.setStartAbsBounds(secondaryBounds);
-
- final TransitionInfo.Change boundsAnimationChange = createChange(0 /* flags */);
- boundsAnimationChange.setStartAbsBounds(primaryBounds);
- boundsAnimationChange.setEndAbsBounds(primaryBounds);
- final Rect actualParentBounds = new Rect();
-
- calculateParentBounds(change, boundsAnimationChange, actualParentBounds);
-
- assertEquals(parentBounds, actualParentBounds);
-
- actualParentBounds.setEmpty();
-
- boundsAnimationChange.setStartAbsBounds(secondaryBounds);
- boundsAnimationChange.setEndAbsBounds(primaryBounds);
-
- calculateParentBounds(boundsAnimationChange, boundsAnimationChange, actualParentBounds);
-
- assertEquals(parentBounds, actualParentBounds);
- }
-
// TODO(b/243518738): Rewrite with TestParameter
@EnableFlags(Flags.FLAG_ACTIVITY_EMBEDDING_OVERLAY_PRESENTATION_FLAG)
@Test
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
index 9f29ef7..53a13d0 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
@@ -32,8 +32,6 @@
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.graphics.Rect;
-import android.platform.test.annotations.DisableFlags;
-import android.platform.test.annotations.EnableFlags;
import android.view.SurfaceControl;
import android.window.TransitionInfo;
@@ -41,7 +39,6 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
-import com.android.window.flags.Flags;
import com.android.wm.shell.transition.TransitionInfoBuilder;
import org.junit.Before;
@@ -69,13 +66,11 @@
any());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testInstantiate() {
verify(mShellInit).addInitCallback(any(), any());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOnInit() {
mController.onInit();
@@ -83,7 +78,6 @@
verify(mTransitions).addHandler(mController);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testSetAnimScaleSetting() {
mController.setAnimScaleSetting(1.0f);
@@ -92,7 +86,6 @@
verify(mAnimSpec).setAnimScaleSetting(1.0f);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsNonActivityEmbeddingChange() {
final TransitionInfo.Change nonEmbeddedOpen = createChange(0 /* flags */);
@@ -129,7 +122,6 @@
assertFalse(info2.getChanges().contains(nonEmbeddedClose));
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsOnlyFillTaskActivityEmbeddingChange() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -146,7 +138,6 @@
verifyNoMoreInteractions(mFinishCallback);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsActivityEmbeddingSplitChange() {
// Change that occupies only part of the Task.
@@ -164,7 +155,6 @@
verifyNoMoreInteractions(mFinishTransaction);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsChangeEnterActivityEmbeddingSplit() {
// Change that is entering ActivityEmbedding split.
@@ -181,7 +171,6 @@
verifyNoMoreInteractions(mFinishTransaction);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsChangeExitActivityEmbeddingSplit() {
// Change that is exiting ActivityEmbedding split.
@@ -198,27 +187,6 @@
verifyNoMoreInteractions(mFinishTransaction);
}
- @DisableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
- @Test
- public void testShouldAnimate_containsAnimationOptions_disableAnimOptionsPerChange() {
- final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_CLOSE, 0)
- .addChange(createEmbeddedChange(EMBEDDED_RIGHT_BOUNDS, TASK_BOUNDS, TASK_BOUNDS))
- .build();
-
- info.setAnimationOptions(TransitionInfo.AnimationOptions
- .makeCustomAnimOptions("packageName", 0 /* enterResId */, 0 /* exitResId */,
- 0 /* backgroundColor */, false /* overrideTaskTransition */));
- assertTrue(mController.shouldAnimate(info));
-
- info.setAnimationOptions(TransitionInfo.AnimationOptions
- .makeSceneTransitionAnimOptions());
- assertFalse(mController.shouldAnimate(info));
-
- info.setAnimationOptions(TransitionInfo.AnimationOptions.makeCrossProfileAnimOptions());
- assertFalse(mController.shouldAnimate(info));
- }
-
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testShouldAnimate_containsAnimationOptions_enableAnimOptionsPerChange() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_CLOSE, 0)
@@ -239,7 +207,6 @@
assertFalse(mController.shouldAnimate(info));
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@UiThreadTest
@Test
public void testMergeAnimation() {
@@ -278,7 +245,6 @@
verify(mFinishCallback).onTransitionFinished(any());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOnAnimationFinished() {
// Should not call finish when there is no transition.
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt
index 4c3325d..0d1c5722 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt
@@ -21,6 +21,7 @@
import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM
import android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN
import android.app.WindowConfiguration.WindowingMode
+import android.os.Handler
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper.RunWithLooper
import android.view.SurfaceControl
@@ -56,7 +57,12 @@
@Before
fun setUp() {
handler =
- DesktopMinimizationTransitionHandler(testExecutor, testExecutor, displayController)
+ DesktopMinimizationTransitionHandler(
+ testExecutor,
+ testExecutor,
+ displayController,
+ mock<Handler>(),
+ )
whenever(displayController.getDisplayContext(any())).thenReturn(mContext)
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
index e00bdca..ff9fdd4 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
@@ -2478,8 +2478,7 @@
controller.moveTaskToFront(task.taskId, unminimizeReason = UnminimizeReason.UNKNOWN)
val wct = getLatestDesktopMixedTaskWct(type = TRANSIT_OPEN)
- assertThat(wct.hierarchyOps).hasSize(1)
- wct.assertLaunchTaskAt(0, task.taskId, WINDOWING_MODE_FREEFORM)
+ wct.assertLaunchTask(task.taskId, WINDOWING_MODE_FREEFORM)
}
@Test
@@ -2811,6 +2810,7 @@
// Should launch home
wct.assertPendingIntentAt(0, launchHomeIntent(DEFAULT_DISPLAY))
+ wct.assertPendingIntentActivityOptionsLaunchDisplayIdAt(0, DEFAULT_DISPLAY)
}
@Test
@@ -2971,9 +2971,13 @@
val captor = argumentCaptor<WindowContainerTransaction>()
verify(freeformTaskTransitionStarter)
.startMinimizedModeTransition(captor.capture(), eq(task.taskId), eq(false))
- captor.firstValue.hierarchyOps.none { hop ->
- hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK && hop.container == wallpaperToken.asBinder()
- }
+ assertThat(
+ captor.firstValue.hierarchyOps.none { hop ->
+ hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK &&
+ hop.container == wallpaperToken.asBinder()
+ }
+ )
+ .isTrue()
}
@Test
@@ -3062,9 +3066,13 @@
val captor = argumentCaptor<WindowContainerTransaction>()
verify(freeformTaskTransitionStarter).startPipTransition(captor.capture())
- captor.firstValue.hierarchyOps.none { hop ->
- hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK && hop.container == wallpaperToken.asBinder()
- }
+ assertThat(
+ captor.firstValue.hierarchyOps.none { hop ->
+ hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK &&
+ hop.container == wallpaperToken.asBinder()
+ }
+ )
+ .isTrue()
}
@Test
@@ -3085,7 +3093,12 @@
val captor = argumentCaptor<WindowContainerTransaction>()
verify(freeformTaskTransitionStarter)
.startMinimizedModeTransition(captor.capture(), eq(task.taskId), eq(true))
- captor.firstValue.hierarchyOps.none { hop -> hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK }
+ assertThat(
+ captor.firstValue.hierarchyOps.none { hop ->
+ hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK
+ }
+ )
+ .isTrue()
}
@Test
@@ -3132,9 +3145,13 @@
val captor = argumentCaptor<WindowContainerTransaction>()
verify(freeformTaskTransitionStarter)
.startMinimizedModeTransition(captor.capture(), eq(task.taskId), eq(false))
- captor.firstValue.hierarchyOps.none { hop ->
- hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK && hop.container == wallpaperToken.asBinder()
- }
+ assertThat(
+ captor.firstValue.hierarchyOps.none { hop ->
+ hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK &&
+ hop.container == wallpaperToken.asBinder()
+ }
+ )
+ .isTrue()
}
@Test
@@ -3156,9 +3173,13 @@
val captor = argumentCaptor<WindowContainerTransaction>()
verify(freeformTaskTransitionStarter)
.startMinimizedModeTransition(captor.capture(), eq(task1.taskId), eq(false))
- captor.firstValue.hierarchyOps.none { hop ->
- hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK && hop.container == wallpaperToken.asBinder()
- }
+ assertThat(
+ captor.firstValue.hierarchyOps.none { hop ->
+ hop.type == HIERARCHY_OP_TYPE_REMOVE_TASK &&
+ hop.container == wallpaperToken.asBinder()
+ }
+ )
+ .isTrue()
}
@Test
@@ -3915,6 +3936,7 @@
// Should launch home
assertNotNull(result, "Should handle request")
.assertPendingIntentAt(0, launchHomeIntent(DEFAULT_DISPLAY))
+ result!!.assertPendingIntentActivityOptionsLaunchDisplayIdAt(0, DEFAULT_DISPLAY)
}
@Test
@@ -3941,6 +3963,7 @@
// Should launch home
assertNotNull(result, "Should handle request")
.assertPendingIntentAt(0, launchHomeIntent(DEFAULT_DISPLAY))
+ result!!.assertPendingIntentActivityOptionsLaunchDisplayIdAt(0, DEFAULT_DISPLAY)
}
@Test
@@ -4073,6 +4096,7 @@
// Should launch home
assertNotNull(result, "Should handle request")
.assertPendingIntentAt(0, launchHomeIntent(DEFAULT_DISPLAY))
+ result!!.assertPendingIntentActivityOptionsLaunchDisplayIdAt(0, DEFAULT_DISPLAY)
}
@Test
@@ -4089,6 +4113,7 @@
// Should launch home
assertNotNull(result, "Should handle request")
.assertPendingIntentAt(0, launchHomeIntent(SECOND_DISPLAY))
+ result!!.assertPendingIntentActivityOptionsLaunchDisplayIdAt(0, SECOND_DISPLAY)
}
@Test
@@ -6310,6 +6335,61 @@
assertThat(taskRepository.getNumberOfDesks(DEFAULT_DISPLAY)).isEqualTo(currentDeskCount + 1)
}
+ @Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER,
+ )
+ fun startLaunchTransition_desktopNotShowing_movesWallpaperToFront() {
+ val launchingTask = createFreeformTask()
+ val wct = WindowContainerTransaction()
+ wct.reorder(launchingTask.token, /* onTop= */ true)
+ whenever(
+ desktopMixedTransitionHandler.startLaunchTransition(
+ eq(TRANSIT_OPEN),
+ any(),
+ anyOrNull(),
+ anyOrNull(),
+ anyOrNull(),
+ )
+ )
+ .thenReturn(Binder())
+
+ controller.startLaunchTransition(TRANSIT_OPEN, wct, launchingTaskId = null)
+
+ val latestWct = getLatestDesktopMixedTaskWct(type = TRANSIT_OPEN)
+ val launchingTaskReorderIndex = latestWct.indexOfReorder(launchingTask, toTop = true)
+ val wallpaperReorderIndex = latestWct.indexOfReorder(wallpaperToken, toTop = true)
+ assertThat(launchingTaskReorderIndex).isNotEqualTo(-1)
+ assertThat(wallpaperReorderIndex).isNotEqualTo(-1)
+ assertThat(launchingTaskReorderIndex).isGreaterThan(wallpaperReorderIndex)
+ }
+
+ @Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER,
+ )
+ fun startLaunchTransition_desktopShowing_doesNotReorderWallpaper() {
+ val wct = WindowContainerTransaction()
+ whenever(
+ desktopMixedTransitionHandler.startLaunchTransition(
+ eq(TRANSIT_OPEN),
+ any(),
+ anyOrNull(),
+ anyOrNull(),
+ anyOrNull(),
+ )
+ )
+ .thenReturn(Binder())
+
+ setUpFreeformTask()
+ controller.startLaunchTransition(TRANSIT_OPEN, wct, launchingTaskId = null)
+
+ val latestWct = getLatestDesktopMixedTaskWct(type = TRANSIT_OPEN)
+ assertNull(latestWct.hierarchyOps.find { op -> op.container == wallpaperToken.asBinder() })
+ }
+
private class RunOnStartTransitionCallback : ((IBinder) -> Unit) {
var invocations = 0
private set
@@ -6696,11 +6776,18 @@
}
private fun WindowContainerTransaction.indexOfReorder(
+ token: WindowContainerToken,
+ toTop: Boolean? = null,
+): Int {
+ val hop = hierarchyOps.singleOrNull(ReorderPredicate(token, toTop)) ?: return -1
+ return hierarchyOps.indexOf(hop)
+}
+
+private fun WindowContainerTransaction.indexOfReorder(
task: RunningTaskInfo,
toTop: Boolean? = null,
): Int {
- val hop = hierarchyOps.singleOrNull(ReorderPredicate(task.token, toTop)) ?: return -1
- return hierarchyOps.indexOf(hop)
+ return indexOfReorder(task.token, toTop)
}
private class ReorderPredicate(val token: WindowContainerToken, val toTop: Boolean? = null) :
@@ -6820,6 +6907,29 @@
assertThat(op.pendingIntent?.intent?.categories).isEqualTo(intent.categories)
}
+private fun WindowContainerTransaction.assertPendingIntentActivityOptionsLaunchDisplayIdAt(
+ index: Int,
+ displayId: Int,
+) {
+ assertIndexInBounds(index)
+ val op = hierarchyOps[index]
+ if (op.launchOptions != null) {
+ val options = ActivityOptions(op.launchOptions)
+ assertThat(options.launchDisplayId).isEqualTo(displayId)
+ }
+}
+
+private fun WindowContainerTransaction.assertLaunchTask(taskId: Int, windowingMode: Int) {
+ val keyLaunchWindowingMode = "android.activity.windowingMode"
+
+ assertHop { hop ->
+ hop.type == HIERARCHY_OP_TYPE_LAUNCH_TASK &&
+ hop.launchOptions?.getInt(LAUNCH_KEY_TASK_ID) == taskId &&
+ hop.launchOptions?.getInt(keyLaunchWindowingMode, WINDOWING_MODE_UNDEFINED) ==
+ windowingMode
+ }
+}
+
private fun WindowContainerTransaction.assertLaunchTaskAt(
index: Int,
taskId: Int,
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksLimiterTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksLimiterTest.kt
index d33209d..62e3c54 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksLimiterTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksLimiterTest.kt
@@ -37,7 +37,6 @@
import com.android.dx.mockito.inline.extended.ExtendedMockito
import com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn
import com.android.dx.mockito.inline.extended.StaticMockitoSession
-import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_MINIMIZE_WINDOW
import com.android.internal.jank.InteractionJankMonitor
import com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
import com.android.wm.shell.ShellTaskOrganizer
@@ -72,8 +71,6 @@
import org.mockito.Mockito.mock
import org.mockito.Mockito.spy
import org.mockito.Mockito.`when`
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.verify
import org.mockito.quality.Strictness
/**
@@ -521,85 +518,6 @@
}
@Test
- fun minimizeTransitionReadyAndFinished_logsJankInstrumentationBeginAndEnd() {
- desktopTaskRepo.addDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
- desktopTaskRepo.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
- (1..<MAX_TASK_LIMIT).forEach { _ -> setUpFreeformTask() }
- val transition = Binder()
- val task = setUpFreeformTask()
- addPendingMinimizeChange(transition, taskId = task.taskId)
-
- callOnTransitionReady(
- transition,
- TransitionInfoBuilder(TRANSIT_OPEN).addChange(TRANSIT_TO_BACK, task).build(),
- )
-
- desktopTasksLimiter.getTransitionObserver().onTransitionStarting(transition)
-
- verify(interactionJankMonitor)
- .begin(any(), eq(mContext), eq(handler), eq(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW))
-
- desktopTasksLimiter
- .getTransitionObserver()
- .onTransitionFinished(transition, /* aborted= */ false)
-
- verify(interactionJankMonitor).end(eq(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW))
- }
-
- @Test
- fun minimizeTransitionReadyAndAborted_logsJankInstrumentationBeginAndCancel() {
- desktopTaskRepo.addDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
- desktopTaskRepo.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
- (1..<MAX_TASK_LIMIT).forEach { _ -> setUpFreeformTask() }
- val transition = Binder()
- val task = setUpFreeformTask()
- addPendingMinimizeChange(transition, taskId = task.taskId)
-
- callOnTransitionReady(
- transition,
- TransitionInfoBuilder(TRANSIT_OPEN).addChange(TRANSIT_TO_BACK, task).build(),
- )
-
- desktopTasksLimiter.getTransitionObserver().onTransitionStarting(transition)
-
- verify(interactionJankMonitor)
- .begin(any(), eq(mContext), eq(handler), eq(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW))
-
- desktopTasksLimiter
- .getTransitionObserver()
- .onTransitionFinished(transition, /* aborted= */ true)
-
- verify(interactionJankMonitor).cancel(eq(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW))
- }
-
- @Test
- fun minimizeTransitionReadyAndMerged_logsJankInstrumentationBeginAndEnd() {
- desktopTaskRepo.addDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
- desktopTaskRepo.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
- (1..<MAX_TASK_LIMIT).forEach { _ -> setUpFreeformTask() }
- val mergedTransition = Binder()
- val newTransition = Binder()
- val task = setUpFreeformTask()
- addPendingMinimizeChange(mergedTransition, taskId = task.taskId)
-
- callOnTransitionReady(
- mergedTransition,
- TransitionInfoBuilder(TRANSIT_OPEN).addChange(TRANSIT_TO_BACK, task).build(),
- )
-
- desktopTasksLimiter.getTransitionObserver().onTransitionStarting(mergedTransition)
-
- verify(interactionJankMonitor)
- .begin(any(), eq(mContext), eq(handler), eq(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW))
-
- desktopTasksLimiter
- .getTransitionObserver()
- .onTransitionMerged(mergedTransition, newTransition)
-
- verify(interactionJankMonitor).end(eq(CUJ_DESKTOP_MODE_MINIMIZE_WINDOW))
- }
-
- @Test
fun getMinimizingTask_noPendingTransition_returnsNull() {
val transition = Binder()
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/GroupedTaskInfoTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/GroupedTaskInfoTest.kt
index 3209664..6ecebd7 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/GroupedTaskInfoTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/GroupedTaskInfoTest.kt
@@ -26,7 +26,7 @@
import androidx.test.filters.SmallTest
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.shared.GroupedTaskInfo
-import com.android.wm.shell.shared.GroupedTaskInfo.TYPE_FREEFORM
+import com.android.wm.shell.shared.GroupedTaskInfo.TYPE_DESK
import com.android.wm.shell.shared.GroupedTaskInfo.TYPE_FULLSCREEN
import com.android.wm.shell.shared.GroupedTaskInfo.TYPE_SPLIT
import com.android.wm.shell.shared.split.SplitBounds
@@ -87,14 +87,14 @@
}
@Test
- fun testFreeformTasks_hasCorrectType() {
- assertThat(freeformTasksGroupInfo(freeformTaskIds = arrayOf(1)).isBaseType(TYPE_FREEFORM))
+ fun testDeskTasks_hasCorrectType() {
+ assertThat(deskTasksGroupInfo(deskId = 0, freeformTaskIds = arrayOf(1)).isBaseType(TYPE_DESK))
.isTrue()
}
@Test
- fun testCreateFreeformTasks_hasCorrectNumberOfTasks() {
- val list = freeformTasksGroupInfo(freeformTaskIds = arrayOf(1, 2, 3)).taskInfoList
+ fun testCreateDeskTasks_hasCorrectNumberOfTasks() {
+ val list = deskTasksGroupInfo(deskId = 0, freeformTaskIds = arrayOf(1, 2, 3)).taskInfoList
assertThat(list).hasSize(3)
assertThat(list[0].taskId).isEqualTo(1)
assertThat(list[1].taskId).isEqualTo(2)
@@ -102,9 +102,9 @@
}
@Test
- fun testCreateFreeformTasks_nonExistentMinimizedTaskId_throwsException() {
+ fun testCreateDeskTasks_nonExistentMinimizedTaskId_throwsException() {
assertThrows(IllegalArgumentException::class.java) {
- freeformTasksGroupInfo(
+ deskTasksGroupInfo(deskId = 0,
freeformTaskIds = arrayOf(1, 2, 3),
minimizedTaskIds = arrayOf(1, 4)
)
@@ -122,8 +122,8 @@
}
@Test
- fun testMixedWithFreeformBase_hasCorrectType() {
- assertThat(mixedTaskGroupInfoWithFreeformBase().isBaseType(TYPE_FREEFORM)).isTrue()
+ fun testMixedWithDeskBase_hasCorrectType() {
+ assertThat(mixedTaskGroupInfoWithDeskBase().isBaseType(TYPE_DESK)).isTrue()
}
@Test
@@ -190,15 +190,16 @@
}
@Test
- fun testParcelling_freeformTasks() {
- val taskInfo = freeformTasksGroupInfo(freeformTaskIds = arrayOf(1, 2, 3))
+ fun testParcelling_DeskTasks() {
+ val taskInfo = deskTasksGroupInfo(deskId = 50, freeformTaskIds = arrayOf(1, 2, 3))
val parcel = Parcel.obtain()
taskInfo.writeToParcel(parcel, 0)
parcel.setDataPosition(0)
// Read the object back from the parcel
val taskInfoFromParcel: GroupedTaskInfo =
GroupedTaskInfo.CREATOR.createFromParcel(parcel)
- assertThat(taskInfoFromParcel.isBaseType(TYPE_FREEFORM)).isTrue()
+ assertThat(taskInfoFromParcel.deskId).isEqualTo(taskInfo.deskId)
+ assertThat(taskInfoFromParcel.isBaseType(TYPE_DESK)).isTrue()
assertThat(taskInfoFromParcel.taskInfoList).hasSize(3)
// Only compare task ids
val taskIdComparator = Correspondence.transforming<TaskInfo, Int>(
@@ -209,8 +210,8 @@
}
@Test
- fun testParcelling_freeformTasks_minimizedTasks() {
- val taskInfo = freeformTasksGroupInfo(
+ fun testParcelling_DeskTasks_minimizedTasks() {
+ val taskInfo = deskTasksGroupInfo(deskId = 0,
freeformTaskIds = arrayOf(1, 2, 3), minimizedTaskIds = arrayOf(2))
val parcel = Parcel.obtain()
@@ -220,14 +221,14 @@
// Read the object back from the parcel
val taskInfoFromParcel: GroupedTaskInfo =
GroupedTaskInfo.CREATOR.createFromParcel(parcel)
- assertThat(taskInfoFromParcel.isBaseType(TYPE_FREEFORM)).isTrue()
+ assertThat(taskInfoFromParcel.isBaseType(TYPE_DESK)).isTrue()
assertThat(taskInfoFromParcel.minimizedTaskIds).isEqualTo(arrayOf(2).toIntArray())
}
@Test
fun testParcelling_mixedTasks() {
val taskInfo = GroupedTaskInfo.forMixed(listOf(
- freeformTasksGroupInfo(freeformTaskIds = arrayOf(4, 5, 6),
+ deskTasksGroupInfo(deskId = 0, freeformTaskIds = arrayOf(4, 5, 6),
minimizedTaskIds = arrayOf(5)),
splitTasksGroupInfo(firstId = 2, secondId = 3),
singleTaskGroupInfo(id = 1)))
@@ -239,7 +240,7 @@
// Read the object back from the parcel
val taskInfoFromParcel: GroupedTaskInfo =
GroupedTaskInfo.CREATOR.createFromParcel(parcel)
- assertThat(taskInfoFromParcel.isBaseType(TYPE_FREEFORM)).isTrue()
+ assertThat(taskInfoFromParcel.isBaseType(TYPE_DESK)).isTrue()
assertThat(taskInfoFromParcel.baseGroupedTask.minimizedTaskIds).isEqualTo(
arrayOf(5).toIntArray())
for (i in 1..6) {
@@ -275,12 +276,14 @@
}
@Test
- fun testTaskProperties_freeformTasks() {
+ fun testTaskProperties_DeskTasks() {
val task1 = createTaskInfo(id = 1)
val task2 = createTaskInfo(id = 2)
- val taskInfo = GroupedTaskInfo.forFreeformTasks(listOf(task1, task2), setOf())
+ val taskInfo = GroupedTaskInfo.forDeskTasks(
+ /* deskId = */ 500, listOf(task1, task2), setOf())
+ assertThat(taskInfo.deskId).isEqualTo(500)
assertThat(taskInfo.getTaskById(1)).isEqualTo(task1)
assertThat(taskInfo.getTaskById(2)).isEqualTo(task2)
assertThat(taskInfo.containsTask(1)).isTrue()
@@ -325,11 +328,13 @@
return GroupedTaskInfo.forSplitTasks(task1, task2, splitBounds)
}
- private fun freeformTasksGroupInfo(
+ private fun deskTasksGroupInfo(
+ deskId: Int,
freeformTaskIds: Array<Int>,
minimizedTaskIds: Array<Int> = emptyArray()
): GroupedTaskInfo {
- return GroupedTaskInfo.forFreeformTasks(
+ return GroupedTaskInfo.forDeskTasks(
+ deskId,
freeformTaskIds.map { createTaskInfo(it) }.toList(),
minimizedTaskIds.toSet())
}
@@ -346,9 +351,9 @@
singleTaskGroupInfo(id = 1)))
}
- private fun mixedTaskGroupInfoWithFreeformBase(): GroupedTaskInfo {
+ private fun mixedTaskGroupInfoWithDeskBase(): GroupedTaskInfo {
return GroupedTaskInfo.forMixed(listOf(
- freeformTasksGroupInfo(freeformTaskIds = arrayOf(2, 3, 4)),
+ deskTasksGroupInfo(deskId = 0, freeformTaskIds = arrayOf(2, 3, 4)),
singleTaskGroupInfo(id = 1)))
}
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java
index a546b3e..bf65cae 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java
@@ -24,7 +24,7 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PERSISTENCE;
-import static com.android.wm.shell.shared.GroupedTaskInfo.TYPE_FREEFORM;
+import static com.android.wm.shell.shared.GroupedTaskInfo.TYPE_DESK;
import static com.android.wm.shell.shared.GroupedTaskInfo.TYPE_FULLSCREEN;
import static com.android.wm.shell.shared.GroupedTaskInfo.TYPE_SPLIT;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_50_50;
@@ -349,7 +349,7 @@
GroupedTaskInfo freeformGroup = recentTasks.get(2);
// Check that groups have expected types
- assertTrue(freeformGroup.isBaseType(TYPE_FREEFORM));
+ assertTrue(freeformGroup.isBaseType(TYPE_DESK));
assertTrue(singleGroup1.isBaseType(TYPE_FULLSCREEN));
assertTrue(singleGroup2.isBaseType(TYPE_FULLSCREEN));
@@ -389,7 +389,7 @@
// Check that groups have expected types
assertTrue(splitGroup.isBaseType(TYPE_SPLIT));
- assertTrue(freeformGroup.isBaseType(TYPE_FREEFORM));
+ assertTrue(freeformGroup.isBaseType(TYPE_DESK));
assertTrue(singleGroup.isBaseType(TYPE_FULLSCREEN));
// Check freeform group entries
@@ -460,7 +460,7 @@
GroupedTaskInfo freeformGroup = recentTasks.get(2);
// Check that groups have expected types
- assertTrue(freeformGroup.isBaseType(TYPE_FREEFORM));
+ assertTrue(freeformGroup.isBaseType(TYPE_DESK));
assertTrue(singleGroup1.isBaseType(TYPE_FULLSCREEN));
assertTrue(singleGroup2.isBaseType(TYPE_FULLSCREEN));
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentsTransitionHandlerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentsTransitionHandlerTest.java
index c8025a9..93dd345 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentsTransitionHandlerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentsTransitionHandlerTest.java
@@ -17,16 +17,20 @@
package com.android.wm.shell.recents;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_OPEN;
+import static android.view.WindowManager.TRANSIT_SLEEP;
import static android.view.WindowManager.TRANSIT_TO_FRONT;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX;
+import static com.android.wm.shell.Flags.FLAG_ENABLE_RECENTS_BOOKEND_TRANSITION;
import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_ANIMATING;
import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_NOT_RUNNING;
import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_REQUESTED;
+import static com.android.wm.shell.transition.Transitions.TRANSIT_END_RECENTS_TRANSITION;
import static com.android.wm.shell.transition.Transitions.TRANSIT_START_RECENTS_TRANSITION;
import static com.google.common.truth.Truth.assertThat;
@@ -308,8 +312,7 @@
mRecentsTransitionHandler.findController(transition).merge(
mergeTransitionInfo,
new StubTransaction(),
- finishT,
- transition,
+ new StubTransaction(),
mock(Transitions.TransitionFinishCallback.class));
mMainExecutor.flushAll();
@@ -318,6 +321,69 @@
}
@Test
+ @EnableFlags(FLAG_ENABLE_RECENTS_BOOKEND_TRANSITION)
+ public void testMerge_consumeBookendTransition() throws Exception {
+ // Start and finish the transition
+ final IRecentsAnimationRunner animationRunner = mock(IRecentsAnimationRunner.class);
+ final IBinder transition = startRecentsTransition(/* synthetic= */ false, animationRunner);
+ mRecentsTransitionHandler.startAnimation(
+ transition, createTransitionInfo(), new StubTransaction(), new StubTransaction(),
+ mock(Transitions.TransitionFinishCallback.class));
+ mRecentsTransitionHandler.findController(transition).finish(/* toHome= */ false,
+ false /* sendUserLeaveHint */, mock(IResultReceiver.class));
+ mMainExecutor.flushAll();
+
+ // Merge the bookend transition
+ TransitionInfo mergeTransitionInfo =
+ new TransitionInfoBuilder(TRANSIT_END_RECENTS_TRANSITION)
+ .addChange(TRANSIT_OPEN, new TestRunningTaskInfoBuilder().build())
+ .build();
+ SurfaceControl.Transaction finishT = mock(SurfaceControl.Transaction.class);
+ Transitions.TransitionFinishCallback finishCallback
+ = mock(Transitions.TransitionFinishCallback.class);
+ mRecentsTransitionHandler.findController(transition).merge(
+ mergeTransitionInfo,
+ new StubTransaction(),
+ finishT,
+ finishCallback);
+ mMainExecutor.flushAll();
+
+ // Verify that we've merged
+ verify(finishCallback).onTransitionFinished(any());
+ }
+
+ @Test
+ @EnableFlags(FLAG_ENABLE_RECENTS_BOOKEND_TRANSITION)
+ public void testMerge_pendingBookendTransition_mergesTransition() throws Exception {
+ // Start and finish the transition
+ final IRecentsAnimationRunner animationRunner = mock(IRecentsAnimationRunner.class);
+ final IBinder transition = startRecentsTransition(/* synthetic= */ false, animationRunner);
+ mRecentsTransitionHandler.startAnimation(
+ transition, createTransitionInfo(), new StubTransaction(), new StubTransaction(),
+ mock(Transitions.TransitionFinishCallback.class));
+ mRecentsTransitionHandler.findController(transition).finish(/* toHome= */ false,
+ false /* sendUserLeaveHint */, mock(IResultReceiver.class));
+ mMainExecutor.flushAll();
+
+ // Merge a new transition while we have a pending finish
+ TransitionInfo mergeTransitionInfo = new TransitionInfoBuilder(TRANSIT_OPEN)
+ .addChange(TRANSIT_OPEN, new TestRunningTaskInfoBuilder().build())
+ .build();
+ SurfaceControl.Transaction finishT = mock(SurfaceControl.Transaction.class);
+ Transitions.TransitionFinishCallback finishCallback
+ = mock(Transitions.TransitionFinishCallback.class);
+ mRecentsTransitionHandler.findController(transition).merge(
+ mergeTransitionInfo,
+ new StubTransaction(),
+ finishT,
+ finishCallback);
+ mMainExecutor.flushAll();
+
+ // Verify that we've cleaned up the original transition
+ assertNull(mRecentsTransitionHandler.findController(transition));
+ }
+
+ @Test
@EnableFlags(FLAG_ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX)
public void testMergeAndFinish_openingFreeformTasks_setsCornerRadius() {
ActivityManager.RunningTaskInfo freeformTask =
@@ -336,7 +402,6 @@
mergeTransitionInfo,
new StubTransaction(),
finishT,
- transition,
mock(Transitions.TransitionFinishCallback.class));
mRecentsTransitionHandler.findController(transition).finish(/* toHome= */ false,
false /* sendUserLeaveHint */, mock(IResultReceiver.class));
@@ -385,15 +450,23 @@
}
private TransitionInfo createTransitionInfo() {
- final ActivityManager.RunningTaskInfo task = new TestRunningTaskInfoBuilder()
+ final ActivityManager.RunningTaskInfo homeTask = new TestRunningTaskInfoBuilder()
.setTopActivityType(ACTIVITY_TYPE_HOME)
.build();
+ final ActivityManager.RunningTaskInfo appTask = new TestRunningTaskInfoBuilder()
+ .setTopActivityType(ACTIVITY_TYPE_STANDARD)
+ .build();
final TransitionInfo.Change homeChange = new TransitionInfo.Change(
- task.token, new SurfaceControl());
+ homeTask.token, new SurfaceControl());
homeChange.setMode(TRANSIT_TO_FRONT);
- homeChange.setTaskInfo(task);
+ homeChange.setTaskInfo(homeTask);
+ final TransitionInfo.Change appChange = new TransitionInfo.Change(
+ appTask.token, new SurfaceControl());
+ appChange.setMode(TRANSIT_TO_FRONT);
+ appChange.setTaskInfo(appTask);
return new TransitionInfoBuilder(TRANSIT_START_RECENTS_TRANSITION)
.addChange(homeChange)
+ .addChange(appChange)
.build();
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/animation/MinimizeAnimatorTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/animation/MinimizeAnimatorTest.kt
new file mode 100644
index 0000000..ba609d4
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/animation/MinimizeAnimatorTest.kt
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2025 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.wm.shell.shared.animation
+
+import android.animation.Animator
+import android.animation.AnimatorSet
+import android.animation.ValueAnimator
+import android.content.Context
+import android.content.res.Resources
+import android.os.Handler
+import android.util.DisplayMetrics
+import android.view.SurfaceControl
+import android.view.SurfaceControl.Transaction
+import android.window.TransitionInfo
+import android.window.WindowContainerToken
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.internal.runner.junit4.statement.UiThreadStatement.runOnUiThread
+import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_MINIMIZE_WINDOW
+import com.android.internal.jank.InteractionJankMonitor
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.any
+import org.mockito.ArgumentMatchers.anyFloat
+import org.mockito.ArgumentMatchers.anyLong
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class MinimizeAnimatorTest {
+ private val context = mock<Context>()
+ private val resources = mock<Resources>()
+ private val transaction = mock<Transaction>()
+ private val leash = mock<SurfaceControl>()
+ private val interactionJankMonitor = mock<InteractionJankMonitor>()
+ private val animationHandler = mock<Handler>()
+
+ private val displayMetrics = DisplayMetrics().apply { density = 1f }
+
+ @Before
+ fun setup() {
+ whenever(context.resources).thenReturn(resources)
+ whenever(resources.displayMetrics).thenReturn(displayMetrics)
+ whenever(transaction.setAlpha(any(), anyFloat())).thenReturn(transaction)
+ whenever(transaction.setPosition(any(), anyFloat(), anyFloat())).thenReturn(transaction)
+ whenever(transaction.setScale(any(), anyFloat(), anyFloat())).thenReturn(transaction)
+ whenever(transaction.setFrameTimeline(anyLong())).thenReturn(transaction)
+ }
+
+ @Test
+ fun create_returnsBoundsAndAlphaAnimators() {
+ val change = TransitionInfo.Change(mock<WindowContainerToken>(), leash)
+
+ val animator = createAnimator(change)
+
+ assertThat(animator).isInstanceOf(AnimatorSet::class.java)
+ val animatorSet = animator as AnimatorSet
+ assertThat(animatorSet.childAnimations).hasSize(2)
+ assertIsBoundsAnimator(animatorSet.childAnimations[0])
+ assertIsAlphaAnimator(animatorSet.childAnimations[1])
+ }
+
+ @Test
+ fun create_doesNotlogJankInstrumentation() = runOnUiThread {
+ val change = TransitionInfo.Change(mock<WindowContainerToken>(), leash)
+
+ createAnimator(change)
+
+ verify(interactionJankMonitor, never()).begin(
+ leash, context, animationHandler, CUJ_DESKTOP_MODE_MINIMIZE_WINDOW)
+ }
+
+ @Test
+ fun onAnimationStart_logsJankInstrumentation() = runOnUiThread {
+ val change = TransitionInfo.Change(mock<WindowContainerToken>(), leash)
+
+ createAnimator(change).start()
+
+ verify(interactionJankMonitor).begin(
+ leash, context, animationHandler, CUJ_DESKTOP_MODE_MINIMIZE_WINDOW)
+ }
+
+ private fun createAnimator(change: TransitionInfo.Change): Animator =
+ MinimizeAnimator.create(context, change, transaction, {}, interactionJankMonitor,
+ animationHandler)
+
+ private fun assertIsBoundsAnimator(animator: Animator) {
+ assertThat(animator).isInstanceOf(ValueAnimator::class.java)
+ assertThat(animator.duration).isEqualTo(200)
+ assertThat(animator.interpolator).isEqualTo(Interpolators.STANDARD_ACCELERATE)
+ }
+
+ private fun assertIsAlphaAnimator(animator: Animator) {
+ assertThat(animator).isInstanceOf(ValueAnimator::class.java)
+ assertThat(animator.duration).isEqualTo(100)
+ assertThat(animator.interpolator).isEqualTo(Interpolators.LINEAR)
+ }
+}
+
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java
index 6f28e656..3099b0f 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java
@@ -17,36 +17,44 @@
package com.android.wm.shell.transition;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.view.WindowManager.TRANSIT_PREPARE_BACK_NAVIGATION;
import static android.view.WindowManager.TRANSIT_TO_BACK;
+import static android.view.WindowManager.TRANSIT_TO_FRONT;
import static android.window.TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP;
+import static com.android.wm.shell.transition.Transitions.TRANSIT_CONVERT_TO_BUBBLE;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.when;
import android.app.ActivityManager;
import android.app.WindowConfiguration.ActivityType;
import android.content.Context;
+import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
+import android.platform.test.annotations.EnableFlags;
import android.view.SurfaceControl;
import android.window.TransitionInfo;
import android.window.TransitionInfo.TransitionMode;
+import android.window.WindowContainerToken;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry;
+import com.android.wm.shell.Flags;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.TestShellExecutor;
@@ -188,6 +196,72 @@
}
@Test
+ @EnableFlags({Flags.FLAG_ENABLE_BUBBLE_TO_FULLSCREEN, Flags.FLAG_ENABLE_CREATE_ANY_BUBBLE})
+ public void testDragTaskToBubbleOverHome_notifiesHomeIsVisible() throws RemoteException {
+ ActivityManager.RunningTaskInfo homeTask = createTaskInfo(1, ACTIVITY_TYPE_HOME);
+ ActivityManager.RunningTaskInfo bubbleTask = createTaskInfo(2, ACTIVITY_TYPE_STANDARD);
+
+ TransitionInfo startDragTransition =
+ new TransitionInfoBuilder(TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP)
+ .addChange(TRANSIT_TO_FRONT, homeTask)
+ .addChange(TRANSIT_TO_BACK, bubbleTask)
+ .build();
+
+ // Start drag to desktop which brings home to front
+ mHomeTransitionObserver.onTransitionReady(new Binder(), startDragTransition,
+ MockTransactionPool.create(), MockTransactionPool.create());
+ // Does not notify home visibility yet
+ verify(mListener, never()).onHomeVisibilityChanged(anyBoolean());
+
+ TransitionInfo convertToBubbleTransition =
+ new TransitionInfoBuilder(TRANSIT_CONVERT_TO_BUBBLE)
+ .addChange(TRANSIT_TO_FRONT, bubbleTask)
+ .build();
+
+ // Convert to bubble. Transition does not include changes for home task
+ mHomeTransitionObserver.onTransitionReady(new Binder(), convertToBubbleTransition,
+ MockTransactionPool.create(), MockTransactionPool.create());
+
+ // Notifies home visibility change that was pending from the start of drag
+ verify(mListener).onHomeVisibilityChanged(true);
+ }
+
+ @Test
+ @EnableFlags({Flags.FLAG_ENABLE_BUBBLE_TO_FULLSCREEN, Flags.FLAG_ENABLE_CREATE_ANY_BUBBLE})
+ public void testDragTaskToBubbleOverOtherTask_notifiesHomeIsNotVisible()
+ throws RemoteException {
+ ActivityManager.RunningTaskInfo homeTask = createTaskInfo(1, ACTIVITY_TYPE_HOME);
+ ActivityManager.RunningTaskInfo bubbleTask = createTaskInfo(2, ACTIVITY_TYPE_STANDARD);
+ ActivityManager.RunningTaskInfo otherTask = createTaskInfo(3, ACTIVITY_TYPE_STANDARD);
+
+ TransitionInfo startDragTransition =
+ new TransitionInfoBuilder(TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP)
+ .addChange(TRANSIT_TO_FRONT, homeTask)
+ .addChange(TRANSIT_TO_BACK, bubbleTask)
+ .build();
+
+ // Start drag to desktop which brings home to front
+ mHomeTransitionObserver.onTransitionReady(new Binder(), startDragTransition,
+ MockTransactionPool.create(), MockTransactionPool.create());
+ // Does not notify home visibility yet
+ verify(mListener, never()).onHomeVisibilityChanged(anyBoolean());
+
+ TransitionInfo convertToBubbleTransition =
+ new TransitionInfoBuilder(TRANSIT_CONVERT_TO_BUBBLE)
+ .addChange(TRANSIT_TO_FRONT, bubbleTask)
+ .addChange(TRANSIT_TO_FRONT, otherTask)
+ .addChange(TRANSIT_TO_BACK, homeTask)
+ .build();
+
+ // Convert to bubble. Transition includes home task to back which updates home visibility
+ mHomeTransitionObserver.onTransitionReady(new Binder(), convertToBubbleTransition,
+ MockTransactionPool.create(), MockTransactionPool.create());
+
+ // Notifies home visibility change due to home moving to back in the second transition
+ verify(mListener).onHomeVisibilityChanged(false);
+ }
+
+ @Test
public void testHomeActivityWithBackGestureNotifiesHomeIsVisibleAfterClose()
throws RemoteException {
TransitionInfo info = mock(TransitionInfo.class);
@@ -227,4 +301,14 @@
when(change.getMode()).thenReturn(mode);
taskInfo.isRunning = isRunning;
}
+
+ private static ActivityManager.RunningTaskInfo createTaskInfo(int taskId, int activityType) {
+ ActivityManager.RunningTaskInfo taskInfo = new ActivityManager.RunningTaskInfo();
+ taskInfo.taskId = taskId;
+ taskInfo.topActivityType = activityType;
+ taskInfo.configuration.windowConfiguration.setActivityType(activityType);
+ taskInfo.token = mock(WindowContainerToken.class);
+ taskInfo.isRunning = true;
+ return taskInfo;
+ }
}
diff --git a/libs/hostgraphics/Fence.cpp b/libs/hostgraphics/Fence.cpp
index 4383bf0..938a938 100644
--- a/libs/hostgraphics/Fence.cpp
+++ b/libs/hostgraphics/Fence.cpp
@@ -18,6 +18,6 @@
namespace android {
-const sp<Fence> Fence::NO_FENCE = sp<Fence>(new Fence);
+const sp<Fence> Fence::NO_FENCE = sp<Fence>::make();
} // namespace android
diff --git a/libs/hostgraphics/include/gui/BufferItemConsumer.h b/libs/hostgraphics/include/gui/BufferItemConsumer.h
index c259411..5c96c82 100644
--- a/libs/hostgraphics/include/gui/BufferItemConsumer.h
+++ b/libs/hostgraphics/include/gui/BufferItemConsumer.h
@@ -17,6 +17,8 @@
#ifndef ANDROID_GUI_BUFFERITEMCONSUMER_H
#define ANDROID_GUI_BUFFERITEMCONSUMER_H
+#include <com_android_graphics_libgui_flags.h>
+#include <gui/BufferQueue.h>
#include <gui/ConsumerBase.h>
#include <gui/IGraphicBufferConsumer.h>
#include <utils/RefBase.h>
@@ -26,9 +28,22 @@
class BufferItemConsumer : public ConsumerBase {
public:
BufferItemConsumer(const sp<IGraphicBufferConsumer>& consumer, uint64_t consumerUsage,
- int bufferCount, bool controlledByApp)
+ int bufferCount = -1, bool controlledByApp = false)
: mConsumer(consumer) {}
+#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
+ BufferItemConsumer(uint64_t consumerUsage, int bufferCount = -1,
+ bool controlledByApp = false, bool isConsumerSurfaceFlinger = false) {
+ sp<IGraphicBufferProducer> producer;
+ BufferQueue::createBufferQueue(&producer, &mConsumer);
+ mSurface = sp<Surface>::make(producer, controlledByApp);
+ }
+
+ status_t setConsumerIsProtected(bool isProtected) {
+ return OK;
+ }
+#endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
+
status_t acquireBuffer(BufferItem* item, nsecs_t presentWhen, bool waitForFence = true) {
return mConsumer->acquireBuffer(item, presentWhen, 0);
}
@@ -71,8 +86,20 @@
return OK;
}
+#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
+// Returns a Surface that can be used as the producer for this consumer.
+ sp<Surface> getSurface() const {
+ return mSurface;
+ }
+#endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
+
private:
sp<IGraphicBufferConsumer> mConsumer;
+#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
+ // This Surface wraps the IGraphicBufferConsumer created for this
+ // ConsumerBase.
+ sp<Surface> mSurface;
+#endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
};
} // namespace android
diff --git a/libs/hostgraphics/include/gui/Surface.h b/libs/hostgraphics/include/gui/Surface.h
index 2774f89..e268ce6 100644
--- a/libs/hostgraphics/include/gui/Surface.h
+++ b/libs/hostgraphics/include/gui/Surface.h
@@ -34,6 +34,10 @@
ANativeWindow::query = hook_query;
}
+ sp<IGraphicBufferProducer> getIGraphicBufferProducer() const {
+ return mBufferProducer;
+ }
+
static bool isValid(const sp<Surface>& surface) {
return surface != nullptr;
}
diff --git a/libs/hostgraphics/include/ui/Fence.h b/libs/hostgraphics/include/ui/Fence.h
index 187c311..3364b8ae 100644
--- a/libs/hostgraphics/include/ui/Fence.h
+++ b/libs/hostgraphics/include/ui/Fence.h
@@ -60,6 +60,10 @@
return 0;
}
+ int get() const {
+ return 0;
+ }
+
inline Status getStatus() {
// The sync_wait call underlying wait() has been measured to be
// significantly faster than the sync_fence_info call underlying
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp
index bb2a53b..38ac8ab 100644
--- a/libs/hwui/Android.bp
+++ b/libs/hwui/Android.bp
@@ -233,6 +233,14 @@
}
filegroup {
+ name: "framework-graphics-ravenwood-policies",
+ srcs: [
+ "framework-graphics-ravenwood-policies.txt",
+ ],
+ visibility: ["//frameworks/base/ravenwood"],
+}
+
+filegroup {
name: "framework-graphics-srcs",
srcs: [
"apex/java/**/*.java",
@@ -461,6 +469,10 @@
},
linux: {
srcs: ["platform/linux/utils/SharedLib.cpp"],
+ shared_libs: [
+ "libbinder",
+ "libbinder_ndk",
+ ],
},
darwin: {
srcs: ["platform/darwin/utils/SharedLib.cpp"],
diff --git a/libs/hwui/framework-graphics-ravenwood-policies.txt b/libs/hwui/framework-graphics-ravenwood-policies.txt
new file mode 100644
index 0000000..7296225
--- /dev/null
+++ b/libs/hwui/framework-graphics-ravenwood-policies.txt
@@ -0,0 +1 @@
+class android.graphics.ColorMatrix keepclass
diff --git a/libs/hwui/jni/Bitmap.cpp b/libs/hwui/jni/Bitmap.cpp
index cfde0b2..27d4ac7 100644
--- a/libs/hwui/jni/Bitmap.cpp
+++ b/libs/hwui/jni/Bitmap.cpp
@@ -613,7 +613,7 @@
///////////////////////////////////////////////////////////////////////////////
// TODO: Move somewhere else
-#ifdef __ANDROID__ // Layoutlib does not support parcel
+#ifdef __linux__ // Only Linux support parcel
#define ON_ERROR_RETURN(X) \
if ((error = (X)) != STATUS_OK) return error
@@ -717,7 +717,7 @@
#undef ON_ERROR_RETURN
-#endif // __ANDROID__ // Layoutlib does not support parcel
+#endif // __linux__ // Only Linux support parcel
// This is the maximum possible size because the SkColorSpace must be
// representable (and therefore serializable) using a matrix and numerical
@@ -733,7 +733,7 @@
}
static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) {
-#ifdef __ANDROID__ // Layoutlib does not support parcel
+#ifdef __linux__ // Only Linux support parcel
if (parcel == NULL) {
jniThrowNullPointerException(env, "parcel cannot be null");
return NULL;
@@ -836,14 +836,14 @@
return createBitmap(env, nativeBitmap.release(), getPremulBitmapCreateFlags(isMutable), nullptr,
nullptr, density, sourceId);
#else
- jniThrowRuntimeException(env, "Cannot use parcels outside of Android");
+ jniThrowRuntimeException(env, "Cannot use parcels outside of Linux");
return NULL;
#endif
}
static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject, jlong bitmapHandle, jint density,
jobject parcel) {
-#ifdef __ANDROID__ // Layoutlib does not support parcel
+#ifdef __linux__ // Only Linux support parcel
if (parcel == NULL) {
ALOGD("------- writeToParcel null parcel\n");
return JNI_FALSE;
@@ -901,7 +901,7 @@
}
return JNI_TRUE;
#else
- doThrowRE(env, "Cannot use parcels outside of Android");
+ doThrowRE(env, "Cannot use parcels outside of Linux");
return JNI_FALSE;
#endif
}
diff --git a/libs/hwui/jni/Region.cpp b/libs/hwui/jni/Region.cpp
index 1e064b8..76986eeb 100644
--- a/libs/hwui/jni/Region.cpp
+++ b/libs/hwui/jni/Region.cpp
@@ -18,7 +18,7 @@
#include "SkPath.h"
#include "GraphicsJNI.h"
-#ifdef __ANDROID__ // Layoutlib does not support parcel
+#ifdef __linux__ // Only Linux support parcel
#include <android/binder_parcel.h>
#include <android/binder_parcel_jni.h>
#include <android/binder_parcel_utils.h>
@@ -202,7 +202,7 @@
static jlong Region_createFromParcel(JNIEnv* env, jobject clazz, jobject parcel)
{
-#ifdef __ANDROID__ // Layoutlib does not support parcel
+#ifdef __linux__ // Only Linux support parcel
if (parcel == nullptr) {
return 0;
}
@@ -230,7 +230,7 @@
static jboolean Region_writeToParcel(JNIEnv* env, jobject clazz, jlong regionHandle, jobject parcel)
{
-#ifdef __ANDROID__ // Layoutlib does not support parcel
+#ifdef __linux__ // Only Linux support parcel
const SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
if (parcel == nullptr) {
return JNI_FALSE;
diff --git a/libs/hwui/jni/ScopedParcel.cpp b/libs/hwui/jni/ScopedParcel.cpp
index 95e4e01..52cd988 100644
--- a/libs/hwui/jni/ScopedParcel.cpp
+++ b/libs/hwui/jni/ScopedParcel.cpp
@@ -15,7 +15,7 @@
*/
#include "ScopedParcel.h"
-#ifdef __ANDROID__ // Layoutlib does not support parcel
+#ifdef __linux__ // Only Linux support parcel
using namespace android;
@@ -92,4 +92,4 @@
AParcel_writeByteArray(mParcel, nullptr, -1);
}
}
-#endif // __ANDROID__ // Layoutlib does not support parcel
+#endif // __linux__ // Only Linux support parcel
diff --git a/libs/hwui/jni/ScopedParcel.h b/libs/hwui/jni/ScopedParcel.h
index f2f138f..f2b793a 100644
--- a/libs/hwui/jni/ScopedParcel.h
+++ b/libs/hwui/jni/ScopedParcel.h
@@ -15,7 +15,7 @@
*/
#include "SkData.h"
-#ifdef __ANDROID__ // Layoutlib does not support parcel
+#ifdef __linux__ // Only Linux support parcel
#include <android-base/unique_fd.h>
#include <android/binder_parcel.h>
#include <android/binder_parcel_jni.h>
@@ -64,4 +64,4 @@
ASHMEM,
};
-#endif // __ANDROID__ // Layoutlib does not support parcel
\ No newline at end of file
+#endif // __linux__ // Only Linux support parcel
diff --git a/libs/hwui/jni/graphics_jni_helpers.h b/libs/hwui/jni/graphics_jni_helpers.h
index 91db134..ff26ec1 100644
--- a/libs/hwui/jni/graphics_jni_helpers.h
+++ b/libs/hwui/jni/graphics_jni_helpers.h
@@ -21,6 +21,7 @@
#include <nativehelper/JNIPlatformHelp.h>
#include <nativehelper/scoped_local_ref.h>
#include <nativehelper/scoped_utf_chars.h>
+#include <nativehelper/scoped_primitive_array.h>
#include <string>
// Host targets (layoutlib) do not differentiate between regular and critical native methods,
diff --git a/media/java/android/media/AudioDeviceVolumeManager.java b/media/java/android/media/AudioDeviceVolumeManager.java
index 892a861..56d3df3 100644
--- a/media/java/android/media/AudioDeviceVolumeManager.java
+++ b/media/java/android/media/AudioDeviceVolumeManager.java
@@ -16,6 +16,9 @@
package android.media;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+import static android.media.audio.Flags.FLAG_UNIFY_ABSOLUTE_VOLUME_MANAGEMENT;
+
import static com.android.media.flags.Flags.FLAG_ENABLE_AUDIO_INPUT_DEVICE_ROUTING_AND_VOLUME_CONTROL;
import android.Manifest;
@@ -91,6 +94,8 @@
* @see #setDeviceAbsoluteVolumeBehavior(AudioDeviceAttributes, VolumeInfo, boolean, Executor,
* OnAudioDeviceVolumeChangedListener)
*/
+ @SystemApi(client = MODULE_LIBRARIES)
+ @FlaggedApi(FLAG_UNIFY_ABSOLUTE_VOLUME_MANAGEMENT)
public interface OnAudioDeviceVolumeChangedListener {
/**
* Called the device for the given audio device has changed.
@@ -203,6 +208,30 @@
* volume updates to apply on that device
* @param device the audio device set to absolute volume mode
* @param volume the type of volume this device responds to
+ * @param executor the Executor used for receiving volume updates through the listener
+ * @param vclistener the callback for volume updates
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @RequiresPermission(anyOf = { android.Manifest.permission.MODIFY_AUDIO_ROUTING,
+ android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED,
+ android.Manifest.permission.BLUETOOTH_PRIVILEGED,
+ android.Manifest.permission.BLUETOOTH_STACK})
+ @FlaggedApi(FLAG_UNIFY_ABSOLUTE_VOLUME_MANAGEMENT)
+ public void setDeviceAbsoluteVolumeBehavior(
+ @NonNull AudioDeviceAttributes device,
+ @NonNull VolumeInfo volume,
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull OnAudioDeviceVolumeChangedListener vclistener) {
+ setDeviceAbsoluteVolumeBehavior(device, volume, /*handlesVolumeAdjustment=*/false, executor,
+ vclistener);
+ }
+
+ /**
+ * @hide
+ * Configures a device to use absolute volume model, and registers a listener for receiving
+ * volume updates to apply on that device
+ * @param device the audio device set to absolute volume mode
+ * @param volume the type of volume this device responds to
* @param handlesVolumeAdjustment whether the controller handles volume adjustments separately
* from volume changes. If true, adjustments from {@link AudioManager#adjustStreamVolume}
* will be sent via {@link OnAudioDeviceVolumeChangedListener#onAudioDeviceVolumeAdjusted}.
@@ -210,7 +239,7 @@
* @param vclistener the callback for volume updates
*/
@RequiresPermission(anyOf = { android.Manifest.permission.MODIFY_AUDIO_ROUTING,
- android.Manifest.permission.BLUETOOTH_PRIVILEGED })
+ android.Manifest.permission.BLUETOOTH_PRIVILEGED})
public void setDeviceAbsoluteVolumeBehavior(
@NonNull AudioDeviceAttributes device,
@NonNull VolumeInfo volume,
@@ -229,6 +258,30 @@
* registers a listener for receiving volume updates to apply on that device
* @param device the audio device set to absolute multi-volume mode
* @param volumes the list of volumes the given device responds to
+ * @param executor the Executor used for receiving volume updates through the listener
+ * @param vclistener the callback for volume updates
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @RequiresPermission(anyOf = { android.Manifest.permission.MODIFY_AUDIO_ROUTING,
+ android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED,
+ android.Manifest.permission.BLUETOOTH_PRIVILEGED,
+ android.Manifest.permission.BLUETOOTH_STACK})
+ @FlaggedApi(FLAG_UNIFY_ABSOLUTE_VOLUME_MANAGEMENT)
+ public void setDeviceAbsoluteMultiVolumeBehavior(
+ @NonNull AudioDeviceAttributes device,
+ @NonNull List<VolumeInfo> volumes,
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull OnAudioDeviceVolumeChangedListener vclistener) {
+ setDeviceAbsoluteMultiVolumeBehavior(device, volumes, /*handlesVolumeAdjustment=*/false,
+ executor, vclistener);
+ }
+
+ /**
+ * @hide
+ * Configures a device to use absolute volume model applied to different volume types, and
+ * registers a listener for receiving volume updates to apply on that device
+ * @param device the audio device set to absolute multi-volume mode
+ * @param volumes the list of volumes the given device responds to
* @param handlesVolumeAdjustment whether the controller handles volume adjustments separately
* from volume changes. If true, adjustments from {@link AudioManager#adjustStreamVolume}
* will be sent via {@link OnAudioDeviceVolumeChangedListener#onAudioDeviceVolumeAdjusted}.
@@ -236,7 +289,7 @@
* @param vclistener the callback for volume updates
*/
@RequiresPermission(anyOf = { android.Manifest.permission.MODIFY_AUDIO_ROUTING,
- android.Manifest.permission.BLUETOOTH_PRIVILEGED })
+ android.Manifest.permission.BLUETOOTH_PRIVILEGED})
public void setDeviceAbsoluteMultiVolumeBehavior(
@NonNull AudioDeviceAttributes device,
@NonNull List<VolumeInfo> volumes,
diff --git a/packages/InputDevices/res/values-af/strings.xml b/packages/InputDevices/res/values-af/strings.xml
index 273cfa0..0fc0c05 100644
--- a/packages/InputDevices/res/values-af/strings.xml
+++ b/packages/InputDevices/res/values-af/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serwies (Cyrillies)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegryns (Cyrillies)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roemeens"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Engels (Indië)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml
index 8593253..722d949 100644
--- a/packages/InputDevices/res/values-am/strings.xml
+++ b/packages/InputDevices/res/values-am/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ሰርቢያኛ (ሲሪሊክኛ)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ሞንቴኔግሮኛ (ሲሪሊክኛ)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"ሮማኒያኛ"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"እንግሊዝኛ (ሕንድ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-as/strings.xml b/packages/InputDevices/res/values-as/strings.xml
index e6540e4..acff29d 100644
--- a/packages/InputDevices/res/values-as/strings.xml
+++ b/packages/InputDevices/res/values-as/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ছাৰ্বিয়ান (চিৰিলিক)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"মণ্টেনেগ্ৰিণ (চিৰিলিক)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"ৰোমানিয়ান"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ইংৰাজী (ভাৰত)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-az/strings.xml b/packages/InputDevices/res/values-az/strings.xml
index aa93a92..c0fe764 100644
--- a/packages/InputDevices/res/values-az/strings.xml
+++ b/packages/InputDevices/res/values-az/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serb dili (Kiril)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monteneqro dili (Kiril)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumın dili"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"İngilis dili (Hindistan)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml
index ceb7e37..78b93da 100644
--- a/packages/InputDevices/res/values-bg/strings.xml
+++ b/packages/InputDevices/res/values-bg/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"сръбски (кирилица)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"черногорски (кирилица)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"румънски"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"английски (Индия)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-bn/strings.xml b/packages/InputDevices/res/values-bn/strings.xml
index 369a803..da529e1 100644
--- a/packages/InputDevices/res/values-bn/strings.xml
+++ b/packages/InputDevices/res/values-bn/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"সার্বিয়ান (সিরিলিক)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"মন্টেনেগ্রিন (সিরিলিক)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"রোমানিয়ান"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ইংরাজি (ভারত)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml
index bbf3946..8b05b49 100644
--- a/packages/InputDevices/res/values-ca/strings.xml
+++ b/packages/InputDevices/res/values-ca/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbi (ciríl·lic)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrí (ciríl·lic)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanès"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Anglès (Índia)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml
index 00a2a620..a9925ad 100644
--- a/packages/InputDevices/res/values-da/strings.xml
+++ b/packages/InputDevices/res/values-da/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisk (kyrillisk)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrinsk (kyrillisk)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumænsk"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Engelsk (Indien)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml
index 717c597..9bd23eb 100644
--- a/packages/InputDevices/res/values-de/strings.xml
+++ b/packages/InputDevices/res/values-de/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisch (kyrillisch)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrinisch (kyrillisch)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumänisch"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Englisch (Indien)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-el/strings.xml b/packages/InputDevices/res/values-el/strings.xml
index 02b7f1f..cf49339 100644
--- a/packages/InputDevices/res/values-el/strings.xml
+++ b/packages/InputDevices/res/values-el/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Σερβικά (Κυριλλικά)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Μαυροβουνιακά (Κυριλλικά)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Ρουμανικά"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Αγγλικά (Ινδίας)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-en-rAU/strings.xml b/packages/InputDevices/res/values-en-rAU/strings.xml
index 1cdcc55..3b8c50d 100644
--- a/packages/InputDevices/res/values-en-rAU/strings.xml
+++ b/packages/InputDevices/res/values-en-rAU/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"English (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-en-rGB/strings.xml b/packages/InputDevices/res/values-en-rGB/strings.xml
index 1cdcc55..3b8c50d 100644
--- a/packages/InputDevices/res/values-en-rGB/strings.xml
+++ b/packages/InputDevices/res/values-en-rGB/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"English (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-en-rIN/strings.xml b/packages/InputDevices/res/values-en-rIN/strings.xml
index 1cdcc55..3b8c50d 100644
--- a/packages/InputDevices/res/values-en-rIN/strings.xml
+++ b/packages/InputDevices/res/values-en-rIN/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"English (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml
index edd7657..48ccb8de 100644
--- a/packages/InputDevices/res/values-es-rUS/strings.xml
+++ b/packages/InputDevices/res/values-es-rUS/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumano"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Inglés (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-es/strings.xml b/packages/InputDevices/res/values-es/strings.xml
index b522845..ef73625 100644
--- a/packages/InputDevices/res/values-es/strings.xml
+++ b/packages/InputDevices/res/values-es/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumano"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Inglés (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-et/strings.xml b/packages/InputDevices/res/values-et/strings.xml
index 82670dd..2289197 100644
--- a/packages/InputDevices/res/values-et/strings.xml
+++ b/packages/InputDevices/res/values-et/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbia (kirillitsa)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegro (kirillitsa)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumeenia"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"inglise (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-eu/strings.xml b/packages/InputDevices/res/values-eu/strings.xml
index b777b8c..0fe3b57 100644
--- a/packages/InputDevices/res/values-eu/strings.xml
+++ b/packages/InputDevices/res/values-eu/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbiarra (zirilikoa)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegroarra (zirilikoa)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Errumaniera"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Ingelesa (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml
index 9ec7a34..16b9ad4 100644
--- a/packages/InputDevices/res/values-fa/strings.xml
+++ b/packages/InputDevices/res/values-fa/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"صربی (سیریلیک)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"مونتهنگرویی (سیریلیک)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"رومانیایی"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"انگلیسی (هند)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml
index 6825ea9..0d8bd06 100644
--- a/packages/InputDevices/res/values-fi/strings.xml
+++ b/packages/InputDevices/res/values-fi/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbia (kyrillinen)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegro (kyrillinen)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"romania"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"englanti (Intia)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-fr/strings.xml b/packages/InputDevices/res/values-fr/strings.xml
index fb4d144..bdb0d02 100644
--- a/packages/InputDevices/res/values-fr/strings.xml
+++ b/packages/InputDevices/res/values-fr/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbe (cyrillique)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monténégrin (cyrillique)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roumain"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Anglais (Inde)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-gl/strings.xml b/packages/InputDevices/res/values-gl/strings.xml
index 925adf9..c62abba 100644
--- a/packages/InputDevices/res/values-gl/strings.xml
+++ b/packages/InputDevices/res/values-gl/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanés"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Inglés (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-hi/strings.xml b/packages/InputDevices/res/values-hi/strings.xml
index 1751979..bf3bd9a 100644
--- a/packages/InputDevices/res/values-hi/strings.xml
+++ b/packages/InputDevices/res/values-hi/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियन (सिरिलिक)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मोंटेनेग्रिन (सिरिलिक)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"रोमेनियन"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"अंग्रेज़ी (भारत)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml
index c83ba84..6b4259a 100644
--- a/packages/InputDevices/res/values-hu/strings.xml
+++ b/packages/InputDevices/res/values-hu/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"szerb (cirill betűs)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegrói (cirill betűs)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"román"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"angol (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml
index 718f8d1..43153fa 100644
--- a/packages/InputDevices/res/values-hy/strings.xml
+++ b/packages/InputDevices/res/values-hy/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"սերբերեն (կյուրեղատառ)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"չեռնոգորերեն (կյուրեղատառ)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Ռումիներեն"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"անգլերեն (Հնդկաստան)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-in/strings.xml b/packages/InputDevices/res/values-in/strings.xml
index ba2e5bd3..1aa1b2b 100644
--- a/packages/InputDevices/res/values-in/strings.xml
+++ b/packages/InputDevices/res/values-in/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbia (Sirilik)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegro (Sirilik)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumania"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Inggris (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-is/strings.xml b/packages/InputDevices/res/values-is/strings.xml
index 842119d..9547882 100644
--- a/packages/InputDevices/res/values-is/strings.xml
+++ b/packages/InputDevices/res/values-is/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbneska (kyrillískt)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Svartfellska (kyrillískt)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"rúmenska"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Enska (Indland)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml
index f7f76e0..090397d 100644
--- a/packages/InputDevices/res/values-it/strings.xml
+++ b/packages/InputDevices/res/values-it/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbo (cirillico)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirillico)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumeno"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Inglese (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml
index 0df5d20..b0faa6e 100644
--- a/packages/InputDevices/res/values-iw/strings.xml
+++ b/packages/InputDevices/res/values-iw/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"סרבית (אותיות קיריליות)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"מונטנגרית (אותיות קיריליות)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"רומנית"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"אנגלית (הודו)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-kk/strings.xml b/packages/InputDevices/res/values-kk/strings.xml
index 60ad838..05f9243 100644
--- a/packages/InputDevices/res/values-kk/strings.xml
+++ b/packages/InputDevices/res/values-kk/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербия (кириллица)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногория (кириллица)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румын"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Ағылшын (Үндістан)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-km/strings.xml b/packages/InputDevices/res/values-km/strings.xml
index 936c925..03a3a43 100644
--- a/packages/InputDevices/res/values-km/strings.xml
+++ b/packages/InputDevices/res/values-km/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"សែប៊ី (ស៊ីរីលីក)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ម៉ុងតេណេហ្គ្រោ (ស៊ីរីលីក)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"រ៉ូម៉ានី"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"អង់គ្លេស (ឥណ្ឌា)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-kn/strings.xml b/packages/InputDevices/res/values-kn/strings.xml
index 2453951..f4f4fa4 100644
--- a/packages/InputDevices/res/values-kn/strings.xml
+++ b/packages/InputDevices/res/values-kn/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ಸೆರ್ಬಿಯನ್ (ಸಿರಿಲಿಕ್)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ಮೊಂಟೆನೆಗ್ರಿನ್ (ಸಿರಿಲಿಕ್)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"ರೊಮೇನಿಯನ್"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ಇಂಗ್ಲಿಷ್ (ಭಾರತ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ky/strings.xml b/packages/InputDevices/res/values-ky/strings.xml
index f6d018e..2222900 100644
--- a/packages/InputDevices/res/values-ky/strings.xml
+++ b/packages/InputDevices/res/values-ky/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербче (Кирилл)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногориялыкча (Кирилл)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румынча"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Англисче (Индия)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-lo/strings.xml b/packages/InputDevices/res/values-lo/strings.xml
index 61f8f71..44380b0 100644
--- a/packages/InputDevices/res/values-lo/strings.xml
+++ b/packages/InputDevices/res/values-lo/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ເຊີບຽນ (ຊີຣິວລິກ)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ມອນເທເນກຣິນ (ຊີຣິວລິກ)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"ໂຣມານຽນ"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ອັງກິດ (ອິນເດຍ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml
index cc2c94c..3a55b6a 100644
--- a/packages/InputDevices/res/values-lv/strings.xml
+++ b/packages/InputDevices/res/values-lv/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbu (kirilica)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Melnkalniešu (kirilica)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumāņu"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Angļu (Indija)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-mk/strings.xml b/packages/InputDevices/res/values-mk/strings.xml
index 60981d6..351ac94 100644
--- a/packages/InputDevices/res/values-mk/strings.xml
+++ b/packages/InputDevices/res/values-mk/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"српски (кирилица)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"црногорски (кирилица)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"романски"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"англиски (Индија)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ml/strings.xml b/packages/InputDevices/res/values-ml/strings.xml
index 8064c74..ed6cb8b7 100644
--- a/packages/InputDevices/res/values-ml/strings.xml
+++ b/packages/InputDevices/res/values-ml/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"സെർബിയൻ (സിറിലിക്)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"മോണ്ടിനെഗ്രിൻ (സിറിലിക്)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"റൊമേനിയൻ"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ഇംഗ്ലീഷ് (ഇന്ത്യ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-mn/strings.xml b/packages/InputDevices/res/values-mn/strings.xml
index 547ce49..e77551e 100644
--- a/packages/InputDevices/res/values-mn/strings.xml
+++ b/packages/InputDevices/res/values-mn/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Серби (кирилл)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Монтенегро (кирилл)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румын"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Англи хэл (Энэтхэг)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-mr/strings.xml b/packages/InputDevices/res/values-mr/strings.xml
index 25bdfab..9483a47 100644
--- a/packages/InputDevices/res/values-mr/strings.xml
+++ b/packages/InputDevices/res/values-mr/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियन (सिरिलिक)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मॉन्टेनेग्रिन (सिरिलिक)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"रोमानियन"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"इंग्रजी (भारत)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-my/strings.xml b/packages/InputDevices/res/values-my/strings.xml
index 4ef5aab..1325470 100644
--- a/packages/InputDevices/res/values-my/strings.xml
+++ b/packages/InputDevices/res/values-my/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ဆားဘီးယား (စီရီလစ်)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"မွန်တီနီဂရင်း (စီရီလစ်)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"ရိုမေးနီးယား"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"အင်္ဂလိပ် (အိန္ဒိယ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml
index 837e246..e6c0826 100644
--- a/packages/InputDevices/res/values-nb/strings.xml
+++ b/packages/InputDevices/res/values-nb/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisk (kyrillisk)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrisk (kyrillisk)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumensk"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Engelsk (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ne/strings.xml b/packages/InputDevices/res/values-ne/strings.xml
index 0ab1ea6..bc2d0bfa 100644
--- a/packages/InputDevices/res/values-ne/strings.xml
+++ b/packages/InputDevices/res/values-ne/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियाली (सिरिलिक)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मोन्टेनिग्रिन (सिरिलिक)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"रोमानियाली"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"अङ्ग्रेजी (भारत)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-or/strings.xml b/packages/InputDevices/res/values-or/strings.xml
index 97f9088..7606b6f 100644
--- a/packages/InputDevices/res/values-or/strings.xml
+++ b/packages/InputDevices/res/values-or/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ସର୍ବିଆନ (ସିରିଲିକ)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ମଣ୍ଟେନେଗ୍ରିନ (ସିରିଲିକ)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"ରୋମାନିଆନ"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ଇଂରାଜୀ (ଭାରତ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-pl/strings.xml b/packages/InputDevices/res/values-pl/strings.xml
index 0fd962b..7f4b58f 100644
--- a/packages/InputDevices/res/values-pl/strings.xml
+++ b/packages/InputDevices/res/values-pl/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbski (cyrylica)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"czarnogórski (cyrylica)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumuński"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Angielski (Indie)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml
index 169378d..a416a48 100644
--- a/packages/InputDevices/res/values-ro/strings.xml
+++ b/packages/InputDevices/res/values-ro/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sârbă (caractere chirilice)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Muntenegreană (Chirilică)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Română"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Engleză (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-si/strings.xml b/packages/InputDevices/res/values-si/strings.xml
index ba27136..2d5ffc3 100644
--- a/packages/InputDevices/res/values-si/strings.xml
+++ b/packages/InputDevices/res/values-si/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"සර්බියානු (සිරිලික්)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"මොන්ටෙනේග්රීන් (සිරිලික්)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"රුමේනියානු"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ඉංග්රීසි (ඉන්දියාව)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-sq/strings.xml b/packages/InputDevices/res/values-sq/strings.xml
index c77de92..97ab5f9 100644
--- a/packages/InputDevices/res/values-sq/strings.xml
+++ b/packages/InputDevices/res/values-sq/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisht (cirilike)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Malazisht (cirilike)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumanisht"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Anglisht (Indi)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml
index d9ac91f8..fd8b845 100644
--- a/packages/InputDevices/res/values-sw/strings.xml
+++ b/packages/InputDevices/res/values-sw/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Kiserbia (Kisiriliki)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Kimontenegri (Kisiriliki)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Kiromania"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Kiingereza (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ta/strings.xml b/packages/InputDevices/res/values-ta/strings.xml
index fc91d696..0bf41fe 100644
--- a/packages/InputDevices/res/values-ta/strings.xml
+++ b/packages/InputDevices/res/values-ta/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"செர்பியன் (சிரிலிக்)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"மாண்டினெக்ரன் (சிரிலிக்)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"ரோமானியன்"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ஆங்கிலம் (இந்தியா)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-tl/strings.xml b/packages/InputDevices/res/values-tl/strings.xml
index ea815d5..270331d 100644
--- a/packages/InputDevices/res/values-tl/strings.xml
+++ b/packages/InputDevices/res/values-tl/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"English (India)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml
index 3a40c84..1d1d4e1 100644
--- a/packages/InputDevices/res/values-tr/strings.xml
+++ b/packages/InputDevices/res/values-tr/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sırpça (Kiril)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Karadağca (Kiril)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumence"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"İngilizce (Hindistan)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml
index 0e0d562..70f731d 100644
--- a/packages/InputDevices/res/values-uk/strings.xml
+++ b/packages/InputDevices/res/values-uk/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербська (кирилиця)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Чорногорська (кирилиця)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румунська"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Англійська (Індія)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ur/strings.xml b/packages/InputDevices/res/values-ur/strings.xml
index 44721b8..07e3835 100644
--- a/packages/InputDevices/res/values-ur/strings.xml
+++ b/packages/InputDevices/res/values-ur/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"سربیائی (سیریلک)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"مونٹے نیگریائی (سیریلک)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"رومانیائی"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"انگریزی (ہندوستان)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-uz/strings.xml b/packages/InputDevices/res/values-uz/strings.xml
index 776c1c7..b44820a 100644
--- a/packages/InputDevices/res/values-uz/strings.xml
+++ b/packages/InputDevices/res/values-uz/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serb (kirill)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Chernogor (kirill)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumin"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Ingliz (Hindiston)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-vi/strings.xml b/packages/InputDevices/res/values-vi/strings.xml
index 1fcba42..3f9de67 100644
--- a/packages/InputDevices/res/values-vi/strings.xml
+++ b/packages/InputDevices/res/values-vi/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Tiếng Serbia (Chữ Kirin)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Tiếng Montenegro (Chữ Kirin)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"Tiếng Romania"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Tiếng Anh (Ấn Độ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml
index cb7f6cb..bf37dc5 100644
--- a/packages/InputDevices/res/values-zh-rCN/strings.xml
+++ b/packages/InputDevices/res/values-zh-rCN/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞尔维亚语(西里尔字母)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"黑山语(西里尔字母)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"罗马尼亚语"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"英语(印度)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml
index c718760..c30c972 100644
--- a/packages/InputDevices/res/values-zh-rHK/strings.xml
+++ b/packages/InputDevices/res/values-zh-rHK/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞爾維亞文 (西里爾字母)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"蒙特內哥羅文 (西里爾字母)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"羅馬尼亞文"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"英文 (印度)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml
index 68cf9b0..b840b1c 100644
--- a/packages/InputDevices/res/values-zh-rTW/strings.xml
+++ b/packages/InputDevices/res/values-zh-rTW/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞爾維亞文 (西里爾字母)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"蒙特內哥羅文 (西里爾字母)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"羅馬尼亞文"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"英文 (印度)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml
index 4ae9e47..bc79dbd 100644
--- a/packages/InputDevices/res/values-zu/strings.xml
+++ b/packages/InputDevices/res/values-zu/strings.xml
@@ -57,6 +57,5 @@
<string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
<string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
<string name="keyboard_layout_romanian" msgid="8698989892731726903">"IsiRomanian"</string>
- <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
- <skip />
+ <string name="keyboard_layout_english_india" msgid="7962353311188603367">"IsiNgisi (India)"</string>
</resources>
diff --git a/packages/SettingsLib/ActionButtonsPreference/res/layout-v35/settingslib_expressive_action_buttons.xml b/packages/SettingsLib/ActionButtonsPreference/res/layout-v36/settingslib_expressive_action_buttons.xml
similarity index 100%
rename from packages/SettingsLib/ActionButtonsPreference/res/layout-v35/settingslib_expressive_action_buttons.xml
rename to packages/SettingsLib/ActionButtonsPreference/res/layout-v36/settingslib_expressive_action_buttons.xml
diff --git a/packages/SettingsLib/ActionButtonsPreference/res/values-v35/styles_expressive.xml b/packages/SettingsLib/ActionButtonsPreference/res/values-v36/styles_expressive.xml
similarity index 100%
rename from packages/SettingsLib/ActionButtonsPreference/res/values-v35/styles_expressive.xml
rename to packages/SettingsLib/ActionButtonsPreference/res/values-v36/styles_expressive.xml
diff --git a/packages/SettingsLib/BannerMessagePreference/res/drawable-v35/settingslib_expressive_card_background.xml b/packages/SettingsLib/BannerMessagePreference/res/drawable-v36/settingslib_expressive_card_background.xml
similarity index 100%
rename from packages/SettingsLib/BannerMessagePreference/res/drawable-v35/settingslib_expressive_card_background.xml
rename to packages/SettingsLib/BannerMessagePreference/res/drawable-v36/settingslib_expressive_card_background.xml
diff --git a/packages/SettingsLib/BannerMessagePreference/res/drawable-v35/settingslib_resolved_banner_avd.xml b/packages/SettingsLib/BannerMessagePreference/res/drawable-v36/settingslib_resolved_banner_avd.xml
similarity index 100%
rename from packages/SettingsLib/BannerMessagePreference/res/drawable-v35/settingslib_resolved_banner_avd.xml
rename to packages/SettingsLib/BannerMessagePreference/res/drawable-v36/settingslib_resolved_banner_avd.xml
diff --git a/packages/SettingsLib/BannerMessagePreference/res/layout-v35/settingslib_expressive_banner_message.xml b/packages/SettingsLib/BannerMessagePreference/res/layout-v36/settingslib_expressive_banner_message.xml
similarity index 100%
rename from packages/SettingsLib/BannerMessagePreference/res/layout-v35/settingslib_expressive_banner_message.xml
rename to packages/SettingsLib/BannerMessagePreference/res/layout-v36/settingslib_expressive_banner_message.xml
diff --git a/packages/SettingsLib/BannerMessagePreference/res/values-v35/styles_expressive.xml b/packages/SettingsLib/BannerMessagePreference/res/values-v36/styles_expressive.xml
similarity index 100%
rename from packages/SettingsLib/BannerMessagePreference/res/values-v35/styles_expressive.xml
rename to packages/SettingsLib/BannerMessagePreference/res/values-v36/styles_expressive.xml
diff --git a/packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_filled.xml b/packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_filled.xml
similarity index 100%
rename from packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_filled.xml
rename to packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_filled.xml
diff --git a/packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_filled_extra.xml b/packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_filled_extra.xml
similarity index 100%
rename from packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_filled_extra.xml
rename to packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_filled_extra.xml
diff --git a/packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_filled_large.xml b/packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_filled_large.xml
similarity index 100%
rename from packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_filled_large.xml
rename to packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_filled_large.xml
diff --git a/packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_outline.xml b/packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_outline.xml
similarity index 100%
rename from packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_outline.xml
rename to packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_outline.xml
diff --git a/packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_outline_extra.xml b/packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_outline_extra.xml
similarity index 100%
rename from packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_outline_extra.xml
rename to packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_outline_extra.xml
diff --git a/packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_outline_large.xml b/packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_outline_large.xml
similarity index 100%
rename from packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_outline_large.xml
rename to packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_outline_large.xml
diff --git a/packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_tonal.xml b/packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_tonal.xml
similarity index 100%
rename from packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_tonal.xml
rename to packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_tonal.xml
diff --git a/packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_tonal_extra.xml b/packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_tonal_extra.xml
similarity index 100%
rename from packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_tonal_extra.xml
rename to packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_tonal_extra.xml
diff --git a/packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_tonal_large.xml b/packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_tonal_large.xml
similarity index 100%
rename from packages/SettingsLib/ButtonPreference/res/layout-v35/settingslib_expressive_button_tonal_large.xml
rename to packages/SettingsLib/ButtonPreference/res/layout-v36/settingslib_expressive_button_tonal_large.xml
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/drawable-v35/settingslib_expressive_icon_back.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/drawable-v36/settingslib_expressive_icon_back.xml
similarity index 100%
rename from packages/SettingsLib/CollapsingToolbarBaseActivity/res/drawable-v35/settingslib_expressive_icon_back.xml
rename to packages/SettingsLib/CollapsingToolbarBaseActivity/res/drawable-v36/settingslib_expressive_icon_back.xml
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v35/settingslib_expressive_collapsing_toolbar_base_layout.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v36/settingslib_expressive_collapsing_toolbar_base_layout.xml
similarity index 100%
rename from packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v35/settingslib_expressive_collapsing_toolbar_base_layout.xml
rename to packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v36/settingslib_expressive_collapsing_toolbar_base_layout.xml
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v35/settingslib_expressive_collapsing_toolbar_content_layout.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v36/settingslib_expressive_collapsing_toolbar_content_layout.xml
similarity index 100%
rename from packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v35/settingslib_expressive_collapsing_toolbar_content_layout.xml
rename to packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v36/settingslib_expressive_collapsing_toolbar_content_layout.xml
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-night-v35/themes.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-night-v36/themes.xml
similarity index 100%
rename from packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-night-v35/themes.xml
rename to packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-night-v36/themes.xml
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/styles.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v36/styles.xml
similarity index 100%
rename from packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/styles.xml
rename to packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v36/styles.xml
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/styles_expressive.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v36/styles_expressive.xml
similarity index 100%
rename from packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/styles_expressive.xml
rename to packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v36/styles_expressive.xml
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/themes.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v36/themes.xml
similarity index 100%
rename from packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/themes.xml
rename to packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v36/themes.xml
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/themes_expressive.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v36/themes_expressive.xml
similarity index 100%
rename from packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/themes_expressive.xml
rename to packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v36/themes_expressive.xml
diff --git a/packages/SettingsLib/MainSwitchPreference/res/color-night-v35/settingslib_main_switch_text_color.xml b/packages/SettingsLib/MainSwitchPreference/res/color-night-v36/settingslib_main_switch_text_color.xml
similarity index 100%
rename from packages/SettingsLib/MainSwitchPreference/res/color-night-v35/settingslib_main_switch_text_color.xml
rename to packages/SettingsLib/MainSwitchPreference/res/color-night-v36/settingslib_main_switch_text_color.xml
diff --git a/packages/SettingsLib/MainSwitchPreference/res/color-v35/settingslib_main_switch_text_color.xml b/packages/SettingsLib/MainSwitchPreference/res/color-v36/settingslib_main_switch_text_color.xml
similarity index 100%
rename from packages/SettingsLib/MainSwitchPreference/res/color-v35/settingslib_main_switch_text_color.xml
rename to packages/SettingsLib/MainSwitchPreference/res/color-v36/settingslib_main_switch_text_color.xml
diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable-v35/settingslib_expressive_switch_bar_bg.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable-v36/settingslib_expressive_switch_bar_bg.xml
similarity index 100%
rename from packages/SettingsLib/MainSwitchPreference/res/drawable-v35/settingslib_expressive_switch_bar_bg.xml
rename to packages/SettingsLib/MainSwitchPreference/res/drawable-v36/settingslib_expressive_switch_bar_bg.xml
diff --git a/packages/SettingsLib/MainSwitchPreference/res/layout-v35/settingslib_expressive_main_switch_bar.xml b/packages/SettingsLib/MainSwitchPreference/res/layout-v36/settingslib_expressive_main_switch_bar.xml
similarity index 100%
rename from packages/SettingsLib/MainSwitchPreference/res/layout-v35/settingslib_expressive_main_switch_bar.xml
rename to packages/SettingsLib/MainSwitchPreference/res/layout-v36/settingslib_expressive_main_switch_bar.xml
diff --git a/packages/SettingsLib/MainSwitchPreference/res/layout-v35/settingslib_expressive_main_switch_layout.xml b/packages/SettingsLib/MainSwitchPreference/res/layout-v36/settingslib_expressive_main_switch_layout.xml
similarity index 100%
rename from packages/SettingsLib/MainSwitchPreference/res/layout-v35/settingslib_expressive_main_switch_layout.xml
rename to packages/SettingsLib/MainSwitchPreference/res/layout-v36/settingslib_expressive_main_switch_layout.xml
diff --git a/packages/SettingsLib/ProfileSelector/res/color-night-v35/settingslib_tabs_indicator_color.xml b/packages/SettingsLib/ProfileSelector/res/color-night-v36/settingslib_tabs_indicator_color.xml
similarity index 100%
rename from packages/SettingsLib/ProfileSelector/res/color-night-v35/settingslib_tabs_indicator_color.xml
rename to packages/SettingsLib/ProfileSelector/res/color-night-v36/settingslib_tabs_indicator_color.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/color-night-v35/settingslib_switch_track_outline_color.xml b/packages/SettingsLib/SettingsTheme/res/color-night-v36/settingslib_switch_track_outline_color.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/color-night-v35/settingslib_switch_track_outline_color.xml
rename to packages/SettingsLib/SettingsTheme/res/color-night-v36/settingslib_switch_track_outline_color.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_expressive_color_main_switch_track.xml b/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_expressive_color_main_switch_track.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_expressive_color_main_switch_track.xml
rename to packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_expressive_color_main_switch_track.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_preference_bg_color.xml b/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_preference_bg_color.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_preference_bg_color.xml
rename to packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_preference_bg_color.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_switch_track_outline_color.xml b/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_switch_track_outline_color.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_switch_track_outline_color.xml
rename to packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_switch_track_outline_color.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_text_color_primary.xml b/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_text_color_primary.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_text_color_primary.xml
rename to packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_text_color_primary.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_text_color_secondary.xml b/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_text_color_secondary.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/color-v35/settingslib_text_color_secondary.xml
rename to packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_text_color_secondary.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_arrow_drop_down.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_arrow_drop_down.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_arrow_drop_down.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_arrow_drop_down.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_list_divider.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_list_divider.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_list_divider.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_list_divider.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_progress_horizontal.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_progress_horizontal.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_progress_horizontal.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_progress_horizontal.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_bottom.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_bottom.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_bottom.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_bottom.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_bottom_highlighted.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_bottom_highlighted.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_bottom_highlighted.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_bottom_highlighted.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_bottom_selected.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_bottom_selected.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_bottom_selected.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_bottom_selected.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_center.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_center.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_center.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_center.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_center_highlighted.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_center_highlighted.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_center_highlighted.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_center_highlighted.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_center_selected.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_center_selected.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_center_selected.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_center_selected.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_highlighted.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_highlighted.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_highlighted.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_highlighted.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_selected.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_selected.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_selected.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_selected.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_top.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_top.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_top.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_top.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_top_highlighted.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_top_highlighted.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_top_highlighted.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_top_highlighted.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_top_selected.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_top_selected.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_round_background_top_selected.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_round_background_top_selected.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_spinner_background.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_spinner_background.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_spinner_background.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_spinner_background.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_spinner_dropdown_background.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_spinner_dropdown_background.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/drawable-v35/settingslib_spinner_dropdown_background.xml
rename to packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_spinner_dropdown_background.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/layout-v35/settingslib_expressive_preference.xml b/packages/SettingsLib/SettingsTheme/res/layout-v36/settingslib_expressive_preference.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/layout-v35/settingslib_expressive_preference.xml
rename to packages/SettingsLib/SettingsTheme/res/layout-v36/settingslib_expressive_preference.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/layout-v35/settingslib_expressive_preference_icon_frame.xml b/packages/SettingsLib/SettingsTheme/res/layout-v36/settingslib_expressive_preference_icon_frame.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/layout-v35/settingslib_expressive_preference_icon_frame.xml
rename to packages/SettingsLib/SettingsTheme/res/layout-v36/settingslib_expressive_preference_icon_frame.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/layout-v35/settingslib_expressive_preference_switch.xml b/packages/SettingsLib/SettingsTheme/res/layout-v36/settingslib_expressive_preference_switch.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/layout-v35/settingslib_expressive_preference_switch.xml
rename to packages/SettingsLib/SettingsTheme/res/layout-v36/settingslib_expressive_preference_switch.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/layout-v35/settingslib_expressive_two_target_divider.xml b/packages/SettingsLib/SettingsTheme/res/layout-v36/settingslib_expressive_two_target_divider.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/layout-v35/settingslib_expressive_two_target_divider.xml
rename to packages/SettingsLib/SettingsTheme/res/layout-v36/settingslib_expressive_two_target_divider.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/values-night-v35/colors.xml b/packages/SettingsLib/SettingsTheme/res/values-night-v36/colors.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/values-night-v35/colors.xml
rename to packages/SettingsLib/SettingsTheme/res/values-night-v36/colors.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v35/colors.xml b/packages/SettingsLib/SettingsTheme/res/values-v36/colors.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/values-v35/colors.xml
rename to packages/SettingsLib/SettingsTheme/res/values-v36/colors.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v35/dimens.xml b/packages/SettingsLib/SettingsTheme/res/values-v36/dimens.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/values-v35/dimens.xml
rename to packages/SettingsLib/SettingsTheme/res/values-v36/dimens.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v35/styles_expressive.xml b/packages/SettingsLib/SettingsTheme/res/values-v36/styles_expressive.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/values-v35/styles_expressive.xml
rename to packages/SettingsLib/SettingsTheme/res/values-v36/styles_expressive.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v35/styles_preference_expressive.xml b/packages/SettingsLib/SettingsTheme/res/values-v36/styles_preference_expressive.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/values-v35/styles_preference_expressive.xml
rename to packages/SettingsLib/SettingsTheme/res/values-v36/styles_preference_expressive.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v35/themes.xml b/packages/SettingsLib/SettingsTheme/res/values-v36/themes.xml
similarity index 94%
rename from packages/SettingsLib/SettingsTheme/res/values-v35/themes.xml
rename to packages/SettingsLib/SettingsTheme/res/values-v36/themes.xml
index b6e80c7..1c45ff6 100644
--- a/packages/SettingsLib/SettingsTheme/res/values-v35/themes.xml
+++ b/packages/SettingsLib/SettingsTheme/res/values-v36/themes.xml
@@ -16,7 +16,7 @@
-->
<resources>
- <style name="Theme.SettingsBase_v35" parent="Theme.SettingsBase_v33" >
+ <style name="Theme.SettingsBase_v36" parent="Theme.SettingsBase_v33" >
<item name="android:colorAccent">@color/settingslib_materialColorPrimary</item>
<item name="android:colorBackground">@color/settingslib_materialColorSurfaceContainer</item>
<item name="android:textColorPrimary">@color/settingslib_materialColorOnSurface</item>
@@ -27,5 +27,5 @@
<item name="android:clipChildren">false</item>
</style>
- <style name="Theme.SettingsBase" parent="Theme.SettingsBase_v35" />
+ <style name="Theme.SettingsBase" parent="Theme.SettingsBase_v36" />
</resources>
\ No newline at end of file
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v35/themes_expressive.xml b/packages/SettingsLib/SettingsTheme/res/values-v36/themes_expressive.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/values-v35/themes_expressive.xml
rename to packages/SettingsLib/SettingsTheme/res/values-v36/themes_expressive.xml
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v35/themes_preference_expressive.xml b/packages/SettingsLib/SettingsTheme/res/values-v36/themes_preference_expressive.xml
similarity index 100%
rename from packages/SettingsLib/SettingsTheme/res/values-v35/themes_preference_expressive.xml
rename to packages/SettingsLib/SettingsTheme/res/values-v36/themes_preference_expressive.xml
diff --git a/packages/SettingsLib/TwoTargetPreference/res/layout-v35/settingslib_expressive_preference_two_target.xml b/packages/SettingsLib/TwoTargetPreference/res/layout-v36/settingslib_expressive_preference_two_target.xml
similarity index 100%
rename from packages/SettingsLib/TwoTargetPreference/res/layout-v35/settingslib_expressive_preference_two_target.xml
rename to packages/SettingsLib/TwoTargetPreference/res/layout-v36/settingslib_expressive_preference_two_target.xml
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index dbc4e5a..dcad735 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Kon nie omgewing opdateer nie"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gastetoestel. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gastetoestel. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Gastetoestel (net media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gastetoestel (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Gekoppel (steun oudiodeling). 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_untethered_left_lea_support" msgid="7707464334346454950">"Gekoppel (steun oudiodeling). Links: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Gekoppel (steun oudiodeling). Regs: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Gekoppel (steun oudiodeling)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gastetoestel (steun oudiodeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gastetoestel (steun oudiodeling). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gastetoestel (steun oudiodeling)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktief (net media)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gastetoestel"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gastetoestel (net media)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Steun oudiodeling"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gastetoestel. Steun oudiodeling"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktief (net media), net linkerkant"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktief (net media), net regterkant"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktief (net media), linker- en regterkant"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardeware-versnelde lewering"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitering"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Vensterbestuur"</string>
<string name="strict_mode" msgid="889864762140862437">"Strengmodus geaktiveer"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Flits skerm as apps lang bewerkings uitvoer op die hoofdraad"</string>
<string name="pointer_location" msgid="7516929526199520173">"Wyserligging"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Stel WebView-implementering"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Hierdie keuse is nie meer geldig nie. Probeer weer."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Webaansig-Ontwikkelaarnutsgoed"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Webaansigpakket nie gevind nie."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Kon nie Ontwikkelaarnutsgoed begin nie."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Fotokleurmodus"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Gebruik sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Gedeaktiveer"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index bfe6006..dc6bd0f 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"በዙሪያ ያሉትን ማዘመን አልተቻለም"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"የእንግዳ መሣሪያ። <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"የእንግዳ መሣሪያ። ግ፦ <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_guest_media_only_battery_level" msgid="7928347900623812299">"የእንግዳ መሣሪያ (ሚዲያ ብቻ)። <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"የእንግዳ መሣሪያ (ሚዲያ ብቻ)። ግ፦ <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል) ግ፦ <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_untethered_left_lea_support" msgid="7707464334346454950">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል)። ግራ፦<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል)። ቀኝ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"የእንግዳ መሣሪያ (የድምፅ ማጋራትን ይደግፋል)። <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"የእንግዳ መሣሪያ (የድምፅ ማጋራትን ይደግፋል)። ግ፦ <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"የእንግዳ መሣሪያ (የድምፅ ማጋራትን ይደግፋል)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ገቢር (ሚዲያ ብቻ)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"የእንግዳ መሣሪያ"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"የእንግዳ መሣሪያ (ሚዲያ ብቻ)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ድምፅ ማጋራትን ይደግፋል"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"የእንግዳ መሣሪያ። የድምፅ ማጋራትን ይደግፋል"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ገቢር (ሚዲያ ብቻ)፣ ግራ ብቻ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ገቢር (ሚዲያ ብቻ) ቀኝ ብቻ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ገቢር (ሚዲያ ብቻ)፣ ግራ እና ቀኝ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"የተፋጠነ የሃርድዌር አሰጣጥ"</string>
<string name="media_category" msgid="8122076702526144053">"ማህደረመረጃ"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"ቁጥጥር"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"የመስኮት አስተዳደር"</string>
<string name="strict_mode" msgid="889864762140862437">"ጥብቅ ሁነታ ነቅቷል"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"መተግበሪያዎች ረጅም ክንውኖች ወደ ዋና ክሮች ሲያካሂዱ ማያላይ ብልጭ አድርግ።"</string>
<string name="pointer_location" msgid="7516929526199520173">"የአመልካች ሥፍራ"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"ይህ ምርጫ ከአሁን በኋላ የሚሰራ አይደለም። እንደገና ይሞክሩ።"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"የድር ዕይታ DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"የድር ዕይታ ጥቅል አልተገኘም።"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevToolsን ማስጀመር አልተቻለም።"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"የስዕል ቀለም ሁነታ"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ይጠቀሙ"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"ተሰናክሏል"</string>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 64a021d..e2487d7 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"تعذَّر تعديل حالة الأصوات المحيطة"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"جهاز ضيف. مستوى شحن البطارية: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"جهاز ضيف. اليسرى: <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_guest_media_only_battery_level" msgid="7928347900623812299">"جهاز ضيف (للوسائط فقط). مستوى شحن البطارية: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"جهاز ضيف (للوسائط فقط). اليسرى: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة). مستوى الشحن في سماعة الرأس اليسرى: <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_untethered_left_lea_support" msgid="7707464334346454950">"البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة). مستوى الشحن في سماعة الرأس اليسرى: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة). مستوى الشحن في سماعة الرأس اليمنى: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"جهاز ضيف (يوفِّر ميزة \"مشاركة الصوت\"). مستوى شحن البطارية: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"جهاز ضيف (يوفِّر ميزة \"مشاركة الصوت\"). اليسرى: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"جهاز ضيف (يوفِّر ميزة \"مشاركة الصوت\")"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"البلوتوث مفعَّل (للوسائط فقط)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"جهاز ضيف"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"جهاز ضيف (للوسائط فقط)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"تتوفّر ميزة \"مشاركة الصوت\""</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"جهاز ضيف. يوفِّر ميزة \"مشاركة الصوت\""</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"السماعة اليسرى فقط مشغَّلة (للوسائط فقط)"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"السماعة اليمنى فقط مشغَّلة (للوسائط فقط)"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"السماعتان اليسرى واليمنى مشغَّلتان (للوسائط فقط)"</string>
@@ -492,12 +482,9 @@
<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_toast_text" msgid="8512254949169359848">"لم يعد هذا الاختيار صالحًا. أعد المحاولة."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"أدوات مطوري البرامج في WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"تعذَّر العثور على حزمة WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"تعذَّر تشغيل \"أدوات مطوري البرامج\"."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"نمط لون الصورة"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"استخدام sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"غير مفعّل"</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index 82ee7f3..f95a66b 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"আশ-পাশ আপডে’ট কৰিব পৰা নগ’ল"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"অতিথিৰ ডিভাইচ। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"অতিথিৰ ডিভাইচ। বাওঁ: <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_guest_media_only_battery_level" msgid="7928347900623812299">"অতিথিৰ ডিভাইচ (কেৱল মিডিয়া)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"অতিথিৰ ডিভাইচ (কেৱল মিডিয়া)। বাওঁ: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে), বাওঁ: <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_untethered_left_lea_support" msgid="7707464334346454950">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে)। বাকী আছে: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে)। সোঁ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"অতিথিৰ ডিভাইচ (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"অতিথিৰ ডিভাইচ (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে)। বাওঁ: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"অতিথিৰ ডিভাইচ (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"অতিথিৰ ডিভাইচ"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"অতিথিৰ ডিভাইচ (কেৱল মিডিয়া)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"অতিথিৰ ডিভাইচ। অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া), কেৱল বাওঁ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া), কেৱল সোঁ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া), বাওঁ আৰু সোঁ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"হাৰ্ডৱেৰৰদ্বাৰা ত্বৰিত ৰেণ্ডাৰিং"</string>
<string name="media_category" msgid="8122076702526144053">"মিডিয়া"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"নিৰীক্ষণ কৰি থকা হৈছে"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ৱিণ্ড’ পৰিচালনা"</string>
<string name="strict_mode" msgid="889864762140862437">"কঠোৰ ম’ড সক্ষম কৰা হৈছে"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"যেতিয়া এপ্সমূহে মুখ্য থ্ৰেডত দীঘলীয়া কাৰ্যকলাপ চলায়, তেতিয়া স্ক্ৰীন ফ্লাশ্ব কৰক"</string>
<string name="pointer_location" msgid="7516929526199520173">"পইণ্টাৰৰ অৱস্থান"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"ৱেবভিউ প্ৰয়োগ"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"ৱেবভিউ প্ৰয়োগ ছেট কৰক"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"বাছনিটো এতিয়া আৰু মান্য় নহয়। আকৌ চেষ্টা কৰক।"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView পেকেজ বিচাৰি পোৱা নগ’ল।"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools লঞ্চ কৰিব পৰা নগ’ল।"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"চিত্ৰৰ ৰং ম’ড"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"এছআৰজিবি ব্যৱহাৰ কৰক"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"নিষ্ক্ৰিয় হৈ আছে"</string>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index aa93964..5e47ff9 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ətraf mühit güncəllənmədi"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Qonaq cihaz. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Qonaq cihaz. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Qonaq cihaz (yalnız media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Qonaq cihaz (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Qoşulub (audio paylaşma dəstəklənir). 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_untethered_left_lea_support" msgid="7707464334346454950">"Qoşulub (audio paylaşma dəstəklənir). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Qoşulub (audio paylaşma dəstəklənir). Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Qoşulub (audio paylaşma dəstəklənir)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Qonaq cihaz (auido paylaşma dəstəklənir). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Qonaq cihaz (auido paylaşma dəstəklənir). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Qonaq cihaz (audio paylaşma dəstəklənir)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (yalnız media)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Qonaq cihaz"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Qonaq cihaz (yalnız media)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Audio paylaşma dəstəklənir"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Qonaq cihaz. Audio paylaşma dəstəklənir"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (yalnız media), yalnız sol"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (yalnız media), yalnız sağ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (yalnız media), sol və sağ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderinq aparat sürətlənməsi"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorinq"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Pəncərə idarəetməsi"</string>
<string name="strict_mode" msgid="889864762140862437">"Ciddi rejim"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Uzun əməliyyatlar ərzində ekran işıqlandırılsın"</string>
<string name="pointer_location" msgid="7516929526199520173">"Kursor yeri"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView servisi"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView servisini ayarlayın"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Bu seçim artıq etibarlı deyil. Yenidən cəhd edin."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebGörüntü üzrə DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebGörüntü paketi tapılmadı."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools-u başlatmaq mümkün olmadı."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Şəkil rəng rejimi"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB istifadə edin"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Deaktiv"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 7f60500..cb62399 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ažuriranje okruženja nije uspelo"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Uređaj gosta. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Uređaj gosta. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Uređaj gosta (samo za medije). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Uređaj gosta (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Povezano (podržava deljenje zvuka), 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_untethered_left_lea_support" msgid="7707464334346454950">"Povezano (podržava deljenje zvuka). Levo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Povezano (podržava deljenje zvuka). Desno: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Povezano (podržava deljenje zvuka)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Uređaj gosta (podržava deljenje zvuka). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Uređaj gosta (podržava deljenje zvuka). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Uređaj gosta (podržava deljenje zvuka)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivan (samo za medije)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Uređaj gosta"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Uređaj gosta (samo za medije)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podržava deljenje zvuka"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Uređaj gosta. Podržava deljenje zvuka"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivan (samo za medije), samo levo"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivan (samo za medije), samo desno"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivan (samo za medije), levo i desno"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardverski ubrzano prikazivanje"</string>
<string name="media_category" msgid="8122076702526144053">"Mediji"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Nadgledanje"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Upravljanje prozorima"</string>
<string name="strict_mode" msgid="889864762140862437">"Omogućen je strogi režim"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Ekran treperi kada aplikacije obavljaju duge operacije na glavnoj niti"</string>
<string name="pointer_location" msgid="7516929526199520173">"Lokacija pokazivača"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Primena WebView-a"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Podesite primenu WebView-a"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ovaj izbor više nije važeći. Probajte ponovo."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView alatke za programere"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Paket za WebView nije pronađen."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Pokretanje alatki za programere nije uspelo."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Režim boja slika"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Koristi sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogućeno je"</string>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 50de924..ef66fb3 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Не ўдалося абнавіць стан навакольных гукаў"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Гасцявая прылада. Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Гасцявая прылада. Зарад акумулятара: <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_guest_media_only_battery_level" msgid="7928347900623812299">"Гасцявая прылада (толькі мультымедыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Гасцявая прылада (толькі мультымедыя). Зарад акумулятара: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Падключана (падтрымліваецца абагульванне аўдыя). Зарад акумулятара: <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_untethered_left_lea_support" msgid="7707464334346454950">"Падключана (падтрымліваецца абагульванне аўдыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (левы навушнік)."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Падключана (падтрымліваецца абагульванне аўдыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (правы навушнік)."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Падключана (падтрымліваецца абагульванне аўдыя)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Гасцявая прылада (падтрымлівае абагульванне аўдыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Гасцявая прылада (падтрымлівае абагульванне аўдыя). Зарад акумулятара: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Гасцявая прылада (падтрымлівае абагульванне аўдыя)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Выкарыстоўваецца (толькі для мультымедыя)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Гасцявая прылада"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Гасцявая прылада (толькі мультымедыя)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Падтрымліваецца абагульванне аўдыя"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Гасцявая прылада. Падтрымлівае абагульванне аўдыя."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Выкарыстоўваецца (толькі для мультымедыя), толькі левы навушнік"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Выкарыстоўваецца (толькі для мультымедыя), толькі правы навушнік"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Выкарыстоўваецца (толькі для мультымедыя), левы і правы навушнікі"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Апаратнае паскарэнне рэндэрынгу"</string>
<string name="media_category" msgid="8122076702526144053">"Медыя"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Маніторынг"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Кіраванне вокнамі"</string>
<string name="strict_mode" msgid="889864762140862437">"Уключаны строгі рэжым"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Падсвечваць экран падчас доўгіх аперацый"</string>
<string name="pointer_location" msgid="7516929526199520173">"Пазіцыя ўказальніка"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Гэты варыянт больш не даступны. Паспрабуйце яшчэ раз."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Інструменты распрацоўшчыка WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Пакет WebView не знойдзены."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Не ўдалося запусціць інструменты распрацоўшчыка."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Каляровы рэжым выявы"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Выкарыстоўваць sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Выключана"</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index c3c1783..69d6866 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Данните за околните звуци не бяха актуализирани"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Устройство на гост. Батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Устройство на гост. Л: батерия – <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_guest_media_only_battery_level" msgid="7928347900623812299">"Устройство на гост (само за мултимедия). Батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Устройство на гост (само за мултимедия). Л: батерия – <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Свързано (поддържа споделяне на звука). Л: батерия – <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_untethered_left_lea_support" msgid="7707464334346454950">"Свързано (поддържа споделяне на звука). За ляво ухо. Батерия: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Свързано (поддържа споделяне на звука). За дясно ухо. Батерия: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Свързано (поддържа споделяне на звука)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Устройство на гост (поддържа споделяне на звука). Батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Устройство на гост (поддържа споделяне на звука). Л: батерия – <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Устройство на гост (поддържа споделяне на звука)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активно (само за мултимедия)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Устройство на гост"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Устройство на гост (само за мултимедия)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Поддържа споделяне на звука"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Устройство на гост. Поддържа споделяне на звука"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активно (само за мултимедия), само лявата"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активно (само за мултимедия), само дясната"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активно (само за мултимедия), лявата и дясната"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Хардуерно ускорено изобразяване"</string>
<string name="media_category" msgid="8122076702526144053">"Мултимедия"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Наблюдение"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Управление на прозорците"</string>
<string name="strict_mode" msgid="889864762140862437">"Активиран строг режим"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Примигване на екрана при дълги операции в главната нишка"</string>
<string name="pointer_location" msgid="7516929526199520173">"Mестопол. на показалеца"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Този избор вече не е валиден. Опитайте отново."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools за WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Пакетът на WebView не е намерен."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools не се стартира."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Цветови режим за снимките"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Използване на sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Деактивирано"</string>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 93b6521..7e8e3fe 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"সারাউন্ডিং আপডেট করা যায়নি"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"অতিথি ডিভাইস। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"অতিথি ডিভাইস। বাঁদিক: <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_guest_media_only_battery_level" msgid="7928347900623812299">"অতিথি ডিভাইস (শুধুমাত্র মিডিয়া)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"অতিথি ডিভাইস (শুধুমাত্র মিডিয়া)। বাঁদিক: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে), বাঁদিক: <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_untethered_left_lea_support" msgid="7707464334346454950">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে)। বাঁদিক: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে)। ডানদিকে: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"অতিথি ডিভাইস (অডিও শেয়ারিং কাজ করে)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"অতিথি ডিভাইস (অডিও শেয়ারিং কাজ করে)। বাঁদিক: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"অতিথি ডিভাইস (অডিও শেয়ারিং কাজ করে)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"চালু আছে (শুধুমাত্র মিডিয়া)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"অতিথি ডিভাইস"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"অতিথি ডিভাইস (শুধুমাত্র মিডিয়া)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"অডিও শেয়ারিংয়ে কাজ করে"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"অতিথি ডিভাইস। অডিও শেয়ারিং কাজ করে"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"চালু আছে (শুধুমাত্র মিডিয়া), শুধুমাত্র বাঁদিক"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"চালু আছে (শুধুমাত্র মিডিয়া), শুধুমাত্র ডানদিক"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"চালু আছে (শুধুমাত্র মিডিয়া), বাঁদিক ও ডানদিক"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"হার্ডওয়্যার দ্বারা চালিত রেন্ডারিং"</string>
<string name="media_category" msgid="8122076702526144053">"মিডিয়া"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"পর্যবেক্ষণে রাখা"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"উইন্ডো ম্যানেজমেন্ট"</string>
<string name="strict_mode" msgid="889864762140862437">"স্ট্রিক্ট মোড চালু আছে"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"মুখ্য থ্রেডে অ্যাপগুলির দীর্ঘ কার্যকলাপের ক্ষেত্রে স্ক্রিন ফ্ল্যাশ করে"</string>
<string name="pointer_location" msgid="7516929526199520173">"পয়েন্টারের লোকেশন"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"ওয়েবভিউ প্রয়োগ"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"ওয়েবভিউ প্রয়োগ সেট করুন"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"এই পছন্দটি আর বৈধ নেই৷ আবার চেষ্টা করুন৷"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView প্রদানকারীর DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView প্যাকেজ পাওয়া যায়নি।"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools চালু করা যায়নি।"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"ছবি রঙ মোড"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ব্যবহার করুন"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"অক্ষম হয়েছে"</string>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index abb0775..d0b15d9e 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ažuriranje okruženja nije uspjelo"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gostujući uređaj. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gostujući uređ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_guest_media_only_battery_level" msgid="7928347900623812299">"Gostujući uređaj (samo za medijski sadržaj). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gostujući uređaj (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Povezano (podržava dijeljenje zvuka). 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_untethered_left_lea_support" msgid="7707464334346454950">"Povezano (podržava dijeljenje zvuka). Lijevo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Povezano (podržava dijeljenje zvuka). Desno: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Povezano (podržava dijeljenje zvuka)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gostujući uređaj (podržava dijeljenje zvuka). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gostujući uređaj (podržava dijeljenje zvuka). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gostujući uređaj (podržava dijeljenje zvuka)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivno (samo za medijski sadržaj)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gostujući uređaj"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gostujući uređaj (samo za medijski sadržaj)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podržava dijeljenje zvuka"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gostujući uređaj. Podržava dijeljenje zvuka"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivno (samo za medijski sadržaj), samo lijevo"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivno (samo za medijski sadržaj), samo desno"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivno (samo za medijski sadržaj), lijevo i desno"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardverski ubrzano prikazivanje"</string>
<string name="media_category" msgid="8122076702526144053">"Mediji"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Praćenje"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Upravljanje prozorima"</string>
<string name="strict_mode" msgid="889864762140862437">"Omogući strogi način rada"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Ekran bljeska kada aplikacije vrše duge operacije u glavnoj niti"</string>
<string name="pointer_location" msgid="7516929526199520173">"Lokacija pokazivača"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Postavljanje WebViewa"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Podesi WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ovaj izbor više ne vrijedi. Pokušajte ponovo."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Alati za programere za WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Paket WebViewa nije pronađen."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Pokretanje alata za programere nije uspjelo."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Način rada boja slika"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Koristi sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogućeno"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index ed49307c..283182c 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"No s\'ha pogut actualitzar l\'entorn"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Dispositiu convidat. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Dispositiu convidat. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Dispositiu convidat (només contingut multimèdia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Dispositiu convidat (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connectat (admet compartició d\'àudio), 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_untethered_left_lea_support" msgid="7707464334346454950">"Connectat (admet compartició d\'àudio). Esquerre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connectat (admet compartició d\'àudio). Dret: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connectat (admet compartició d\'àudio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Dispositiu convidat (admet compartició d\'àudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Dispositiu convidat (admet compartició d\'àudio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Dispositiu convidat (admet compartició d\'àudio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Actiu (només contingut multimèdia)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Dispositiu convidat"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Dispositiu convidat (només contingut multimèdia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Admet compartició d\'àudio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Dispositiu convidat. Admet compartició d\'àudio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Actiu (només contingut multimèdia), només esquerre"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Actiu (només contingut multimèdia), només dret"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Actiu (només contingut multimèdia), esquerre i dret"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderització accelerada per maquinari"</string>
<string name="media_category" msgid="8122076702526144053">"Multimèdia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisió"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gestió de finestres"</string>
<string name="strict_mode" msgid="889864762140862437">"Mode estricte activat"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Il·lumina la pantalla quan les aplicacions facin operacions llargues al fil principal"</string>
<string name="pointer_location" msgid="7516929526199520173">"Ubicació del punter"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementació de WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Estableix implementació de WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Aquesta opció ja no és vàlida. Torna-ho a provar."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools de WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"No s\'ha trobat el paquet de WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"No s\'ha pogut iniciar DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Mode de color de la imatge"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Utilitza sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desactivat"</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 7ea6e43..bc00d47 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Okolí se nepodařilo aktualizovat"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Zařízení hosta. Baterie: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Zařízení hosta. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Zařízení hosta (jen média). Baterie: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Zařízení hosta (jen 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Připojeno (podporuje sdílení zvuku), 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_untethered_left_lea_support" msgid="7707464334346454950">"Připojeno (podporuje sdílení zvuku). Levá strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterie"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Připojeno (podporuje sdílení zvuku). Pravá strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterie."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Připojeno (podporuje sdílení zvuku)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Zařízení hosta (podporuje sdílení zvuku). Baterie: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Zařízení hosta (podporuje sdílení zvuku). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Zařízení hosta (podporuje sdílení zvuku)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivní (pouze média)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Zařízení hosta"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Zařízení hosta (jen media)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podporuje sdílení zvuku"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Zařízení hosta. Podporuje sdílení zvuku"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivní (pouze média), pouze levé"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivní (pouze média), pouze pravé"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivní (pouze média), levé a pravé"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardwarově urychlené vykreslování"</string>
<string name="media_category" msgid="8122076702526144053">"Média"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Sledování"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Správa oken"</string>
<string name="strict_mode" msgid="889864762140862437">"Přísný režim aktivován"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Rozblikat obrazovku při dlouhých operacích hlavního vlákna"</string>
<string name="pointer_location" msgid="7516929526199520173">"Umístění ukazatele"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementace WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Nastavte implementaci WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Tato volba již není platná. Zkuste to znovu."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Nástroje pro vývojáře WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Balíček WebView nebyl nalezen."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Nástroje pro vývojáře nelze spustit."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Režim barev obrázku"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Použije se barevný prostor sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Vypnuto"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 4aad2a2..986c40f 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Omgivelserne kunne ikke opdateres"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gæsteenhed. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gæsteenhed. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Gæsteenhed (kun medier). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gæsteenhed (kun 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Forbundet (understøtter lyddeling), 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_untethered_left_lea_support" msgid="7707464334346454950">"Forbundet (understøtter lyddeling). Venstre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Forbundet (understøtter lyddeling). Højre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Forbundet (understøtter lyddeling)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gæsteenhed (understøtter lyddeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gæsteenhed (understøtter lyddeling). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gæsteenhed (understøtter lyddeling)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiveret (kun for medier)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gæsteenhed"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gæsteenhed (kun medier)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Understøtter lyddeling"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gæsteenhed. Understøtter lyddeling"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiveret (kun for medier), kun venstre"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiveret (kun for medier), kun højre"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiveret (kun for medier), venstre og højre"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware-accelereret gengivelse"</string>
<string name="media_category" msgid="8122076702526144053">"Medie"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Overvågning"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Administration af vinduer"</string>
<string name="strict_mode" msgid="889864762140862437">"Striks tilstand aktiveret"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Blink med skærmen, når apps foretager handlinger på hovedtråd"</string>
<string name="pointer_location" msgid="7516929526199520173">"Markørens lokation"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Konfigurer WebView-implementering"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Dette valg er ikke længere gyldigt. Prøv igen."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Udviklerværktøjer til Webvisning"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Pakken Webvisning blev ikke fundet."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Udviklerværktøjer kunne ikke åbnes."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Farvetilstand for billeder"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Brug sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Deaktiveret"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 55cae96..e7ffaa4 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Status der Umgebungsgeräusche konnte nicht aktualisiert werden"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gastgerät. Akku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gastgerät. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Gastgerät (nur Medien). Akku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gastgerät (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Verbunden (unterstützt Audiofreigabe). 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_untethered_left_lea_support" msgid="7707464334346454950">"Verbunden (unterstützt Audiofreigabe). Akku links: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Verbunden (unterstützt Audiofreigabe). Akku rechts: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Verbunden (unterstützt Audiofreigabe)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gastgerät (unterstützt Audiofreigabe). Akku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gastgerät (unterstützt Audiofreigabe). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gastgerät (unterstützt Audiofreigabe)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (nur Medien)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gastgerät"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gastgerät (nur Medien)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Unterstützt Audiofreigabe"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gastgerät. Unterstützt Audiofreigabe."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (nur Medien), nur links"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (nur Medien), nur rechts"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (nur Medien), links und rechts"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardwarebeschleunigtes Rendering"</string>
<string name="media_category" msgid="8122076702526144053">"Medien"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Fensterverwaltung"</string>
<string name="strict_mode" msgid="889864762140862437">"Strikter Modus aktiviert"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Bei langen App-Vorgängen im Hauptthread blinkt Bildschirm"</string>
<string name="pointer_location" msgid="7516929526199520173">"Zeigerposition"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-Implementierung"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView-Implementierung festlegen"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Diese Auswahl ist nicht mehr gültig. Bitte versuche es noch einmal."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView-Entwicklertools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Das WebView-Paket wurde nicht gefunden."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Die Entwicklertools konnten nicht gestartet werden."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Farbmodus für Bilder"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB verwenden"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Deaktiviert"</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 6b6b7fb..2fc0ff2 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Δεν ήταν δυνατή η ενημέρωση των ήχων περιβάλλοντος"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Συσκευή επισκέπτη. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Συσκευή επισκέπτη. Α: <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_guest_media_only_battery_level" msgid="7928347900623812299">"Συσκευή επισκέπτη (μόνο για μέσα). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Συσκευή επισκέπτη (μόνο για μέσα). Α: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου). Α: <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_untethered_left_lea_support" msgid="7707464334346454950">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου). Αριστερά: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου). Δεξιά: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Συσκευή επισκέπτη (υποστηρίζει κοινή χρήση ήχου). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Συσκευή επισκέπτη (υποστηρίζει κοινή χρήση ήχου). Α: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Συσκευή επισκέπτη (υποστηρίζει κοινή χρήση ήχου)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ενεργό (μόνο για μέσα)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Συσκευή επισκέπτη"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Συσκευή επισκέπτη (μόνο μέσα)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Υποστηρίζει κοινή χρήση ήχου"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Συσκευή επισκέπτη. Υποστηρίζει κοινή χρήση ήχου"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ενεργό (μόνο για μέσα), μόνο αριστερό"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ενεργό (μόνο για μέσα), μόνο δεξί"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ενεργό (μόνο για μέσα), αριστερό και δεξί"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Απόδοση με επιτάχυνση από υλικό εξοπλισμό"</string>
<string name="media_category" msgid="8122076702526144053">"Μέσα"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Παρακολούθηση"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Διαχείριση παραθύρων"</string>
<string name="strict_mode" msgid="889864762140862437">"Ενεργ. αυστηρής λειτουργ."</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Αναβ. οθόνη σε εκτέλεση μεγάλων λειτ.σε κύριο νήμα"</string>
<string name="pointer_location" msgid="7516929526199520173">"Θέση δείκτη"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Αυτή η επιλογή δεν είναι πια έγκυρη. Δοκιμάστε ξανά."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Εργαλεία για προγραμματιστές Προβολής στον ιστό"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Δεν βρέθηκε το πακέτο Προβολή στον ιστό."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Αδύνατη εκκίνηση Εργαλείων για προγραμματιστές."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Λειτουργία χρώματος εικόνας"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Χρήση sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Απενεργοποιημένο"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index a811960..34d6bf7 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -113,33 +113,23 @@
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Guest device. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Guest device. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Guest device (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Guest device (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connected (supports audio sharing). 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_untethered_left_lea_support" msgid="7707464334346454950">"Connected (supports audio sharing). Left: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connected (supports audio sharing). Right: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connected (supports audio sharing)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Guest device (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Guest device (supports audio sharing). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Guest device (supports audio sharing)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Active (media only)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Guest device"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Guest device (media only)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Supports audio sharing"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Guest device. Supports audio sharing"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Active (media only), left only"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Active (media only), right only"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Active (media only), left and right"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware accelerated rendering"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Window management"</string>
<string name="strict_mode" msgid="889864762140862437">"Strict mode enabled"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Flash screen when apps do long operations on main thread"</string>
<string name="pointer_location" msgid="7516929526199520173">"Pointer location"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Set WebView implementation"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"This choice is no longer valid. Try again."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView package not found."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Could not launch DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Picture colour mode"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Use sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Disabled"</string>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index a12b46c..1203437 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -386,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware accelerated rendering"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Window Management"</string>
<string name="strict_mode" msgid="889864762140862437">"Strict mode enabled"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Flash screen when apps do long operations on main thread"</string>
<string name="pointer_location" msgid="7516929526199520173">"Pointer location"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index a811960..34d6bf7 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -113,33 +113,23 @@
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Guest device. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Guest device. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Guest device (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Guest device (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connected (supports audio sharing). 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_untethered_left_lea_support" msgid="7707464334346454950">"Connected (supports audio sharing). Left: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connected (supports audio sharing). Right: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connected (supports audio sharing)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Guest device (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Guest device (supports audio sharing). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Guest device (supports audio sharing)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Active (media only)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Guest device"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Guest device (media only)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Supports audio sharing"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Guest device. Supports audio sharing"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Active (media only), left only"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Active (media only), right only"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Active (media only), left and right"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware accelerated rendering"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Window management"</string>
<string name="strict_mode" msgid="889864762140862437">"Strict mode enabled"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Flash screen when apps do long operations on main thread"</string>
<string name="pointer_location" msgid="7516929526199520173">"Pointer location"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Set WebView implementation"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"This choice is no longer valid. Try again."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView package not found."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Could not launch DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Picture colour mode"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Use sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Disabled"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index a811960..34d6bf7 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -113,33 +113,23 @@
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Guest device. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Guest device. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Guest device (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Guest device (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connected (supports audio sharing). 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_untethered_left_lea_support" msgid="7707464334346454950">"Connected (supports audio sharing). Left: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connected (supports audio sharing). Right: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connected (supports audio sharing)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Guest device (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Guest device (supports audio sharing). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Guest device (supports audio sharing)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Active (media only)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Guest device"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Guest device (media only)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Supports audio sharing"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Guest device. Supports audio sharing"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Active (media only), left only"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Active (media only), right only"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Active (media only), left and right"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware accelerated rendering"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Window management"</string>
<string name="strict_mode" msgid="889864762140862437">"Strict mode enabled"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Flash screen when apps do long operations on main thread"</string>
<string name="pointer_location" msgid="7516929526199520173">"Pointer location"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Set WebView implementation"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"This choice is no longer valid. Try again."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView package not found."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Could not launch DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Picture colour mode"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Use sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Disabled"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 6c3c98a..ca17178 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"No se pudo actualizar el sonido envolvente"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Dispositivo de invitado. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Dispositivo de invitado. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Dispositivo de invitado (solo para contenido multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Dispositivo de invitado (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (admite el uso compartido de audio); 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_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (admite el uso compartido de audio). Izquierdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (admite el uso compartido de audio). Derecho: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (admite el uso compartido de audio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Dispositivo de invitado (admite el uso compartido de audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Dispositivo de invitado (admite el uso compartido de audio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Dispositivo de invitado (admite el uso compartido de audio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activo (solo para contenido multimedia)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Dispositivo de invitado"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Dispositivo de invitado (solo para contenido multimedia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Admite el uso compartido de audio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Dispositivo de invitado. Admite el uso compartido de audio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activo (solo para contenido multimedia); solo izquierdo"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activo (solo para contenido multimedia); solo derecho"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activo (solo para contenido multimedia); izquierdo y derecho"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderización acelerada por hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisión"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Administración de ventanas"</string>
<string name="strict_mode" msgid="889864762140862437">"Modo estricto"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Parpadear si aplicaciones tardan en proceso principal"</string>
<string name="pointer_location" msgid="7516929526199520173">"Ubicación del puntero"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementación de WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Configurar la implementación de WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opción ya no es válida. Vuelve a intentarlo."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Herramientas para desarrolladores de WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"No se encontró el paquete WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"No se pudieron iniciar las Herramientas para desarrolladores."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Modo de color de la imagen"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Usa sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Inhabilitado"</string>
@@ -667,7 +653,7 @@
<string name="user_grant_admin_message" msgid="1673791931033486709">"Los administradores tienen privilegios especiales que no tienen otros usuarios. Un administrador puede administrar a todos los usuarios, actualizar o restablecer el dispositivo, modificar parámetros de configuración, ver todas las apps instaladas y otorgar o revocar privilegios de administrador de otros usuarios."</string>
<string name="user_grant_admin_button" msgid="5441486731331725756">"Convertir en administrador"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"¿Configurar el usuario ahora?"</string>
- <string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que la persona pueda acceder al dispositivo y configurar su espacio."</string>
+ <string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que la persona pueda acceder al dispositivo y configurar su espacio"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"¿Quieres configurar tu perfil ahora?"</string>
<string name="user_setup_button_setup_now" msgid="1708269547187760639">"Configurar ahora"</string>
<string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ahora no"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index b91c9b4..22e8b11 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"No se han podido actualizar los alrededores"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Dispositivo invitado. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Dispositivo invitado. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Dispositivo invitado (solo multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Dispositivo invitado (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (admite Compartir audio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (admite Compartir audio). Izquierdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (admite Compartir audio). Derecho: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (admite Compartir audio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Dispositivo invitado (admite Compartir audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Dispositivo invitado (admite Compartir audio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Dispositivo invitado (admite Compartir audio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activo (solo multimedia)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Dispositivo invitado"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Dispositivo invitado (solo multimedia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Permite compartir audio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Dispositivo invitado. Admite Compartir audio."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activo (solo multimedia), solo el izquierdo"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activo (solo multimedia), solo el derecho"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activo (solo multimedia), izquierdo y derecho"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderización acelerada por hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisión"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gestión de ventanas"</string>
<string name="strict_mode" msgid="889864762140862437">"Modo Estricto habilitado"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Hace parpadear la pantalla si las aplicaciones tardan mucho en el subproceso principal"</string>
<string name="pointer_location" msgid="7516929526199520173">"Ubicación del puntero"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementación de WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Establecer implementación de WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opción ya no está disponible. Vuelve a intentarlo."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools de WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"No se ha encontrado el paquete WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"No se ha podido iniciar DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Modo de color de imagen"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Utiliza sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Inhabilitado"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index 8c5d7fe..0de0197 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ümbritsevate helide seadeid ei saanud värskendada"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Külalisseade. Aku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Külalisseade. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Külalisseade (ainult meedia). Aku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Külalisseade (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ühendatud (toetab heli jagamist). 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_untethered_left_lea_support" msgid="7707464334346454950">"Ühendatud (toetab heli jagamist). Vasak: aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ühendatud (toetab heli jagamist). Parem: aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ühendatud (toetab heli jagamist)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Külalisseade (toetab heli jagamist). Aku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Külalisseade (toetab heli jagamist). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Külalisseade (toetab heli jagamist)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiivne (ainult meedia)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Külalisseade"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Külalisseade (ainult meedia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Toetab heli jagamist"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Külalisseade. Toetab heli jagamist."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiivne (ainult meedia), ainult vasak"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiivne (ainult meedia), ainult parem"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiivne (ainult meedia), vasak ja parem"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Riistvarakiirendusega renderdamine"</string>
<string name="media_category" msgid="8122076702526144053">"Meedia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Jälgimine"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Akende haldamine"</string>
<string name="strict_mode" msgid="889864762140862437">"Range režiim on lubatud"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Ekraan vilgub, kui rakendused teevad pealõimes pikki toiminguid"</string>
<string name="pointer_location" msgid="7516929526199520173">"Kursori asukoht"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView\' rakendamine"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView\' rakendamise seadistamine"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"See valik ei kehti enam. Proovige uuesti."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView\' arendaja tööriistad"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView\' paketti ei leitud."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Ei saanud arendaja tööriistu käivitada."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Pildi värvirežiim"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB kasutamine"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Keelatud"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index a1e4664..7a8bf56 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ezin izan da eguneratu ingurunea"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gailu gonbidatua. Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gailu gonbidatua. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Gailu gonbidatua (multimedia-edukia soilik). Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gailu gonbidatua (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Konektatuta (audioa partekatzeko eginbidea onartzen du). 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_untethered_left_lea_support" msgid="7707464334346454950">"Konektatuta (audioa partekatzeko eginbidea onartzen du). Ezkerreko aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Konektatuta (audioa partekatzeko eginbidea onartzen du). Eskuineko aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Konektatuta (audioa partekatzeko eginbidea onartzen du)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gailu gonbidatua (audioa partekatzeko eginbidea onartzen du). Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gailu gonbidatua (audioa partekatzeko eginbidea onartzen du). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gailu gonbidatua (audioa partekatzeko eginbidea onartzen du)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktibo (multimedia-edukia soilik)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gailu gonbidatua"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gailu gonbidatua (multimedia-edukia soilik)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Audioa partekatzeko eginbidea onartzen du"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gailu gonbidatua. Audioa partekatzeko eginbidea onartzen du."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktibo (multimedia-edukia soilik); ezkerreko aldea soilik"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktibo (multimedia-edukia soilik); eskuineko aldea soilik"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktibo (multimedia-edukia soilik); ezkerreko eta eskuineko aldeak"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware bidez azeleratutako errendatzea"</string>
<string name="media_category" msgid="8122076702526144053">"Multimedia-edukia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Kontrola"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Leihoen kudeaketa"</string>
<string name="strict_mode" msgid="889864762140862437">"Modu zorrotza gaituta"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Distirarazi hari nagusian eragiketa luzeak egitean"</string>
<string name="pointer_location" msgid="7516929526199520173">"Erakuslearen kokapena"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView inplementazioa"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ezarri WebView inplementazioa"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Jada ez dago erabilgarri aukera hori. Saiatu berriro."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView-ren garatzaileentzako tresnak"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Ez da aurkitu WebView-ko paketea."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Ezin izan dira abiarazi garatzaileentzako tresnak."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Irudiaren kolore modua"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Erabili sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desgaituta"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index c939180..9ba2f35 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"پیرامون بهروز نشد"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"دستگاه مهمان. سطح باتری: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"دستگاه مهمان. سطح باتری چپ: <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_guest_media_only_battery_level" msgid="7928347900623812299">"دستگاه مهمان (فقط رسانه). سطح باتری: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"دستگاه مهمان (فقط رسانه). سطح باتری چپ: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"متصل (از اشتراک صدا پشتیبانی میکند)، باتری چپ: <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_untethered_left_lea_support" msgid="7707464334346454950">"متصل (از اشتراک صدا پشتیبانی میکند). باتری چپ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"متصل (از اشتراک صدا پشتیبانی میکند). باتری راست: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"متصل (از اشتراک صدا پشتیبانی میکند)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"دستگاه مهمان (از «اشتراک صدا» پشتیبانی میکند). سطح باتری: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"دستگاه مهمان (از «اشتراک صدا» پشتیبانی میکند). سطح باتری چپ: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"دستگاه مهمان (از «اشتراک صدا» پشتیبانی میکند)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"فعال (فقط رسانه)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"دستگاه مهمان"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"دستگاه مهمان (فقط رسانه)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"از اشتراک صدا پشتیبانی میکند"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"دستگاه مهمان. از «اشتراک صدا» پشتیبانی میکند"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"فعال (فقط رسانه)، فقط چپ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"فعال (فقط رسانه)، فقط راست"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"فعال (فقط رسانه)، چپ و راست"</string>
@@ -157,7 +147,7 @@
<string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="2477639096903834374">"صدای HD"</string>
<string name="bluetooth_profile_hearing_aid" msgid="2607867572569689732">"سمعک"</string>
<string name="bluetooth_profile_le_audio" msgid="1725521360076451751">"صدای کممصرف"</string>
- <string name="bluetooth_hearing_aid_profile_summary_connected" msgid="5757754050938807276">"متصل به سمعک"</string>
+ <string name="bluetooth_hearing_aid_profile_summary_connected" msgid="5757754050938807276">"به سمعک وصلشده"</string>
<string name="bluetooth_le_audio_profile_summary_connected" msgid="6916226974453480650">"به «صدای کممصرف» وصل است"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="7422607970115444153">"به رسانه صوتی متصل شد"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="2420981566026949688">"به تلفن صوتی متصل شد"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"پردازش سختافزاری سریع"</string>
<string name="media_category" msgid="8122076702526144053">"رسانه"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"نظارت"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"مدیریت پنجره"</string>
<string name="strict_mode" msgid="889864762140862437">"حالت شدید فعال شد"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"چشمک زدن صفحه هنگام انجام عملیات طولانی توسط برنامهها در رشته اصلی"</string>
<string name="pointer_location" msgid="7516929526199520173">"محل اشارهگر"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"اجرای وبنما"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"تنظیم اجرای وبنما"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"این انتخاب دیگر معتبر نیست. دوباره امتحان کنید."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools وبنما"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"بسته وبنما پیدا نشد."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools راهاندازی نشد."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"حالت رنگ عکس"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"استفاده از sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"غیر فعال"</string>
@@ -620,7 +606,7 @@
<string name="media_transfer_this_device_name_tv" msgid="8508713779441163887">"این تلویزیون"</string>
<string name="media_transfer_dock_speaker_device_name" msgid="2856219597113881950">"بلندگوی پایه اتصال"</string>
<string name="media_transfer_external_device_name" msgid="2588672258721846418">"دستگاه خارجی"</string>
- <string name="media_transfer_default_device_name" msgid="4315604017399871828">"دستگاه متصل"</string>
+ <string name="media_transfer_default_device_name" msgid="4315604017399871828">"دستگاه وصلشده"</string>
<string name="media_transfer_this_phone" msgid="7194341457812151531">"این تلفن"</string>
<string name="media_transfer_digital_line_name" msgid="312091711951124301">"S/PDIF"</string>
<string name="media_transfer_analog_line_name" msgid="1841163866716302104">"آنالوگ"</string>
@@ -632,7 +618,7 @@
<string name="media_output_status_device_in_low_power_mode" msgid="8184631698321758451">"برای پخش در اینجا، دستگاه را بیدار کنید"</string>
<string name="media_output_status_unauthorized" msgid="5880222828273853838">"دستگاه برای پخش تأیید نشده است"</string>
<string name="media_output_status_track_unsupported" msgid="5576313219317709664">"نمیتوان این رسانه را اینجا پخش کرد"</string>
- <string name="tv_media_transfer_connected" msgid="5145011475885290725">"متصل"</string>
+ <string name="tv_media_transfer_connected" msgid="5145011475885290725">"وصلشده"</string>
<string name="tv_media_transfer_arc_fallback_title" msgid="3674360098755328601">"HDMI ARC"</string>
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"متصل ازطریق ARC"</string>
@@ -667,7 +653,7 @@
<string name="user_grant_admin_message" msgid="1673791931033486709">"سرپرستان امتیازهای ویژهای دارند که کاربران دیگر ندارند. سرپرست میتواند همه کاربران را مدیریت کند، این دستگاه را بهروز یا بازنشانی کند، تنظیمات را تغییر دهد، همه برنامههای نصبشده را ببیند، و امتیازهای سرپرست را به دیگران اعطا کند یا از آنها بگیرد."</string>
<string name="user_grant_admin_button" msgid="5441486731331725756">"انتخاب بهعنوان سرپرست"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"هم اکنون کاربر تنظیم شود؟"</string>
- <string name="user_setup_dialog_message" msgid="269931619868102841">"مطمئن شوید شخص در دسترس است تا دستگاه را بگیرد و فضایش را تنظیم کند"</string>
+ <string name="user_setup_dialog_message" msgid="269931619868102841">"مطمئن شوید آن شخص دردسترس است تا دستگاه را بگیرد و فضای خود را تنظیم کند"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"اکنون نمایه را تنظیم میکنید؟"</string>
<string name="user_setup_button_setup_now" msgid="1708269547187760639">"اکنون تنظیم شود"</string>
<string name="user_setup_button_setup_later" msgid="8712980133555493516">"حالا نه"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index d222882..d1cc76c 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ympäristön päivittäminen epäonnistui"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Vieraslaite. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Vieraslaite. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Vieraslaite (vain media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Vieraslaite (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Yhdistetty (tukee audionjakoa). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> virtaa, O: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> virtaa."</string>
<string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Yhdistetty (tukee audionjakoa). Vasen: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Yhdistetty (tukee audionjakoa). Oikea: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Yhdistetty (tukee audionjakoa)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Vieraslaite (tukee audionjakoa). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Vieraslaite (tukee audionjakoa). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Vieraslaite (tukee audionjakoa)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiivinen (vain media)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Vieraslaite"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Vieraslaite (vain media)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Tukee audionjakoa"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Vieraslaite. Tukee audionjakoa"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiivinen (vain media), vain vasen"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiivinen (vain media), vain oikea"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiivinen (vain media), vasen ja oikea"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Laitteistokiihdytetty hahmonnus"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Valvonta"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Ikkunoiden hallinnointi"</string>
<string name="strict_mode" msgid="889864762140862437">"Tiukka tila käytössä"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Vilkuta näyttöä sovellusten tehdessä pitkiä toimia"</string>
<string name="pointer_location" msgid="7516929526199520173">"Osoittimen sijainti"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-käyttöönotto"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Määritä WebView-käyttöönotto"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Tämä valinta ei ole enää saatavilla. Yritä uudestaan."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView\'n DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView-pakettia ei löydy."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevToolsia ei voitu käynnistää."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Kuvien värit"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Ota sRGB käyttöön"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Poistettu käytöstä"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index b03e6cb..d833892 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Impossible de mettre à jour les sons de l\'environnement"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Appareil invité. Pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Appareil invité. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Appareil invité (contenu multimédia seulement). Pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Appareil invité (contenu multimédia seulement). 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connecté (prise en charge du partage audio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Connecté (prise en charge du partage audio). Gauche : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connecté (prise en charge du partage audio). Droite : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connecté (prise en charge du partage audio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Appareil invité (prend en charge le partage audio). Pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Appareil invité (prend en charge le partage audio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Appareil invité (prend en charge le partage audio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Actif (contenu multimédia uniquement)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Appareil invité"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Appareil invité (contenu multimédia seulement)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Prise en charge du partage audio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Appareil invité. Prend en charge le partage audio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Actif (contenu multimédia uniquement), côté gauche seulement"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Actif (contenu multimédia uniquement), côté droit seulement"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Actif (contenu multimédia uniquement), côtés gauche et droit"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Accélération matérielle"</string>
<string name="media_category" msgid="8122076702526144053">"Médias"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Surveillance"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gestion des fenêtres"</string>
<string name="strict_mode" msgid="889864762140862437">"Mode Strict activé"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Afficher un cadre rouge si le fil principal reste occupé"</string>
<string name="pointer_location" msgid="7516929526199520173">"Emplacement du curseur"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Mise en œuvre WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Définir la mise en œuvre WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ce choix n\'est plus valide. Réessayez."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Outils pour les développeurs WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Impossible de trouver l\'ensemble WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Impossible de lancer les outils pour développeurs."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Mode couleur des images"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Utiliser sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Désactivé"</string>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index 4440126..2fc946b 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Impossible de mettre à jour le mode Sons environnants"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Appareil invité. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Appareil invité. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Appareil invité (multimédia uniquement). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Appareil invité (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connecté (compatible avec le partage audio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Connecté (compatible avec le partage audio). Gauche : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connecté (compatible avec le partage audio). Droit : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connecté (compatible avec le partage audio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Appareil invité (compatible avec le partage audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Appareil invité (compatible avec le partage audio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Appareil invité (compatible avec le partage audio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activé (multimédia uniquement)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Appareil invité"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Appareil invité (multimédia uniquement)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Compatible avec le partage audio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Appareil invité. Compatible avec le partage audio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activé (multimédia uniquement), gauche uniquement"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activé (multimédia uniquement), droit uniquement"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activé (multimédia uniquement), gauche et droit"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Rendu accéléré par le matériel"</string>
<string name="media_category" msgid="8122076702526144053">"Multimédia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Suivi"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gestion des fenêtres"</string>
<string name="strict_mode" msgid="889864762140862437">"Mode Strict activé"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Faire clignoter l\'écran si le thread principal reste occupé"</string>
<string name="pointer_location" msgid="7516929526199520173">"Emplacement du curseur"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implémentation WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Définir la mise en œuvre WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ce choix n\'est plus valide. Réessayez."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Outils de développement WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Package WebView introuvable."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Impossible de lancer les outils de développement."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Mode de couleur des images"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Utiliser sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Désactivé"</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 536b918..b6eacfc 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Non se puido actualizar o ambiente"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Dispositivo convidado. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Dispositivo convidado. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Dispositivo convidado (só contido multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Dispositivo convidado (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (compatible con audio compartido). 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_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (compatible con audio compartido). Esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (compatible con audio compartido). Dereito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (compatible con audio compartido)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Dispositivo convidado (compatible con audio compartido). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Dispositivo convidado (compatible con audio compartido). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Dispositivo convidado (compatible con audio compartido)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activo (só contido multimedia)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Dispositivo convidado"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Dispositivo convidado (só contido multimedia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Compatible con audio compartido"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Dispositivo convidado. Compatible con audio compartido"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activo (só contido multimedia), só esquerdo"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activo (só contido multimedia), só dereito"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activo (só contido multimedia), esquerdo e dereito"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Procesamento acelerado mediante hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisión"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Xestión de ventás"</string>
<string name="strict_mode" msgid="889864762140862437">"Modo estrito activado"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"A pantalla ilumínase se as aplicacións tardan moito no proceso principal"</string>
<string name="pointer_location" msgid="7516929526199520173">"Localización do punteiro"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementación de WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Definir implementación de WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opción xa non é válida. Téntao de novo."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools de WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Non se atopou o paquete de WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Non se puido activar DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Modo de cor da imaxe"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Utiliza sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desactivado"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 1b4bad3..57f8982 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"આસપાસના અવાજો અપડેટ કરી શક્યા નથી"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"અતિથિ ડિવાઇસ. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"અતિથિ ડિવાઇસ. ડાબી બાજુ: <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_guest_media_only_battery_level" msgid="7928347900623812299">"અતિથિ ડિવાઇસ (માત્ર મીડિયા માટે). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"અતિથિ ડિવાઇસ (માત્ર મીડિયા માટે). ડાબી બાજુ: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). ડાબી બાજુ: <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_untethered_left_lea_support" msgid="7707464334346454950">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). ડાબી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). જમણી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"અતિથિ ડિવાઇસ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"અતિથિ ડિવાઇસ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). ડાબી બાજુ: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"અતિથિ ડિવાઇસ (ઑડિયો શેરિંગને સપોર્ટ કરે છે)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"સક્રિય છે (માત્ર મીડિયા માટે)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"અતિથિ ડિવાઇસ"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"અતિથિ ડિવાઇસ (માત્ર મીડિયા માટે)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ઑડિયો શેરિંગને સપોર્ટ કરે છે"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"અતિથિ ડિવાઇસ. ઑડિયો શેરિંગને સપોર્ટ કરે છે"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"સક્રિય છે (માત્ર મીડિયા માટે), માત્ર ડાબી બાજુ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"સક્રિય છે (માત્ર મીડિયા માટે), માત્ર જમણી બાજુ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"સક્રિય છે (માત્ર મીડિયા માટે), ડાબી અને જમણી બાજુ"</string>
@@ -177,7 +167,7 @@
<string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"ઇનપુટ માટે ઉપયોગ કરો"</string>
<string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="3374057355721486932">"સાંભળવામાં મદદ આપતા યંત્રો માટે ઉપયોગ કરો"</string>
<string name="bluetooth_le_audio_profile_summary_use_for" msgid="2778318636027348572">"LE_AUDIO માટે ઉપયોગ કરો"</string>
- <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"જોડી કરો"</string>
+ <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"જોડાણ કરો"</string>
<string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"જોડી કરો"</string>
<string name="bluetooth_pairing_decline" msgid="6483118841204885890">"રદ કરો"</string>
<string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"એ કનેક્ટ કરેલ હોય ત્યારે જોડાણ બનાવવાથી તમારા સંપર્કો અને કૉલ ઇતિહાસનો અૅક્સેસ મળે છે."</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"હાર્ડવેર પ્રવેગક રેન્ડરિંગ"</string>
<string name="media_category" msgid="8122076702526144053">"મીડિયા"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"નિરિક્ષણ કરી રહ્યું છે"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"વિન્ડો મેનેજમેન્ટ"</string>
<string name="strict_mode" msgid="889864762140862437">"સ્ટ્રિક્ટ મોડ ચાલુ કરેલો છે"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"જ્યારે મુખ્ય થ્રેડ પર ઍપ લાંબી કામગીરીઓ કરે ત્યારે સ્ક્રીનને ફ્લેશ કરો"</string>
<string name="pointer_location" msgid="7516929526199520173">"પૉઇન્ટર લોકેશન"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"આ વિકલ્પ હવે માન્ય નથી. ફરી પ્રયાસ કરો."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView પૅકેજ મળ્યું નથી."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools લૉન્ચ કરી શક્યા નથી."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"ચિત્ર રંગ મોડ"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB નો ઉપયોગ કરો"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"બંધ"</string>
@@ -666,20 +652,20 @@
<string name="user_grant_admin_title" msgid="5157031020083343984">"આ વપરાશકર્તાને ઍડમિન બનાવવા છે?"</string>
<string name="user_grant_admin_message" msgid="1673791931033486709">"ઍડમિન પાસે વિશિષ્ટ વિશેષાધિકારો હોય છે જે અન્ય વપરાશકર્તાઓ પાસે હોતા નથી. ઍડમિન બધા વપરાશકર્તાઓને મેનેજ કરી શકે, આ ડિવાઇસને અપડેટ અથવા રીસેટ કરી શકે, સેટિંગમાં ફેરફાર કરી શકે, ઇન્સ્ટૉલ કરેલી બધી ઍપ જોઈ શકે અને અન્ય લોકોને ઍડમિનના અધિકારો આપી શકે અથવા તેમને રદબાતલ કરી શકે."</string>
<string name="user_grant_admin_button" msgid="5441486731331725756">"ઍડમિન બનાવો"</string>
- <string name="user_setup_dialog_title" msgid="8037342066381939995">"અત્યારે જ વપરાશકર્તાને સેટ અપ કરીએ?"</string>
+ <string name="user_setup_dialog_title" msgid="8037342066381939995">"વપરાશકર્તાને હમણાં જ સેટ અપ કરીએ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ખાતરી કરો કે વ્યક્તિ ડિવાઇસ લેવા અને તેમના સ્થાનનું સેટ અપ કરવા માટે ઉપલબ્ધ છે"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"હવે પ્રોફાઇલ સેટ કરીએ?"</string>
- <string name="user_setup_button_setup_now" msgid="1708269547187760639">"હવે સેટ કરો"</string>
+ <string name="user_setup_button_setup_now" msgid="1708269547187760639">"હમણાં જ સેટ અપ કરો"</string>
<string name="user_setup_button_setup_later" msgid="8712980133555493516">"હમણાં નહીં"</string>
<string name="user_add_user_type_title" msgid="551279664052914497">"ઉમેરો"</string>
<string name="user_new_user_name" msgid="60979820612818840">"નવો વપરાશકર્તા"</string>
<string name="user_new_profile_name" msgid="2405500423304678841">"નવી પ્રોફાઇલ"</string>
- <string name="user_info_settings_title" msgid="6351390762733279907">"વપરાશકર્તા માહિતી"</string>
+ <string name="user_info_settings_title" msgid="6351390762733279907">"વપરાશકર્તાની માહિતી"</string>
<string name="profile_info_settings_title" msgid="105699672534365099">"પ્રોફાઇલ માહિતી"</string>
<string name="user_need_lock_message" msgid="4311424336209509301">"તમે પ્રતિબંધિત પ્રોફાઇલ બનાવી શકો તે પહેલાં, તમારે તમારી ઍપ્લિકેશનો અને વ્યક્તિગત ડેટાની સુરક્ષા માટે એક લૉક સ્ક્રીન સેટ કરવાની જરૂર પડશે."</string>
<string name="user_set_lock_button" msgid="1427128184982594856">"લૉક સેટ કરો"</string>
<string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> પર સ્વિચ કરો"</string>
- <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"નવા વપરાશકર્તા બનાવી રહ્યાં છીએ…"</string>
+ <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"નવો વપરાશકર્તા બનાવી રહ્યાં છીએ…"</string>
<string name="creating_new_guest_dialog_message" msgid="1114905602181350690">"નવા અતિથિની પ્રોફાઇલ બનાવી રહ્યાં છીએ…"</string>
<string name="add_user_failed" msgid="4809887794313944872">"નવો વપરાશકર્તા બનાવવામાં નિષ્ફળ"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"નવી અતિથિ બનાવવામાં નિષ્ફળ રહ્યાં"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 55d425f..02bc92b 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"वॉल्यूम को मैनेज करने की सेटिंग नहीं बदली जा सकी"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"मेहमान मोड में इस्तेमाल किया जा रहा डिवाइस. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"मेहमान मोड में इस्तेमाल किया जा रहा डिवाइस. बायां हेडसेट: <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_guest_media_only_battery_level" msgid="7928347900623812299">"मेहमान मोड में इस्तेमाल किए जा रहे डिवाइस के पास सिर्फ़ मीडिया का ऐक्सेस होता है. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"मेहमान मोड में इस्तेमाल किए जा रहे डिवाइस के पास सिर्फ़ मीडिया का ऐक्सेस होता है. बायां हेडसेट: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"कनेक्ट हो गया (ऑडियो शेयर करने की सुविधा काम करती है). बायां हेडसेट: <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_untethered_left_lea_support" msgid="7707464334346454950">"कनेक्ट हो गया (ऑडियो शेयर करने की सुविधा काम करती है). बायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"कनेक्ट हो गया (ऑडियो शेयर करने की सुविधा काम करती है). दायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"कनेक्ट है (ऑडियो शेयर करने की सुविधा काम करती है)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"मेहमान मोड में इस्तेमाल किए जा रहे डिवाइस में ऑडियो शेयर करने की सुविधा काम करती है. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"मेहमान मोड में इस्तेमाल किए जा रहे डिवाइस में ऑडियो शेयर करने की सुविधा काम करती है. बायां हेडसेट: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"मेहमान मोड में इस्तेमाल किए जा रहे डिवाइस में ऑडियो शेयर करने की सुविधा काम करती है"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"चालू है (सिर्फ़ मीडिया के लिए)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"मेहमान मोड में इस्तेमाल किया जा रहा डिवाइस"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"मेहमान मोड में इस्तेमाल किए जा रहे डिवाइस के पास सिर्फ़ मीडिया का ऐक्सेस होता है"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ऑडियो शेयर करने की सुविधा काम करती है"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"मेहमान मोड में इस्तेमाल किया जा रहा डिवाइस. ऑडियो शेयर करने की सुविधा काम करती है"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"चालू है (सिर्फ़ मीडिया के लिए), सिर्फ़ बाएं कान की मशीन"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"चालू है (सिर्फ़ मीडिया के लिए), सिर्फ़ दाएं कान की मशीन"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"चालू है (सिर्फ़ मीडिया के लिए), बाएं और दाएं कान की मशीन"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"हार्डवेयर ऐक्सेलरेटेड रेंडरिंग"</string>
<string name="media_category" msgid="8122076702526144053">"मीडिया"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"निगरानी"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Window Management"</string>
<string name="strict_mode" msgid="889864762140862437">"स्ट्रिक्ट मोड चालू रखें"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"थ्रेड पर लंबा प्रोसेस होने पर स्क्रीन फ़्लैश करें"</string>
<string name="pointer_location" msgid="7516929526199520173">"पॉइंटर की जगह"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"वेबव्यू लागू करें"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"वेबव्यू सेट करें"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"यह चुनाव अब मान्य नहीं है. दोबारा कोशिश करें."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"वेबव्यू DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"वेबव्यू पैकेज नहीं मिला."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools लॉन्च नहीं किया जा सका."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"चित्र रंग मोड"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB का उपयोग करें"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"बंद"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 97f2df6..15eb471 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ažuriranje okruženja nije uspjelo"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gostujući uređaj. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gostujući uređaj. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Gostujući uređaj (samo medijski sadržaji). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gostujući uređaj (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Povezano (podržava zajedničko slušanje), 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_untethered_left_lea_support" msgid="7707464334346454950">"Povezano (podržava zajedničko slušanje). Lijeva strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Povezano (podržava zajedničko slušanje). Desna strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Povezano (podržava zajedničko slušanje)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gostujući uređaj (podržava zajedničko slušanje). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gostujući uređaj (podržava zajedničko slušanje). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gostujući uređaj (podržava zajedničko slušanje)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivno (samo medijski sadržaji)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gostujući uređaj"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gostujući uređaj (samo medijski sadržaji)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podržava zajedničko slušanje"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gostujući uređaj. Podržava zajedničko slušanje"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivno (samo medijski sadržaji), samo lijeva"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivno (samo medijski sadržaji), samo desna"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivno (samo medijski sadržaji), lijeva i desna"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardverski ubrzano renderiranje"</string>
<string name="media_category" msgid="8122076702526144053">"Mediji"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Nadzor"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Upravljanje prozorima"</string>
<string name="strict_mode" msgid="889864762140862437">"Omogućen strogi način"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Zaslon bljeska kada operacije aplikacija u glavnoj niti dugo traju"</string>
<string name="pointer_location" msgid="7516929526199520173">"Mjesto pokazivača"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementacija WebViewa"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Postavi implementaciju WebViewa"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Taj izbor više nije važeći. Pokušajte ponovo."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView razvojni alati"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView paket nije pronađen."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Nije moguće pokrenuti razvojne alate."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Način boje slike"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Upotrijebi sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogućeno"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 5e97cff..08ae0f8 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nem sikerült módosítani a környezetet"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Vendégeszköz. Akkumulátor töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Vendégeszköz. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Vendégeszköz (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_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Vendégeszköz (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Csatlakoztatva (támogatja a hang megosztását). 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_untethered_left_lea_support" msgid="7707464334346454950">"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> (bal)."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"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> (jobb)."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Csatlakoztatva (támogatja a hang megosztását)."</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Vendégeszköz (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>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Vendégeszköz (támogatja a hang megosztását). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Vendégeszköz (támogatja a hang megosztását)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktív (csak médiatartalom lejátszása)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Vendégeszköz"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Vendégeszköz (csak médiatartalom lejátszása esetén)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Támogatja a hang megosztását"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Vendégeszköz. Támogatja a hang megosztását"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktív (csak médiatartalom lejátszása), csak a bal"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktív (csak médiatartalom lejátszása), csak a jobb"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktív (csak médiatartalom lejátszása), bal és jobb"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardveres gyorsítású megjelenítés"</string>
<string name="media_category" msgid="8122076702526144053">"Média"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Figyelés"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Ablakkezelés"</string>
<string name="strict_mode" msgid="889864762140862437">"Szigorú mód engedélyezve"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Képernyővillogás a fő szál hosszú műveleteinél"</string>
<string name="pointer_location" msgid="7516929526199520173">"Mutató helye"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-megvalósítás"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView-megvalósítás beállítása"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ez a választás már nem érvényes. Próbálkozzon újra."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"A WebView-csomag nem található."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Nem sikerült elindítani a DevTools eszközt."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Kép színe mód"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB használata"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Letiltva"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index d342717..3471013 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Չհաջողվեց թարմացնել շրջակայքի կարգավիճակը"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Հյուրի սարք։ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Հյուրի սարք։ Ձախ ականջակալի լիցքը՝ <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_guest_media_only_battery_level" msgid="7928347900623812299">"Հյուրի սարք (միայն մուլտիմեդիա)։ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Հյուրի սարք (միայն մուլտիմեդիա)։ Ձախ ականջակալի լիցքը՝ <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Միացված է (աջակցում է աուդիոյի փոխանցում)։ Ձախ ականջակալի լիցքը՝ <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_untethered_left_lea_support" msgid="7707464334346454950">"Միացված է (աջակցում է աուդիոյի փոխանցում)։ Ձախ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Միացված է (աջակցում է աուդիոյի փոխանցում)։ Աջ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Միացված է (աջակցում է աուդիոյի փոխանցում)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Հյուրի սարք (աջակցում է աուդիոյի փոխանցում)։ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Հյուրի սարք (աջակցում է աուդիոյի փոխանցում)։ Ձախ ականջակալի լիցքը՝ <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Հյուրի սարք (աջակցում է աուդիոյի փոխանցում)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ակտիվ է (միայն մեդիա)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Հյուրի սարք"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Հյուրի սարք (միայն մուլտիմեդիա)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Աջակցում է աուդիոյի փոխանցում"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Հյուրի սարք։ Աջակցում է աուդիոյի փոխանցում։"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ակտիվ է (միայն մեդիա), միայն ձախ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ակտիվ է (միայն մեդիա), միայն աջ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ակտիվ է (միայն մեդիա), աջ և ձախ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Սարքաշարի արագացված նյութավորում"</string>
<string name="media_category" msgid="8122076702526144053">"Մեդիա"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Մշտադիտարկում"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Պատուհանների կառավարում"</string>
<string name="strict_mode" msgid="889864762140862437">"Խիստ ռեժիմն ակտիվացված է"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Լուսավորել էկրանը` ծրագրի գլխավոր շղթայի վրա երկար աշխատելիս"</string>
<string name="pointer_location" msgid="7516929526199520173">"Նշորդի տեղադրությունը"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Այս ընտրանքն այլևս վավեր չէ: Փորձեք նորից:"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView-ի ծրագրավորողի գործիքներ"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView փաթեթը չի գտնվել։"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Չհաջողվեց գործարկել ծրագրավորողի գործիքները։"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Նկարի գունային ռեժիմ"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Օգտագործել sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Կասեցված է"</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 649ee0bb..85109fc 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Tidak dapat memperbarui suara sekitar"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Perangkat tamu. Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Perangkat tamu. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Perangkat tamu (hanya media). Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Perangkat tamu (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Terhubung (mendukung berbagi audio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Terhubung (mendukung berbagi audio). Kiri: Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Terhubung (mendukung berbagi audio). Kanan: Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Terhubung (mendukung berbagi audio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Perangkat tamu (mendukung berbagi audio). Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Perangkat tamu (mendukung berbagi audio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Perangkat tamu (mendukung berbagi audio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktif (hanya media)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Perangkat tamu"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Perangkat tamu (hanya media)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Mendukung berbagi audio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Perangkat tamu. Mendukung berbagi audio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktif (hanya media), hanya kiri"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktif (hanya media), hanya kanan"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktif (hanya media), kiri dan kanan"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Render yang dipercepat hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Pemantauan"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Pengelolaan Jendela"</string>
<string name="strict_mode" msgid="889864762140862437">"Mode ketat diaktifkan"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Buat layar berkedip saat aplikasi berlama-lama menjalankan operasi di thread utama"</string>
<string name="pointer_location" msgid="7516929526199520173">"Lokasi kursor"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Penerapan WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Setel penerapan WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Pilihan ini tidak valid lagi. Coba lagi."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Paket WebView tidak ditemukan."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Tidak dapat meluncurkan DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Mode warna gambar"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Gunakan sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Dinonaktifkan"</string>
@@ -679,7 +665,7 @@
<string name="user_need_lock_message" msgid="4311424336209509301">"Sebelum dapat membuat profil yang dibatasi, Anda perlu menyiapkan kunci layar untuk melindungi aplikasi dan data pribadi Anda."</string>
<string name="user_set_lock_button" msgid="1427128184982594856">"Setel kunci"</string>
<string name="user_switch_to_user" msgid="6975428297154968543">"Beralih ke <xliff:g id="USER_NAME">%s</xliff:g>"</string>
- <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Membuat pengguna baru …"</string>
+ <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Membuat pengguna baru…"</string>
<string name="creating_new_guest_dialog_message" msgid="1114905602181350690">"Membuat tamu baru…"</string>
<string name="add_user_failed" msgid="4809887794313944872">"Gagal membuat pengguna baru"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Gagal membuat tamu baru"</string>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index d361157..3041151 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ekki var hægt að uppfæra umhverfi"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gestatæki. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gestatæki. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Gestatæki (aðeins margmiðlunarefni). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gestatæki (aðeins 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Tengt (styður hljóðdeilingu), 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_untethered_left_lea_support" msgid="7707464334346454950">"Tengt (styður hljóðdeilingu). Vinstri: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Tengt (styður hljóðdeilingu). Hægri: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Tengt (styður hljóðdeilingu)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gestatæki (styður hljóðdeilingu). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gestatæki (styður hljóðdeilingu). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gestatæki (styður hljóðdeilingu)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Virkt (eingöngu margmiðlunarefni)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gestatæki"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gestatæki (aðeins margmiðlunarefni)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Styður hljóðdeilingu"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gestatæki. Styður hljóðdeilingu"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Virkt (eingöngu margmiðlunarefni), eingöngu vinstri"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Virkt (eingöngu margmiðlunarefni), eingöngu hægri"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Virkt (eingöngu margmiðlunarefni), vinstri og hægri"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Myndþýðing með vélbúnaðarhröðun"</string>
<string name="media_category" msgid="8122076702526144053">"Margmiðlun"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Eftirlit"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gluggastjórnun"</string>
<string name="strict_mode" msgid="889864762140862437">"Kveikt á strangri stillingu"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Blikka skjá ef forrit gera tímafreka hluti á aðalþræði"</string>
<string name="pointer_location" msgid="7516929526199520173">"Staðsetning bendils"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Innleiðing WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Stilla innleiðingu WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Þetta val er ekki lengur gilt. Reyndu aftur."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView-pakki fannst ekki."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Ekki tókst að ræsa DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Litastilling mynda"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Nota sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Óvirkt"</string>
@@ -667,7 +653,7 @@
<string name="user_grant_admin_message" msgid="1673791931033486709">"Stjórnendur hafa tiltekin réttindi sem aðrir notendur hafa ekki. Stjórnandi getur stjórnað öllum notendum, uppfært eða endurstillt þetta tæki, breytt stillingum, séð öll uppsett forrit og veitt eða afturkallað stjórnandaheimildir annarra."</string>
<string name="user_grant_admin_button" msgid="5441486731331725756">"Gera að stjórnanda"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Setja notanda upp núna?"</string>
- <string name="user_setup_dialog_message" msgid="269931619868102841">"Gakktu úr skugga um að notandinn geti tekið tækið og sett upp sitt svæði"</string>
+ <string name="user_setup_dialog_message" msgid="269931619868102841">"Sjáðu til þess að notandinn geti tekið tækið og sett upp sitt svæði"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Setja upp snið núna?"</string>
<string name="user_setup_button_setup_now" msgid="1708269547187760639">"Setja upp núna"</string>
<string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ekki núna"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 98e415b..c42cab3 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -113,33 +113,23 @@
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Dispositivo ospite. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Dispositivo ospite. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Dispositivo ospite (solo contenuti multimediali). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Dispositivo ospite (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connesso (supporta la condivisione audio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Connesso (supporta la condivisione audio). Sinistro: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connesso (supporta la condivisione audio). Destro: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connesso (supporta la condivisione audio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Dispositivo ospite (supporta la condivisione audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Dispositivo ospite (supporta la condivisione audio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Dispositivo ospite (supporta la condivisione audio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Attivo (solo contenuti multimediali)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Dispositivo ospite"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Dispositivo ospite (solo contenuti multimediali)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Supporta la condivisione audio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Dispositivo ospite. Supporta la condivisione audio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Attivo (solo contenuti multimediali), solo sinistro"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Attivo (solo contenuti multimediali), solo destro"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Attivo (solo contenuti multimediali), sinistro e destro"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Rendering con accelerazione hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Contenuti multimediali"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoraggio"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gestione delle finestre"</string>
<string name="strict_mode" msgid="889864762140862437">"Attiva StrictMode"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Fai lampeggiare lo schermo per operazioni lunghe sul thread principale"</string>
<string name="pointer_location" msgid="7516929526199520173">"Posizione puntatore"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementazione di WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Imposta l\'implementazione di WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"La selezione non è più valida. Riprova."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView di DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Pacchetto WebView non trovato."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Impossibile avviare DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Modalità colori immagini"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Usa sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Disattivato"</string>
@@ -521,7 +507,7 @@
<string name="power_discharge_by_only_enhanced" msgid="3268796172652988877">"Ora stimata esaurimento batteria in base al tuo utilizzo: <xliff:g id="TIME">%1$s</xliff:g> circa"</string>
<string name="power_discharge_by" msgid="4113180890060388350">"Ora stimata esaurimento batteria: <xliff:g id="TIME">%1$s</xliff:g> circa (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="92545648425937000">"Ora stimata esaurimento batteria: <xliff:g id="TIME">%1$s</xliff:g> circa"</string>
- <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Fino a: <xliff:g id="TIME">%1$s</xliff:g>"</string>
+ <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Fino alle ore: <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"La batteria potrebbe esaurirsi entro le <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"Carica residua: meno di <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="318215464914990578">"Carica residua: meno di <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index b341c4d..d4c0773 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"לא ניתן לעדכן את עוצמת הרעשים בסביבה"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"מכשיר אורח. סוללה: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"מכשיר אורח. סוללה בצד שמאל: <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_guest_media_only_battery_level" msgid="7928347900623812299">"מכשיר אורח (מדיה בלבד). סוללה: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"מכשיר אורח (מדיה בלבד). סוללה בצד שמאל: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"מחובר (תמיכה בשיתוף אודיו). סוללה בצד שמאל: <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_untethered_left_lea_support" msgid="7707464334346454950">"מחובר (תמיכה בשיתוף אודיו). סוללה בצד שמאל: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"מחובר (תמיכה בשיתוף אודיו). סוללה בצד ימין: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"מחובר (תמיכה בשיתוף אודיו)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"מכשיר אורח (תומך בשיתוף אודיו). סוללה: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"מכשיר אורח (תומך בשיתוף אודיו). סוללה בצד שמאל: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"מכשיר אורח (תומך בשיתוף אודיו)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"פעיל (מדיה בלבד)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"מכשיר אורח"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"מכשיר אורח (מדיה בלבד)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"תמיכה בשיתוף אודיו"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"מכשיר אורח. תומך בשיתוף אודיו."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"פעיל (מדיה בלבד), שמאל בלבד"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"פעיל (מדיה בלבד), ימין בלבד"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"פעיל (מדיה בלבד), שמאל וימין"</string>
@@ -492,12 +482,9 @@
<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_toast_text" msgid="8512254949169359848">"אפשרות זו כבר אינה תקפה. אפשר לנסות שוב."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"כלי פיתוח של WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"לא נמצאה חבילת WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"לא ניתן היה להפעיל את כלי הפיתוח."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"מצב צבע התמונה"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"שימוש ב-sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"מושבת"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 2e36d6a..bb997ff 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"周囲の音を更新できませんでした"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"ゲストデバイス。バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"ゲストデバイス。左: バッテリー残量 <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_guest_media_only_battery_level" msgid="7928347900623812299">"ゲストデバイス(メディアのみ)。バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"ゲストデバイス(メディアのみ)。左: バッテリー残量 <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"接続済み(音声の共有をサポート)。左: バッテリー残量 <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_untethered_left_lea_support" msgid="7707464334346454950">"接続済み(音声の共有をサポート)。左: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"接続済み(音声の共有をサポート)。右: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"接続済み(音声の共有をサポート)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"ゲストデバイス(音声の共有をサポート)。バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"ゲストデバイス(音声の共有をサポート)。左: バッテリー残量 <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"ゲストデバイス(音声の共有をサポート)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"有効(メディアのみ)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"ゲストデバイス"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"ゲストデバイス(メディアのみ)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"音声の共有をサポートしています"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"ゲストデバイス。音声の共有をサポートしています"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"有効(メディアのみ)、左のみ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"有効(メディアのみ)、右のみ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"有効(メディアのみ)、左右"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"ハードウェアアクセラレーテッドレンダリング"</string>
<string name="media_category" msgid="8122076702526144053">"メディア"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"モニタリング"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ウィンドウ管理"</string>
<string name="strict_mode" msgid="889864762140862437">"厳格モードを有効にする"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"メインスレッドの処理が長引く場合は画面を点滅させる"</string>
<string name="pointer_location" msgid="7516929526199520173">"ポインタの位置"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"この選択は無効になりました。もう一度お試しください。"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView の DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView パッケージが見つかりません。"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools を起動できませんでした。"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"画像の色モード"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGBを使用"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"無効"</string>
diff --git a/packages/SettingsLib/res/values-ka/arrays.xml b/packages/SettingsLib/res/values-ka/arrays.xml
index 3ecf9d8..1e80d42 100644
--- a/packages/SettingsLib/res/values-ka/arrays.xml
+++ b/packages/SettingsLib/res/values-ka/arrays.xml
@@ -297,13 +297,13 @@
<string-array name="shade_display_awareness_summaries">
<item msgid="2964753205732912921">"ჩრდილის ჩვენება მხოლოდ მოწყობილობის ეკრანზე"</item>
<item msgid="1955398604822147783">"ჩრდილის ჩვენება ერთ გარე ეკრანზე"</item>
- <item msgid="391477482416751568">"ეკრანზე ჩრდილის ჩვენება, რომლის სტატუსის ზოლთანაც მოხდა ბოლო ინტერაქცია"</item>
+ <item msgid="391477482416751568">"ეკრანის ბოლო ინტერაქციის მქონე სტატუსის ზოლით დაჩრდილვა"</item>
<item msgid="1746820128097981528">"ჩრდილის ჩვენება ბოლო ფოკუსირებულ ეკრანზე"</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>
- <item msgid="4313165186636015195">"ფოკუსირებული_ეკრანი"</item>
+ <item msgid="4313165186636015195">"focused_display"</item>
</string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index e627b79..91e8889 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"გარემოცვის განახლება ვერ მოხერხდა"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"სტუმარი მოწყობილობა. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ბატარეა."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"სტუმარი მოწყობილობა. მარცხენა: <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_guest_media_only_battery_level" msgid="7928347900623812299">"სტუმარი მოწყობილობა (მხოლოდ მედია). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ბატარეა."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"სტუმარი მოწყობილობა (მხოლოდ მედია). მარცხენა: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია). მარცხენა: ბატარეა <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_untethered_left_lea_support" msgid="7707464334346454950">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია). მარცხენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ბატარეა."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია). მარჯვენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ბატარეა."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"სტუმარი მოწყობილობა (აუდიოს გაზიარება მხარდაჭერილია). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ბატარეა."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"სტუმარი მოწყობილობა (აუდიოს გაზიარება მხარდაჭერილია). მარცხენა: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"სტუმარი მოწყობილობა (აუდიოს გაზიარება მხარდაჭერილია)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"აქტიური (მხოლოდ მედია)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"სტუმარი მოწყობილობა"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"სტუმარი მოწყობილობა (მხოლოდ მედია)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"აუდიოს გაზიარება მხარდაჭერილია"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"სტუმარი მოწყობილობა. აუდიოს გაზიარება მხარდაჭერილია"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"აქტიური (მხოლოდ მედია), მხოლოდ მარცხენა"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"აქტიური (მხოლოდ მედია), მხოლოდ მარჯვენა"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"აქტიური (მხოლოდ მედია), მარცხენა და მარჯვენა"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"აპარატურით დაჩქარებული გამოსახულება"</string>
<string name="media_category" msgid="8122076702526144053">"მედია"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"მონიტორინგი"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ფანჯრების მართვა"</string>
<string name="strict_mode" msgid="889864762140862437">"მკაცრი რეჟიმი ჩართულია"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"ეკრანის აციმციმება, როცა აპები ახორციელებენ ხანგრძლივ ოპერაციებს მთავარ ნაკადზე"</string>
<string name="pointer_location" msgid="7516929526199520173">"მაჩვენებლის მდებარეობა"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"თქვენი არჩევანი აღარ მოქმედებს. ცადეთ ხელახლა."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView-ის პაკეტი ვერ მოიძებნა"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools-ის გაშვება ვერ მოხერხდა"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"გამოსახულების ფერების რეჟიმი"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB-ს გამოყენება"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"გამორთულია"</string>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index a85e624..25c92de 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Айналаны жаңарту мүмкін болмады."</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Қонақ құрылғы. Батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Қонақ құрылғы. Сол жақ: батарея зарядының деңгейі – <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_guest_media_only_battery_level" msgid="7928347900623812299">"Қонақ құрылғы (тек медиафайл). Батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Қонақ құрылғы (тек медиафайл). Сол жақ: батарея зарядының деңгейі – <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Қосылды (аудио бөлісуге мүмкіндік береді). Сол жақ: батарея зарядының деңгейі — <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_untethered_left_lea_support" msgid="7707464334346454950">"Қосылды (аудио бөлісуге мүмкіндік береді). Сол жақ: батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Қосылды (аудио бөлісуге мүмкіндік береді). Оң жақ: батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Жалғанды (аудио бөлісу мүмкіндігі бар)."</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Қонақ құрылғы (аудио бөлісуге мүмкіндік береді). Батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Қонақ құрылғы (аудио бөлісуге мүмкіндік береді). Сол жақ: батарея зарядының деңгейі – <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Қонақ құрылғы (аудио бөлісуге мүмкіндік береді)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Істеп тұр (тек мультимедиа)."</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Қонақ құрылғы"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Қонақ құрылғы (тек медиафайл)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Аудио бөлісуге мүмкіндік береді."</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Қонақ құрылғы. Аудио бөлісуге мүмкіндік береді."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Тек сол жақ істеп тұр (мультимедиа ғана)."</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Тек оң жақ істеп тұр (мультимедиа ғана)."</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Сол және оң жақ істеп тұр (мультимедиа ғана)."</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Бейнелеуді аппаратпен жеделдету"</string>
<string name="media_category" msgid="8122076702526144053">"Mультимeдиа"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Бақылау"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Терезелерді басқару"</string>
<string name="strict_mode" msgid="889864762140862437">"Қатаң режим қосылған"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Қолданбалар ұзақ операцияларды орындағанда экранды жыпылықтату"</string>
<string name="pointer_location" msgid="7516929526199520173">"Меңзер орны"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Бұл таңдау енді жарамды емес. Әрекетті қайталаңыз."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView әзірлеуші құралдары"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView пакеті табылмады."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Әзірлеуші құралдары іске қосылмады."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Сурет түс режимі"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB пайдалану"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Өшірулі"</string>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index d2d5893..9dadee1 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"មិនអាចប្ដូរមជ្ឈដ្ឋានជុំវិញបានទេ"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"ឧបករណ៍ភ្ញៀវ។ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"ឧបករណ៍ភ្ញៀវ។ ឆ្វេង៖ ថ្ម <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_guest_media_only_battery_level" msgid="7928347900623812299">"ឧបករណ៍ភ្ញៀវ (មេឌៀតែប៉ុណ្ណោះ)។ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"ឧបករណ៍ភ្ញៀវ (មេឌៀតែប៉ុណ្ណោះ)។ ឆ្វេង៖ ថ្ម <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ឆ្វេង៖ ថ្ម <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_untethered_left_lea_support" msgid="7707464334346454950">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ឆ្វេង៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ស្ដាំ៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"ឧបករណ៍ភ្ញៀវ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"ឧបករណ៍ភ្ញៀវ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ឆ្វេង៖ ថ្ម <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"ឧបករណ៍ភ្ញៀវ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"ឧបករណ៍ភ្ញៀវ"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"ឧបករណ៍ភ្ញៀវ (មេឌៀតែប៉ុណ្ណោះ)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"អាចប្រើការស្ដាប់សំឡេងរួមគ្នា"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"ឧបករណ៍ភ្ញៀវ។ អាចប្រើការស្ដាប់សំឡេងរួមគ្នា"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ) តែខាងឆ្វេងប៉ុណ្ណោះ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ) តែខាងស្ដាំប៉ុណ្ណោះ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ) ឆ្វេង និងស្ដាំ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"ការបំប្លែងដែលពន្លឿនដោយប្រើហាតវែរ"</string>
<string name="media_category" msgid="8122076702526144053">"មេឌៀ"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"តាមដាន"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ការគ្រប់គ្រងវិនដូ"</string>
<string name="strict_mode" msgid="889864762140862437">"បានបើកមុខងារតឹងរ៉ឹង"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"បញ្ចេញពន្លឺអេក្រង់ពេលកម្មវិធីធ្វើប្រតិបត្តិការយូរលើសែស្រឡាយមេ"</string>
<string name="pointer_location" msgid="7516929526199520173">"ទីតាំងទ្រនិច"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"ជម្រើសនេះលែងមានសុពលភាពទៀតហើយ ព្យាយាមម្តងទៀត"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"ឧបករណ៍អ្នកអភិវឌ្ឍន៍ WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"រកមិនឃើញកញ្ចប់ WebView ទេ។"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"មិនអាចបើកឧបករណ៍អ្នកអភិវឌ្ឍន៍បានទេ។"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"របៀបនៃពណ៌រូបភាព"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"ប្រើ sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"បានបិទ"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index 87f2cdf..72056bb 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ಆ್ಯಂಬಿಯೆಂಟ್ ಸ್ಥಿತಿಯನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"ಅತಿಥಿ ಸಾಧನ. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"ಅತಿಥಿ ಸಾಧನ. ಎಡ: <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_guest_media_only_battery_level" msgid="7928347900623812299">"ಅತಿಥಿ ಸಾಧನ (ಮಾಧ್ಯಮ ಮಾತ್ರ). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"ಅತಿಥಿ ಸಾಧನ (ಮಾಧ್ಯಮ ಮಾತ್ರ). ಎಡ: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ಕನೆಕ್ಟ್ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). ಎಡ: <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_untethered_left_lea_support" msgid="7707464334346454950">"ಕನೆಕ್ಟ್ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). ಎಡ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ಕನೆಕ್ಟ್ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). ಬಲ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ಕನೆಕ್ಟ್ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"ಅತಿಥಿ ಸಾಧನ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"ಅತಿಥಿ ಸಾಧನ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). ಎಡ: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"ಅತಿಥಿ ಸಾಧನ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"ಅತಿಥಿ ಸಾಧನ"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"ಅತಿಥಿ ಸಾಧನ (ಮಾಧ್ಯಮ ಮಾತ್ರ)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"ಅತಿಥಿ ಸಾಧನ. ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ), ಎಡ ಭಾಗದ ಮಾತ್ರ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ), ಬಲ ಭಾಗದ ಮಾತ್ರ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ), ಎಡ ಮತ್ತು ಬಲ ಭಾಗದ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"ಹಾರ್ಡ್ವೇರ್ ವೇಗವರ್ಧಿತ ರೆಂಡರಿಂಗ್"</string>
<string name="media_category" msgid="8122076702526144053">"ಮಾಧ್ಯಮ"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"ಪರಿವೀಕ್ಷಣೆ ಮಾಡುವಿಕೆ"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ವಿಂಡೋ ನಿರ್ವಹಣೆ"</string>
<string name="strict_mode" msgid="889864762140862437">"ಸ್ಟ್ರಿಕ್ಟ್ ಮೋಡ್ ಸಕ್ರಿಯ"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮುಖ್ಯ ಥ್ರೆಡ್ನಲ್ಲಿ ದೀರ್ಘ ಕಾರ್ಯಾಚರಣೆ ನಿರ್ವಹಿಸಿದಾಗ ಪರದೆಯನ್ನು ಫ್ಲ್ಯಾಶ್ ಮಾಡು"</string>
<string name="pointer_location" msgid="7516929526199520173">"ಪಾಯಿಂಟರ್ ಸ್ಥಳ"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"ಈ ಆಯ್ಕೆಯು ಇನ್ನು ಮುಂದೆ ಮಾನ್ಯವಾಗಿರುವುದಿಲ್ಲ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView ಪ್ಯಾಕೇಜ್ ಕಂಡುಬಂದಿಲ್ಲ."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools ಅನ್ನು ಲಾಂಚ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"ಚಿತ್ರ ಬಣ್ಣದ ಮೋಡ್"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ಬಳಸಿ"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 669d8ef..3b965e5 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"주변 소리를 업데이트할 수 없음"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"게스트 기기입니다. 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"게스트 기기입니다. 배터리는 왼쪽 <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_guest_media_only_battery_level" msgid="7928347900623812299">"게스트 기기(미디어 전용)입니다. 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"게스트 기기(미디어 전용)입니다. 배터리는 왼쪽 <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"연결되었습니다(오디오 공유 지원). 배터리는 왼쪽 <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_untethered_left_lea_support" msgid="7707464334346454950">"연결되었습니다(오디오 공유 지원). 왼쪽 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"연결되었습니다(오디오 공유 지원). 오른쪽 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"연결됨(오디오 공유 지원)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"게스트 기기(오디오 공유 지원)입니다. 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"게스트 기기(오디오 공유 지원)입니다. 배터리는 왼쪽 <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"게스트 기기(오디오 공유 지원)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"사용 중(미디어 전용)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"게스트 기기"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"게스트 기기(미디어 전용)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"오디오 공유 지원"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"게스트 기기입니다. 오디오 공유를 지원합니다."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"사용 중(미디어 전용), 왼쪽만"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"사용 중(미디어 전용), 오른쪽만"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"사용 중(미디어 전용), 왼쪽 및 오른쪽"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"하드웨어 가속 렌더링"</string>
<string name="media_category" msgid="8122076702526144053">"미디어"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"모니터링"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"창 관리"</string>
<string name="strict_mode" msgid="889864762140862437">"엄격 모드 사용"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"앱이 기본 스레드에서 오래 작업하면 화면 깜박이기"</string>
<string name="pointer_location" msgid="7516929526199520173">"포인터 위치"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"선택이 더 이상 유효하지 않습니다. 다시 시도하세요."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView 패키지를 찾을 수 없습니다."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools를 실행할 수 없습니다."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"사진 색상 모드"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB 사용"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"사용 중지됨"</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index c69325b..3eee360 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Айланадагы абал жаңыртылган жок"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Конок түзмөк. Батарея: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Конок түзмөк. Батарея: 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_guest_media_only_battery_level" msgid="7928347900623812299">"Конок түзмөк (медиа гана). Батарея: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Конок түзмөк (медиа гана). Батарея: 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Туташып турат (чогуу уксаңыз болот). Батарея: 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_untethered_left_lea_support" msgid="7707464334346454950">"Туташып турат (чогуу уксаңыз болот). Сол кулак – батареянын деңгээли: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Туташып турат (чогуу уксаңыз болот). Оң кулак – батареянын деңгээли: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Туташып турат (чогуу уксаңыз болот)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Конок түзмөк (чогуу угуу колдоого алынат). Батарея: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Конок түзмөк (чогуу угуу колдоого алынат). Батарея: 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Конок түзмөк (чогуу угуу колдоого алынат)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активдүү (медиа үчүн гана)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Конок түзмөк"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Конок түзмөк (медиа гана)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Чогуу уксаңыз болот"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Конок түзмөк. Чогуу угуу колдоого алынат"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активдүү (медиа үчүн гана), сол кулакчын гана"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активдүү (медиа үчүн гана), оң кулакчын гана"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активдүү (медиа үчүн гана), сол жана оң кулакчын"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Визуалдаштырууну аппарат менен ылдамдатуу"</string>
<string name="media_category" msgid="8122076702526144053">"Медиа"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Мониторинг"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Терезени тескөө"</string>
<string name="strict_mode" msgid="889864762140862437">"Катаал режим иштетилди"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Узак операцияларда экран күйүп-өчүп турат"</string>
<string name="pointer_location" msgid="7516929526199520173">"Көрсөткүчтүн турган жери"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Тандалган нерсе жараксыз болуп калган. Кайталап көрүңүз."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView сунуштаган иштеп чыгуучунун куралдары"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView топтому табылган жок."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Иштеп чыгуучунун куралдары иштетилген жок."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Сүрөт түсү режими"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB колдонуңуз"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Өчүк"</string>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index d1f1344..8044cce 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ບໍ່ສາມາດອັບເດດສຽງແວດລ້ອມໄດ້"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"ອຸປະກອນແຂກ. ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"ອຸປະກອນແຂກ. ແບັດເຕີຣີ 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_guest_media_only_battery_level" msgid="7928347900623812299">"ອຸປະກອນແຂກ (ສື່ເທົ່ານັ້ນ). ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"ອຸປະກອນແຂກ (ສື່ເທົ່ານັ້ນ). ແບັດເຕີຣີ 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ). ຊ: ແບັດເຕີຣີ <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_untethered_left_lea_support" msgid="7707464334346454950">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ). ຊ້າຍ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ). ຂວາ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"ອຸປະກອນແຂກ (ຮອງຮັບການແບ່ງປັນສຽງ). ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"ອຸປະກອນແຂກ (ຮອງຮັບການແບ່ງປັນສຽງ). ແບັດເຕີຣີ 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"ອຸປະກອນແຂກ (ຮອງຮັບການແບ່ງປັນສຽງ)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"ອຸປະກອນແຂກ"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"ອຸປະກອນແຂກ (ສື່ເທົ່ານັ້ນ)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ຮອງຮັບການແບ່ງປັນສຽງ"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"ອຸປະກອນແຂກ. ຮອງຮັບການແບ່ງປັນສຽງ"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ), ຊ້າຍເທົ່ານັ້ນ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ), ຂວາເທົ່ານັ້ນ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ), ຊ້າຍ ແລະ ຂວາ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"ການສະແດງຜົນໂດຍໃຊ້ຮາດແວຊ່ວຍ"</string>
<string name="media_category" msgid="8122076702526144053">"ມີເດຍ"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"ກຳລັງກວດສອບ"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ການຈັດການໜ້າຈໍ"</string>
<string name="strict_mode" msgid="889864762140862437">"ເປີດໃຊ້ໂໝດເຄັ່ງຄັດ"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"ກະພິບໜ້າຈໍເມື່ອມີແອັບເຮັດວຽກດົນເກີນໄປໃນເທຣດຫຼັກ"</string>
<string name="pointer_location" msgid="7516929526199520173">"ຕຳແໜ່ງໂຕຊີ້"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"ບໍ່ສາມາດໃຊ້ການເລືອກນີ້ໄດ້ອີກຕໍ່ໄປແລ້ວ. ກະລຸນາລອງໃໝ່."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"ບໍ່ພົບແພັກເກດ WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"ບໍ່ສາມາດເປີດໃຊ້ DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"ໂໝດສີຮູບ"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"ໃຊ້ sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"ປິດນຳໃຊ້ແລ້ວ"</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index 7f94010..aec236a 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nepavyko atnaujinti aplinkos"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Svečio įrenginys. Akumuliatorius lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Svečio įrenginys. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Svečio įrenginys (tik medija). Akumuliatorius lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Svečio įrenginys (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Prijungta (palaikomas garso įrašų bendrinimas), 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_untethered_left_lea_support" msgid="7707464334346454950">"Prijungta (palaikomas garso įrašų bendrinimas). Akumuliatoriaus lygis kairėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Prijungta (palaikomas garso įrašų bendrinimas). Akumuliatoriaus lygis dešinėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Prijungta (palaikomas garso įrašų bendrinimas)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Svečio įrenginys (palaikomas garso įrašų bendrinimas). Akumuliatorius lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Svečio įrenginys (palaikomas garso įrašų bendrinimas). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Svečio įrenginys (palaikomas garso įrašų bendrinimas)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktyvus (tik medija)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Svečio įrenginys"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Svečio įrenginys (tik medija)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Palaikomas garso įrašų bendrinimas"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Svečio įrenginys. Palaikomas garso įrašų bendrinimas"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktyvus (tik medija), tik kairė"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktyvus (tik medija), tik dešinė"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktyvus (tik medija), kairė ir dešinė"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Aparatinės įrangos paspartintas pateikimas"</string>
<string name="media_category" msgid="8122076702526144053">"Medija"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Stebėjimas"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Langų tvarkymas"</string>
<string name="strict_mode" msgid="889864762140862437">"Įgal. griežtas režimas"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Ekr. blyksės, kai pr. atl. ilgus proc. pgr. gijoje"</string>
<string name="pointer_location" msgid="7516929526199520173">"Žymiklio vieta"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"„WebView“ diegimas"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"„WebView“ diegimo nustatymas"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Šios parinkties nebegalima pasirinkti. Bandykite dar kartą."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"„WebView“ kūrėjo įrankiai"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Žiniatinklio rodinio paketas nerastas."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Nepavyko paleisti kūrėjo įrankių."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Nuotraukos spalvos režimas"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Naudoti sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Išjungtas"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 50a56d4..5716f8f 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nevarēja atjaunināt apkārtnes skaņas"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Viesa ierīce. Akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Viesa ierīce. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Viesa ierīce (tikai multividei). Akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Viesa ierīce (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Izveidots savienojums (atbalsta audio kopīgošanu). 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_untethered_left_lea_support" msgid="7707464334346454950">"Izveidots savienojums (atbalsta audio kopīgošanu). Akumulatora uzlādes līmenis kreisajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Izveidots savienojums (atbalsta audio kopīgošanu). Akumulatora uzlādes līmenis labajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Izveidots savienojums (atbalsta audio kopīgošanu)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Viesa ierīce (atbalsta audio kopīgošanu). Akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Viesa ierīce (atbalsta audio kopīgošanu). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Viesa ierīce (atbalsta audio kopīgošanu)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktīvs (tikai multividei)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Viesa ierīce"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Viesa ierīce (tikai multividei)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Atbalsta audio kopīgošanu"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Viesa ierīce. Atbalsta audio kopīgošanu"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktīvs (tikai multivide), tikai kreisās puses aparāts"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktīvs (tikai multivide), tikai labās puses aparāts"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktīvs (tikai multivide), kreisās un labās puses aparāts"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Aparatūras paātrinātā atveidošana"</string>
<string name="media_category" msgid="8122076702526144053">"Multivide"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Pārraudzība"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Logu pārvaldība"</string>
<string name="strict_mode" msgid="889864762140862437">"Precīzais rež. ir iespēj."</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Zibsnīt ekrānu, ja liet. ilgi darbojas galv. pav."</string>
<string name="pointer_location" msgid="7516929526199520173">"Rādītāja atrašanās vieta"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ieviešana"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Iestatīt WebView ieviešanu"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Šī iespēja vairs nav derīga. Mēģiniet vēlreiz."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView izstrādātāja rīki"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView pakotne netika atrasta."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Nevarēja palaist izstrādātāja rīkus."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Attēla krāsu režīms"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Izmantot sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Atspējota"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index e86a6ce..bc6409d 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Не можеше да се ажурира опкружувањето"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Гостински уред. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Гостински уред. Л: <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_guest_media_only_battery_level" msgid="7928347900623812299">"Гостински уред (само аудиовизуелни содржини). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Гостински уред (само аудиовизуелни содржини). Л: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Поврзано (поддржува споделување аудио). Л: <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_untethered_left_lea_support" msgid="7707464334346454950">"Поврзано (поддржува споделување аудио). Лево: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Поврзано (поддржува споделување аудио). Десно: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Поврзано (поддржува споделување аудио)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Гостински уред (поддржува споделување аудио). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Гостински уред (поддржува споделување аудио). Л: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Гостински уред (поддржува споделување аудио)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активно (само аудиовизуелни содржини)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Гостински уред"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Гостински уред (само аудиовизуелни содржини)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Поддржува споделување аудио"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Гостински уред. Поддржува споделување аудио"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активно (само аудиовизуелни содржини), само лево"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активно (само аудиовизуелни содржини), само десно"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активно (само аудиовизуелни содржини), лево и десно"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Хардверско забрзување"</string>
<string name="media_category" msgid="8122076702526144053">"Аудиовизуелни содржини"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Следење"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Управување со прозорци"</string>
<string name="strict_mode" msgid="889864762140862437">"Овозможен е строг режим"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Трепкај со екранот при долги операции на главна нишка"</string>
<string name="pointer_location" msgid="7516929526199520173">"Локација на покажувач"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Овој избор веќе не важи. Обидете се повторно."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Пакетот на WebView не е најден."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Не можеше да се стартува DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Режим на боја на слика"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Користи sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Оневозможено"</string>
@@ -666,7 +652,7 @@
<string name="user_grant_admin_title" msgid="5157031020083343984">"Да се постави корисников како администратор?"</string>
<string name="user_grant_admin_message" msgid="1673791931033486709">"Администраторите имаат посебни привилегии што другите корисници ги немаат. Администраторот може да управува со сите корисници, да го ажурира или ресетира уредов, да ги менува поставките, да ги прегледува сите инсталирани апликации и да доделува или одзема администраторски привилегии на другите корисници."</string>
<string name="user_grant_admin_button" msgid="5441486731331725756">"Постави како администратор"</string>
- <string name="user_setup_dialog_title" msgid="8037342066381939995">"Ќе поставите корисник сега?"</string>
+ <string name="user_setup_dialog_title" msgid="8037342066381939995">"Да се постави корисник?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Проверете дали лицето е достапно да го земе уредот и да го постави својот простор"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Постави профил сега?"</string>
<string name="user_setup_button_setup_now" msgid="1708269547187760639">"Постави сега"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index f7ab232..bcadd7d 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"സറൗണ്ടിംഗ്സ് അപ്ഡേറ്റ് ചെയ്യാനായില്ല"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"അതിഥി ഉപകരണം. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"അതിഥി ഉപകരണം. ഇടതുവശത്ത്: <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_guest_media_only_battery_level" msgid="7928347900623812299">"അതിഥി ഉപകരണം (മീഡിയ മാത്രം). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"അതിഥി ഉപകരണം (മീഡിയ മാത്രം). ഇടതുവശത്ത്: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). ഇടതുവശത്ത്: <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_untethered_left_lea_support" msgid="7707464334346454950">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). ഇടത് വശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). വലത് വശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു)."</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"അതിഥി ഉപകരണം (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"അതിഥി ഉപകരണം (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). ഇടതുവശത്ത്: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"അതിഥി ഉപകരണം (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"സജീവം (മീഡിയ മാത്രം)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"അതിഥി ഉപകരണം"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"അതിഥി ഉപകരണം (മീഡിയ മാത്രം)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"അതിഥി ഉപകരണം. ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"സജീവം (മീഡിയ മാത്രം), ഇടതുവശത്ത് മാത്രം"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"സജീവം (മീഡിയ മാത്രം), വലതുവശത്ത് മാത്രം"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"സജീവം (മീഡിയ മാത്രം), ഇടതുവശത്തെയും വലതുവശത്തെയും"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"ഹാർഡ്വെയർ ത്വരിതപ്പെടുത്തിയ റെൻഡറിംഗ്"</string>
<string name="media_category" msgid="8122076702526144053">"മീഡിയ"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"മോണിറ്ററിംഗ്"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"വിൻഡോ മാനേജ്മെന്റ്"</string>
<string name="strict_mode" msgid="889864762140862437">"ഫോഴ്സ്മോഡ് സജീവമാക്കി"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"പ്രധാന ത്രെഡിൽ ആപ്പുകൾ ദൈർഘ്യമേറിയ പ്രവർത്തനങ്ങൾ നടത്തുമ്പോൾ സ്ക്രീൻ ഫ്ലാഷ് ചെയ്യുക"</string>
<string name="pointer_location" msgid="7516929526199520173">"പോയിന്റർ ലൊക്കേഷൻ"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"ഈ തിരഞ്ഞെടുപ്പിന് തുടർന്നങ്ങോട്ട് സാധുതയില്ല. വീണ്ടും ശ്രമിക്കുക."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView പാക്കേജ് കണ്ടെത്തിയില്ല."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools ലോഞ്ച് ചെയ്യാനായില്ല."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"ചിത്ര വർണ്ണ മോഡ്"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ഉപയോഗിക്കുക"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"പ്രവർത്തനരഹിതമാക്കി"</string>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index 4dc754e..2b45e85 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Орчин тойрныг шинэчилж чадсангүй"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Зочин төхөөрөмж. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарейн цэнэгтэй."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Зочин төхөөрөмж. З: <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_guest_media_only_battery_level" msgid="7928347900623812299">"Зочин төхөөрөмж (зөвхөн медиа). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарейн цэнэгтэй."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Зочин төхөөрөмж (зөвхөн медиа). З: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Холбогдсон (аудио хуваалцахыг дэмждэг). З: <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_untethered_left_lea_support" msgid="7707464334346454950">"Холбогдсон (аудио хуваалцахыг дэмждэг). Зүүн: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарей."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Холбогдсон (аудио хуваалцахыг дэмждэг). Баруун: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарей."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Холбогдсон (аудио хуваалцахыг дэмждэг)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Зочин төхөөрөмж (аудио хуваалцахыг дэмждэг). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарейн цэнэгтэй."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Зочин төхөөрөмж (аудио хуваалцахыг дэмждэг). З: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Зочин төхөөрөмж (аудио хуваалцахыг дэмждэг)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Идэвхтэй (зөвхөн медиа)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Зочин төхөөрөмж"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Зочин төхөөрөмж (зөвхөн медиа)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Аудио хуваалцахыг дэмждэг"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Зочин төхөөрөмж. Аудио хуваалцахыг дэмждэг"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Идэвхтэй (зөвхөн медиа), зөвхөн зүүн"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Идэвхтэй (зөвхөн медиа), зөвхөн баруун"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Идэвхтэй (зөвхөн медиа), зүүн болон баруун"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Техник хангамжийн хурдасгасан үзүүлэлт"</string>
<string name="media_category" msgid="8122076702526144053">"Медиа"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Мониторинг"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Цонхны удирдлага"</string>
<string name="strict_mode" msgid="889864762140862437">"Хатуу горимыг идэвхжүүлсэн"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Аппууд үндсэн хэлхээс дээр удаан хугацаанд үйлдлүүд хийх үед дэлгэцийг анивчуулах"</string>
<string name="pointer_location" msgid="7516929526199520173">"Чиглүүлэгчийн байршил"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Энэ сонголт хүчингүй байна. Дахин оролдоно уу."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView-н DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView-н багц олдсонгүй."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools-г эхлүүлж чадсангүй."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"\"Зургийн өнгө\" горим"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB-г ашиглах"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Идэвхгүй болсон"</string>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index eef39c4..826d601 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"जवळपासचे आवाज अपडेट करता आले नाहीत"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"अतिथी डिव्हाइस. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"अतिथी डिव्हाइस. डावीकडे: <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_guest_media_only_battery_level" msgid="7928347900623812299">"अतिथी डिव्हाइस (फक्त मीडिया). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"अतिथी डिव्हाइस (फक्त मीडिया). डावीकडे: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते). डावीकडे: <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_untethered_left_lea_support" msgid="7707464334346454950">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते). डावीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते). उजवीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"अतिथी डिव्हाइस (ऑडिओ शेअरिंगला सपोर्ट करते). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"अतिथी डिव्हाइस (ऑडिओ शेअरिंगला सपोर्ट करते). डावीकडे: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"अतिथी डिव्हाइस (ऑडिओ शेअरिंगला सपोर्ट करते)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"अॅक्टिव्ह आहे (फक्त मीडिया)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"अतिथी डिव्हाइस"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"अतिथी डिव्हाइस (फक्त मीडिया)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ऑडिओ शेअरिंगला सपोर्ट करते"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"अतिथी डिव्हाइस. ऑडिओ शेअरिंगला सपोर्ट करते"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"अॅक्टिव्ह आहे (फक्त मीडिया), फक्त डावे"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"अॅक्टिव्ह आहे (फक्त मीडिया), फक्त उजवे"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"अॅक्टिव्ह आहे (फक्त मीडिया), डावे आणि उजवे"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"हार्डवेअर अॅक्सिलरेटेड रेंडरिंग"</string>
<string name="media_category" msgid="8122076702526144053">"मीडिया"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"परीक्षण"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"विंडो व्यवस्थापन"</string>
<string name="strict_mode" msgid="889864762140862437">"कठोर मोड सुरू"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"मुख्य थ्रेडवर अॅप्स मोठी कार्ये करतात तेव्हा स्क्रीन फ्लॅश करा"</string>
<string name="pointer_location" msgid="7516929526199520173">"पॉइंटर स्थान"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"वेबदृश्य अंमलबजावणी"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"वेबदृश्य अंमलबजावणी सेट करा"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ही निवड यापुढे वैध असणार नाही. पुन्हा प्रयत्न करा."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView पॅकेज आढळले नाही."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools लाँच करता आले नाही."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"चित्र रंग मोड"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB वापरा"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"बंद केले"</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index ca4649c..a2f9562 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Tidak dapat mengemaskinikan persekitaran"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Peranti tetamu. Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Peranti tetamu. L: <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_guest_media_only_battery_level" msgid="7928347900623812299">"Peranti tetamu (media sahaja). Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Peranti tetamu (media sahaja). L: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Disambungkan (menyokong perkongsian audio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Disambungkan (menyokong perkongsian audio). Kiri: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Disambungkan (menyokong perkongsian audio). Kanan: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Disambungkan (menyokong perkongsian audio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Peranti tetamu (menyokong perkongsian audio). Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Peranti tetamu (menyokong perkongsian audio). L: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Peranti tetamu (menyokong perkongsian audio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktif (media sahaja)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Peranti tetamu"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Peranti tetamu (media sahaja)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Menyokong perkongsian audio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Peranti tetamu. Menyokong perkongsian audio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktif (media sahaja), kiri sahaja"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktif (media sahaja), kanan sahaja"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktif (media sahaja), kiri dan kanan"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Pemaparan dipercepat perkakasan"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Memantau"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Pengurusan Tetingkap"</string>
<string name="strict_mode" msgid="889864762140862437">"Mod tegas didayakan"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Kelip skrin apabila apl beroperasi lama pada urutan utama"</string>
<string name="pointer_location" msgid="7516929526199520173">"Lokasi penuding"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Pelaksanaan WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Tetapkan pelaksanaan WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Pilihan ini tidak lagi sah. Cuba lagi."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Alatan Pembangun Paparan Web"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Pakej Paparan Web tidak ditemukan."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Tidak dapat melancarkan Alatan Pembangun."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Mod warna gambar"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Gunakan sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Dilumpuhkan"</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index 1225e4c..b0d86af 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ဝန်းကျင်အသံ အပ်ဒိတ်လုပ်၍ မရလိုက်ပါ"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"ဧည့်သည်စက်ပစ္စည်း။ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"ဧည့်သည်စက်ပစ္စည်း။ ဘက်ထရီ 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_guest_media_only_battery_level" msgid="7928347900623812299">"ဧည့်သည်စက်ပစ္စည်း (မီဒီယာသီးသန့်)။ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"ဧည့်သည်စက်ပစ္စည်း (မီဒီယာသီးသန့်)။ ဘက်ထရီ 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ဘက်ထရီ 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_untethered_left_lea_support" msgid="7707464334346454950">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ဘယ်- ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ညာ- ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"ဧည့်သည်စက်ပစ္စည်း (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"ဧည့်သည်စက်ပစ္စည်း (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ဘက်ထရီ 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"ဧည့်သည်စက်ပစ္စည်း (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"သုံးနေသည် (မီဒီယာသီးသန့်)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"ဧည့်သည်စက်ပစ္စည်း"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"ဧည့်သည်စက်ပစ္စည်း (မီဒီယာသီးသန့်)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"ဧည့်သည်စက်ပစ္စည်း။ အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"သုံးနေသည် (မီဒီယာသီးသန့်)၊ ဘယ်သီးသန့်"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"သုံးနေသည် (မီဒီယာသီးသန့်)၊ ညာသီးသန့်"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"သုံးနေသည် (မီဒီယာသီးသန့်)၊ ဘယ်နှင့် ညာ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"ဟာ့ဒ်ဝဲ အရှိန်မြှင့် ပုံဖော်ခြင်း"</string>
<string name="media_category" msgid="8122076702526144053">"မီဒီယာ"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"စောင့်ကြည့်စစ်ဆေးခြင်း"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ဝင်းဒိုး စီမံခန့်ခွဲမှု"</string>
<string name="strict_mode" msgid="889864762140862437">"တင်းကြပ်သောစနစ် ဖွင့်ရန်"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"အက်ပ်လုပ်ဆောင်မှု ရှည်ကြာလျှင် စကရင်ပြန်စသည်"</string>
<string name="pointer_location" msgid="7516929526199520173">"မြား၏တည်နေရာ"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"ဤရွေးချယ်မှု မှန်ကန်မှု မရှိတော့ပါ။ ထပ်စမ်းကြည့်ပါ။"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"ဝဘ်မြင်ကွင်း ဆောဖ့်ဝဲတူးလ်များ"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"ဝဘ်မြင်ကွင်း ပက်ကေ့ဂျ် မတွေ့ပါ။"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"ဆောဖ့်ဝဲတူးလ်များ စတင်၍ မရလိုက်ပါ။"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"ဓာတ်ပုံအရောင်မုဒ်"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ကို အသုံးပြုပါ"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"ပိတ်ထားသည်"</string>
@@ -667,7 +653,7 @@
<string name="user_grant_admin_message" msgid="1673791931033486709">"စီမံခန့်ခွဲသူများ၌ အခြားအသုံးပြုသူများတွင်မရှိသော အထူးဆောင်ရွက်ခွင့်များရှိသည်။ စီမံခန့်ခွဲသူက အသုံးပြုသူအားလုံးကို စီမံခြင်း၊ ဤစက်ပစ္စည်းကို အပ်ဒိတ်လုပ်ခြင်း (သို့) ပြင်ဆင်သတ်မှတ်ခြင်း၊ ဆက်တင်များပြင်ဆင်ခြင်း၊ ထည့်သွင်းထားသောအက်ပ်အားလုံးကို ကြည့်ခြင်းနှင့် အခြားသူများအတွက် စီမံခန့်ခွဲသူ ဆောင်ရွက်ခွင့်များပေးခြင်း (သို့) ရုပ်သိမ်းခြင်းတို့ လုပ်နိုင်သည်။"</string>
<string name="user_grant_admin_button" msgid="5441486731331725756">"စီမံခန့်ခွဲသူအဖြစ် သတ်မှတ်ရန်"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"အသုံးပြုသူကို ယခုသတ်မှတ်မလား။"</string>
- <string name="user_setup_dialog_message" msgid="269931619868102841">"ထိုသူသည် ကိရိယာကိုယူ၍ ၎င်းတို့၏နေရာများကို ယခုသတ်မှတ်နိုင်ရမည်"</string>
+ <string name="user_setup_dialog_message" msgid="269931619868102841">"သူသည် ကိရိယာကိုယူ၍ သူ၏နေရာကို ယခုသတ်မှတ်နိုင်ရမည်"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ယခု ကိုယ်ရေးအချက်အလက်ကို အစီအမံလုပ်မည်လား?"</string>
<string name="user_setup_button_setup_now" msgid="1708269547187760639">"ယခု သတ်မှတ်ပါမည်"</string>
<string name="user_setup_button_setup_later" msgid="8712980133555493516">"ယခုမလုပ်ပါ"</string>
@@ -679,7 +665,7 @@
<string name="user_need_lock_message" msgid="4311424336209509301">"ကန့်သတ်ကိုယ်ရေးအချက်အလက်တစ်ခုကို မပြုလုပ်မီ သင်၏ အပလီကေးရှင်းများနှင့် ကိုယ်ပိုင်အချက်အလက်များကို ကာကွယ်ရန် မျက်နှာပြင်သော့ချခြင်းကို စီမံရန် လိုအပ်လိမ့်မည်"</string>
<string name="user_set_lock_button" msgid="1427128184982594856">"သော့ချရန် သတ်မှတ်ပါ"</string>
<string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> သို့ ပြောင်းရန်"</string>
- <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"အသုံးပြုသူအသစ် ပြုလုပ်နေသည်…"</string>
+ <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"အသုံးပြုသူအသစ်အတွက် ပြင်ဆင်နေသည်…"</string>
<string name="creating_new_guest_dialog_message" msgid="1114905602181350690">"ဧည့်သည်သစ် ပြုလုပ်နေသည်…"</string>
<string name="add_user_failed" msgid="4809887794313944872">"အသုံးပြုသူအသစ် ပြုလုပ်၍မရပါ"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"ဧည့်သည်သစ် ပြုလုပ်၍မရပါ"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 7c9b10f..755df51 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Kunne ikke oppdatere omgivelsene"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gjesteenhet. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gjesteenhet. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Gjesteenhet (bare medieinnhold). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gjesteenhet (bare medieinnhold). 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">"Tilkoblet (støtter lyddeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Tilkoblet (støtter lyddeling). 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_untethered_left_lea_support" msgid="7707464334346454950">"Tilkoblet (støtter lyddeling). Venstre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Tilkoblet (støtter lyddeling). Høyre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Tilkoblet (støtter lyddeling)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gjesteenhet (støtter lyddeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gjesteenhet (støtter lyddeling). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gjesteenhet (støtter lyddeling)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (bare medieinnhold)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gjesteenhet"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gjesteenhet (bare medieinnhold)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Støtter lyddeling"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gjesteenhet. Støtter lyddeling"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (bare medieinnhold), bare venstre"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (bare medieinnhold), bare høyre"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (bare medieinnhold), høyre og venstre"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Maskinvareakselerert gjengivelse"</string>
<string name="media_category" msgid="8122076702526144053">"Medier"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Overvåking"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Vindusadministrering"</string>
<string name="strict_mode" msgid="889864762140862437">"Slå på streng modus"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Skjermblink ved lange apphandlinger på hovedtråd"</string>
<string name="pointer_location" msgid="7516929526199520173">"Pekerplassering"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Angi WebView-implementering"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Dette valget er ikke gyldig lenger. Prøv på nytt."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Utviklerverktøy for WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Fant ikke WebView-pakken."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Kunne ikke starte utviklerverktøyene."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Fargemodus for bilder"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Bruk sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Slått av"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index e2e7a8f..0a9ac17 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"वरपरका आवाजसम्बन्धी सेटिङ अपडेट गर्न सकिएन"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"अतिथि डिभाइस। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"अतिथि डिभाइस। बायाँ: <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_guest_media_only_battery_level" msgid="7928347900623812299">"अतिथि डिभाइस (मिडिया मात्र)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"अतिथि डिभाइस (मिडिया मात्र)। बायाँ: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)। बायाँ: <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_untethered_left_lea_support" msgid="7707464334346454950">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)। बायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)। दायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"अतिथि डिभाइस (अडियो सेयर गर्ने सुविधा प्रयोग गर्न मिल्छ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"अतिथि डिभाइस (अडियो सेयर गर्ने सुविधा प्रयोग गर्न मिल्छ)। बायाँ: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"अतिथि डिभाइस (अडियो सेयर गर्ने सुविधा प्रयोग गर्न मिल्छ)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"सक्रिय छ (मिडिया मात्र)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"अतिथि डिभाइस"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"अतिथि डिभाइस (मिडिया मात्र)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"अडियो सेयर गर्न मिल्छ"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"अतिथि डिभाइस। अडियो सेयर गर्ने सुविधा प्रयोग गर्न मिल्छ"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"सक्रिय छ (मिडिया मात्र), बायाँ मात्र"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"सक्रिय छ (मिडिया मात्र), दायाँ मात्र"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"सक्रिय छ (मिडिया मात्र), बायाँ र दायाँ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"हार्डवेयरले बढाएको रेन्डरिङ"</string>
<string name="media_category" msgid="8122076702526144053">"मिडिया"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"अनुगमन गरिँदै छ"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"विन्डो व्यवस्थापन"</string>
<string name="strict_mode" msgid="889864762140862437">"स्ट्रिक्ट मोड अन गर्नुहोस्"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"एपले मुख्य थ्रेडमा लामा गतिविधि गर्दा स्क्रिन फ्ल्यास गर्नुहोस्"</string>
<string name="pointer_location" msgid="7516929526199520173">"पोइन्टरको स्थान"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"यो छनोट अब मान्य छैन। फेरि प्रयास गर्नुहोस्।"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView सम्बन्धी विकासकर्ता टुलहरू"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView प्याकेज भेटिएन।"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"विकासकर्ताका टुलहरू लन्च गर्न सकिएन।"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"चित्र रङ्ग मोड"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB प्रयोग गर्नुहोस्"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"अफ गरिएको छ"</string>
@@ -678,7 +664,7 @@
<string name="profile_info_settings_title" msgid="105699672534365099">"प्रोफाइलको जानकारी"</string>
<string name="user_need_lock_message" msgid="4311424336209509301">"निषेधयुक्त प्रोफाइल बनाउनु अघि तपाईँको एप र व्यक्तिगत डेटा सुरक्षा गर्नाका लागि तपाईँले स्क्रिन लक सेटअप गर्नु पर्दछ ।"</string>
<string name="user_set_lock_button" msgid="1427128184982594856">"लक सेट गर्नुहोस्"</string>
- <string name="user_switch_to_user" msgid="6975428297154968543">"प्रयोगकर्ता बदलेर <xliff:g id="USER_NAME">%s</xliff:g> बनाउनुहोस्"</string>
+ <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> प्रयोग गर्नुहोस्"</string>
<string name="creating_new_user_dialog_message" msgid="7232880257538970375">"नयाँ प्रयोगकर्ता बनाइँदै छ…"</string>
<string name="creating_new_guest_dialog_message" msgid="1114905602181350690">"नयाँ अतिथि बनाइँदै छ…"</string>
<string name="add_user_failed" msgid="4809887794313944872">"नयाँ प्रयोगकर्ता सिर्जना गर्न सकिएन"</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 6dfcc7b..f71f3ab 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Kan omgeving niet updaten"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gastapparaat. Batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gastapparaat. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Gastapparaat (alleen media). Batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gastapparaat (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Verbonden (ondersteunt audio delen), 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_untethered_left_lea_support" msgid="7707464334346454950">"Verbonden (ondersteunt audio delen). Links: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Verbonden (ondersteunt audio delen). Rechts: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Verbonden (ondersteunt audio delen)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gastapparaat (ondersteunt audio delen). Batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gastapparaat (ondersteunt audio delen). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gastapparaat (ondersteunt audio delen)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Actief (alleen media)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gastapparaat"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gastapparaat (alleen media)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Ondersteunt audio delen"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gastapparaat. Ondersteunt audio delen."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Actief (alleen media), alleen links"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Actief (alleen media), alleen rechts"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Actief (alleen media), links en rechts"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Rendering met hardwareversnelling"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Controle"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Vensterbeheer"</string>
<string name="strict_mode" msgid="889864762140862437">"Strikte modus staat aan"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Knipperend scherm bij lange bewerkingen door apps"</string>
<string name="pointer_location" msgid="7516929526199520173">"Cursorlocatie"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementatie"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView-implementatie instellen"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Deze keuze is niet meer geldig. Probeer het opnieuw."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView-pakket niet gevonden."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Kan DevTools niet starten."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Kleurenmodus voor afbeeldingen"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB gebruiken"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Uitgezet"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 44c819c..f30ae3d 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ପରିପାର୍ଶ୍ୱକୁ ଅପଡେଟ କରାଯାଇପାରିଲା ନାହିଁ"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"ଅତିଥି ଡିଭାଇସ। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"ଅତିଥି ଡିଭାଇସ। ବାମ: <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_guest_media_only_battery_level" msgid="7928347900623812299">"ଅତିଥି ଡିଭାଇସ (କେବଳ ମିଡିଆ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"ଅତିଥି ଡିଭାଇସ (କେବଳ ମିଡିଆ)। ବାମ: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସମର୍ଥନ କରେ)। ବାମ: <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_untethered_left_lea_support" msgid="7707464334346454950">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସମର୍ଥନ କରେ)। ବାମ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ)। ଡାହାଣ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସମର୍ଥନ କରେ)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"ଅତିଥି ଡିଭାଇସ (ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"ଅତିଥି ଡିଭାଇସ (ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ)। ବାମ: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"ଅତିଥି ଡିଭାଇସ (ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"ଅତିଥି ଡିଭାଇସ"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"ଅତିଥି ଡିଭାଇସ (କେବଳ ମିଡିଆ)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"ଅତିଥି ଡିଭାଇସ। ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ), କେବଳ ବାମ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ), କେବଳ ଡାହାଣ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ), ବାମ ଏବଂ ଡାହାଣ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"ହାର୍ଡୱେର୍ ଆକ୍ସଲରେଟେଡ୍ ରେଣ୍ଡରିଙ୍ଗ"</string>
<string name="media_category" msgid="8122076702526144053">"ମିଡିଆ"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"ମନିଟରିଙ୍ଗ"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ୱିଣ୍ଡୋ ପରିଚାଳନା"</string>
<string name="strict_mode" msgid="889864762140862437">"କଡ଼ା ମୋଡ୍ ସକ୍ଷମ କରାଯାଇଛି"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"ମୁଖ୍ୟ ଥ୍ରେଡ୍ରେ ଆପ୍ ଦୀର୍ଘ ସମୟ କାର୍ଯ୍ୟ କଲେ ସ୍କ୍ରୀନ୍ ଫ୍ଲାଶ୍ କରନ୍ତୁ"</string>
<string name="pointer_location" msgid="7516929526199520173">"ପଏଣ୍ଟର୍ ଲୋକେସନ୍"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"ୱେବ୍ଭ୍ୟୁ ପ୍ରୟୋଗ"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView କାର୍ଯ୍ୟକାରିତାକୁ ସେଟ୍ କରନ୍ତୁ"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ଏହି ପସନ୍ଦ ଆଉ ମାନ୍ୟ ନାହିଁ। ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView ମିଳିଲା ନାହିଁ।"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools ଲଞ୍ଚ କରାଯାଇପାରିଲା ନାହିଁ।"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"ପିକ୍ଚର୍ ରଙ୍ଗ ମୋଡ୍"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"ଅକ୍ଷମ ହୋଇଛି"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 731c195..2c2eab2 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ਆਲੇ-ਦੁਆਲੇ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ। ਖੱਬੇ ਪਾਸੇ: <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_guest_media_only_battery_level" msgid="7928347900623812299">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ (ਸਿਰਫ਼ ਮੀਡੀਆ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ (ਸਿਰਫ਼ ਮੀਡੀਆ)। ਖੱਬੇ ਪਾਸੇ: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। ਖੱਬੇ ਪਾਸੇ: <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_untethered_left_lea_support" msgid="7707464334346454950">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। ਖੱਬੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। ਸੱਜੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। ਖੱਬੇ ਪਾਸੇ: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ (ਸਿਰਫ਼ ਮੀਡੀਆ)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"ਮਹਿਮਾਨ ਡੀਵਾਈਸ। ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ), ਸਿਰਫ਼ ਖੱਬਾ"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ), ਸਿਰਫ਼ ਸੱਜਾ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ), ਖੱਬਾ ਅਤੇ ਸੱਜਾ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"ਹਾਰਡਵੇਅਰ ਐਕਸੈੱਲਰੇਟਿਡ ਰੈਂਡਰਿੰਗ"</string>
<string name="media_category" msgid="8122076702526144053">"ਮੀਡੀਆ"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"ਨਿਰੀਖਣ ਕਰਨਾ"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ਵਿੰਡੋ ਪ੍ਰਬੰਧਨ"</string>
<string name="strict_mode" msgid="889864762140862437">"ਸਟ੍ਰਿਕਟ ਮੋਡ ਚਾਲੂ ਹੈ"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"ਐਪਾਂ ਵੱਲੋਂ ਮੁੱਖ ਥ੍ਰੈੱਡ \'ਤੇ ਲੰਬੀਆਂ ਕਾਰਵਾਈਆਂ ਕਰਨ \'ਤੇ ਸਕ੍ਰੀਨ ਫਲੈਸ਼ ਕਰੋ"</string>
<string name="pointer_location" msgid="7516929526199520173">"ਪੁਆਇੰਟਰ ਟਿਕਾਣਾ"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"ਇਹ ਚੋਣ ਹੁਣ ਵੈਧ ਨਹੀਂ ਹੈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView ਪੈਕੇਜ ਨਹੀਂ ਮਿਲਿਆ।"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools ਨੂੰ ਲਾਂਚ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"ਤਸਵੀਰ ਰੰਗ ਮੋਡ"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ਵਰਤੋਂ ਕਰੋ"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"ਬੰਦ ਹੈ"</string>
@@ -666,8 +652,8 @@
<string name="user_grant_admin_title" msgid="5157031020083343984">"ਕੀ ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਪ੍ਰਸ਼ਾਸਕ ਬਣਾਉਣਾ ਹੈ?"</string>
<string name="user_grant_admin_message" msgid="1673791931033486709">"ਪ੍ਰਸ਼ਾਸਕਾਂ ਕੋਲ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਹੁੰਦੇ ਹਨ ਜੋ ਹੋਰ ਵਰਤੋਂਕਾਰਾਂ ਕੋਲ ਨਹੀਂ ਹੁੰਦੇ। ਇੱਕ ਪ੍ਰਸ਼ਾਸਕ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕਦਾ ਹੈ, ਇਸ ਡੀਵਾਈਸ ਨੂੰ ਅੱਪਡੇਟ ਜਾਂ ਰੀਸੈੱਟ ਕਰ ਸਕਦਾ ਹੈ, ਸੈਟਿੰਗਾਂ ਨੂੰ ਸੋਧ ਸਕਦਾ ਹੈ, ਸਾਰੀਆਂ ਸਥਾਪਤ ਐਪਾਂ ਨੂੰ ਦੇਖ ਸਕਦਾ ਹੈ, ਅਤੇ ਦੂਜਿਆਂ ਲਈ ਪ੍ਰਸ਼ਾਸਕ ਦੇ ਅਧਿਕਾਰਾਂ ਨੂੰ ਮਨਜ਼ੂਰ ਜਾਂ ਰੱਦ ਕਰ ਸਕਦਾ ਹੈ।"</string>
<string name="user_grant_admin_button" msgid="5441486731331725756">"ਪ੍ਰਸ਼ਾਸਕ ਬਣਾਓ"</string>
- <string name="user_setup_dialog_title" msgid="8037342066381939995">"ਕੀ ਹੁਣ ਵਰਤੋਂਕਾਰ ਸੈੱਟ ਅੱਪ ਕਰਨਾ ਹੈ?"</string>
- <string name="user_setup_dialog_message" msgid="269931619868102841">"ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਵਿਅਕਤੀ ਡੀਵਾਈਸ ਵਰਤਣ ਅਤੇ ਆਪਣੀ ਜਗ੍ਹਾ ਦੇ ਸੈੱਟ ਅੱਪ ਲਈ ਉਪਲਬਧ ਹੈ"</string>
+ <string name="user_setup_dialog_title" msgid="8037342066381939995">"ਕੀ ਹੁਣ ਵਰਤੋਂਕਾਰ ਸੈੱਟਅੱਪ ਕਰਨਾ ਹੈ?"</string>
+ <string name="user_setup_dialog_message" msgid="269931619868102841">"ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਵਿਅਕਤੀ ਡੀਵਾਈਸ ਵਰਤਣ ਅਤੇ ਆਪਣੀ ਜਗ੍ਹਾ ਦੇ ਸੈੱਟਅੱਪ ਲਈ ਉਪਲਬਧ ਹੈ"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ਕੀ ਹੁਣ ਪ੍ਰੋਫਾਈਲ ਸੈੱਟ ਅੱਪ ਕਰਨੀ ਹੈ?"</string>
<string name="user_setup_button_setup_now" msgid="1708269547187760639">"ਹੁਣੇ ਸੈੱਟ ਅੱਪ ਕਰੋ"</string>
<string name="user_setup_button_setup_later" msgid="8712980133555493516">"ਅਜੇ ਨਹੀਂ"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index b9adae2..79be6b3 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nie udało się zaktualizować otoczenia"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Urządzenie gościa. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Urządzenie gościa. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Urządzenie gościa (tylko multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Urządzenie gościa (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Połączone (obsługa udostępniania dźwięku), 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_untethered_left_lea_support" msgid="7707464334346454950">"Połączone (obsługa udostępniania dźwięku). Lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Połączone (obsługa udostępniania dźwięku). Prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Połączone (obsługa udostępniania dźwięku)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Urządzenie gościa (obsługuje udostępnianie dźwięku). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Urządzenie gościa (obsługuje udostępnianie dźwięku). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Urządzenie gościa (obsługuje udostępnianie dźwięku)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktywne (tylko multimedia)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Urządzenie gościa"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Urządzenie gościa (tylko multimedia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Obsługa udostępniania dźwięku"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Urządzenie gościa. Obsługuje udostępnianie dźwięku"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktywne (tylko multimedia), tylko lewa"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktywne (tylko multimedia), tylko prawa"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktywne (tylko multimedia), lewa i prawa"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Sprzętowa akceleracja renderowania"</string>
<string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorowanie"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Zarządzanie oknami"</string>
<string name="strict_mode" msgid="889864762140862437">"Tryb ścisły włączony"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Miganie ekranu podczas długich operacji w wątku głównym"</string>
<string name="pointer_location" msgid="7516929526199520173">"Lokalizacja wskaźnika"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementacja WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ustaw implementację WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ta opcja nie jest już obsługiwana. Spróbuj ponownie."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Narzędzia deweloperskie WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Nie znaleziono pakietu WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Nie udało się uruchomić Narzędzi deweloperskich."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Tryb kolorów obrazu"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Użyj sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Wyłączone"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 5b3bb06..e16e355 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Não foi possível atualizar o som ambiente"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Dispositivo convidado. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Dispositivo convidado. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Dispositivo convidado (somente mídia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Dispositivo convidado (somente 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (aceita compartilhamento de áudio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (aceita compartilhamento de áudio). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (aceita compartilhamento de áudio). Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (aceita compartilhamento de áudio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Dispositivo convidado (aceita compartilhamento de áudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Dispositivo convidado (aceita compartilhamento de áudio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Dispositivo convidado (aceita compartilhamento de áudio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ativo (apenas mídia)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Dispositivo convidado"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Dispositivo convidado (somente mídia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Com suporte ao compartilhamento de áudio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Dispositivo convidado. Aceita compartilhamento de áudio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ativo (apenas mídia), apenas esquerdo"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ativo (apenas mídia), somente direito"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ativo (apenas mídia), esquerdo e direito"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderização acelerada por hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Mídia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoramento"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gerenciamento de janelas"</string>
<string name="strict_mode" msgid="889864762140862437">"Modo restrito ativado"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Piscar tela se apps demorarem no processo principal"</string>
<string name="pointer_location" msgid="7516929526199520173">"Localização do cursor"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementação do WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Configurar implementação do WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opção não é mais válida. Tente novamente."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools do WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"O pacote WebView não foi encontrado."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Não foi possível abrir o DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Modo de cor da imagem"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Usar sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desativado"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index e6b343a..e4381d6 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -113,33 +113,23 @@
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Dispositivo convidado. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Dispositivo convidado. E: <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 bateria."</string>
+ <string name="bluetooth_guest_media_only_battery_level" msgid="7928347900623812299">"Dispositivo convidado (apenas para multimédia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Dispositivo convidado (apenas para multimédia). E: <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 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ligado (suporta partilha de áudio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Ligado (suporta a partilha de áudio). Esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ligado (suporta a partilha de áudio). Direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ligado (suporta a partilha de áudio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Dispositivo convidado (compatível com partilha de áudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Dispositivo convidado (compatível com partilha de áudio). E: <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 bateria."</string>
+ <string name="bluetooth_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Dispositivo convidado (compatível com partilha de áudio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ativo (apenas para multimédia)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Dispositivo convidado"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Dispositivo convidado (apenas para multimédia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Suporta partilha de áudio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Dispositivo convidado. Compatível com partilha de áudio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ativo (apenas para multimédia), apenas esquerdo"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ativo (apenas para multimédia), apenas direito"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ativo (apenas para multimédia), esquerdo e direito"</string>
@@ -149,7 +139,7 @@
<string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string>
<string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acesso à internet"</string>
<string name="bluetooth_profile_pbap" msgid="2103406516858653017">"Acesso a contactos e histórico de chamadas"</string>
- <string name="bluetooth_profile_pbap_summary" msgid="402819589201138227">"As informações são usadas para anúncios por chamadas e outros"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="402819589201138227">"As informações são usadas para anunciar chamadas e outros"</string>
<string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Partilha da ligação à internet"</string>
<string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensagens de texto"</string>
<string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acesso ao SIM"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Conversão acelerada de hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Multimédia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorização"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gestão de janelas"</string>
<string name="strict_mode" msgid="889864762140862437">"Modo rigoroso ativado"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Piscar ecrã se app fazem oper. prolong. no tópico princ."</string>
<string name="pointer_location" msgid="7516929526199520173">"Localização do ponteiro"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementação WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Definir implementação WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opção já não é válida. Tente novamente."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools do WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Pacote WebView não encontrado."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Não foi possível iniciar as DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Modo de cor da imagem"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Usar sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desativado"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 5b3bb06..e16e355 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Não foi possível atualizar o som ambiente"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Dispositivo convidado. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Dispositivo convidado. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Dispositivo convidado (somente mídia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Dispositivo convidado (somente 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (aceita compartilhamento de áudio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (aceita compartilhamento de áudio). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (aceita compartilhamento de áudio). Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (aceita compartilhamento de áudio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Dispositivo convidado (aceita compartilhamento de áudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Dispositivo convidado (aceita compartilhamento de áudio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Dispositivo convidado (aceita compartilhamento de áudio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ativo (apenas mídia)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Dispositivo convidado"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Dispositivo convidado (somente mídia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Com suporte ao compartilhamento de áudio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Dispositivo convidado. Aceita compartilhamento de áudio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ativo (apenas mídia), apenas esquerdo"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ativo (apenas mídia), somente direito"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ativo (apenas mídia), esquerdo e direito"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderização acelerada por hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Mídia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoramento"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gerenciamento de janelas"</string>
<string name="strict_mode" msgid="889864762140862437">"Modo restrito ativado"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Piscar tela se apps demorarem no processo principal"</string>
<string name="pointer_location" msgid="7516929526199520173">"Localização do cursor"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementação do WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Configurar implementação do WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opção não é mais válida. Tente novamente."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools do WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"O pacote WebView não foi encontrado."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Não foi possível abrir o DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Modo de cor da imagem"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Usar sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desativado"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index 13c9032..83a6e68 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nu s-a putut actualiza zona din jur"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Dispozitiv invitat. Nivelul bateriei: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Dispozitiv invitat. Nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, dreapta: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level" msgid="7928347900623812299">"Dispozitiv invitat (numai pentru conținut media). Nivelul bateriei: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Dispozitiv invitat (numai pentru conținut media). Nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectat (acceptă permiterea accesului la audio), 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_untethered_left_lea_support" msgid="7707464334346454950">"Conectat (acceptă permiterea accesului la audio). Nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectat (acceptă permiterea accesului la audio). Nivelul bateriei din dreapta: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectat (acceptă permiterea accesului la audio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Dispozitiv invitat (acceptă permiterea accesului la audio). Nivelul bateriei: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Dispozitiv invitat (acceptă permiterea accesului la audio). Nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, dreapta: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+ <string name="bluetooth_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Dispozitiv invitat (acceptă permiterea accesului la audio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activ (numai pentru conținut media)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Dispozitiv invitat"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Dispozitiv invitat (numai pentru conținut media)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Acceptă permiterea accesului la audio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Dispozitiv invitat. Acceptă permiterea accesului la audio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activ (numai pentru conținut media), numai stânga"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activ (numai pentru conținut media), numai dreapta"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activ (numai pentru conținut media), stânga și dreapta"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Redare accelerată hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorizare"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Gestionarea ferestrelor"</string>
<string name="strict_mode" msgid="889864762140862437">"Modul Strict activat"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Iluminare intermitentă la operații lungi pe firul principal"</string>
<string name="pointer_location" msgid="7516929526199520173">"Locația indicatorului"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementare WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Setează implementarea WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Această opțiune nu mai este validă. Încearcă din nou."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Pachetul WebView nu a fost găsit."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Nu s-a putut lansa DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Modul de culori pentru imagini"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Folosește sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Dezactivat"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 831623d..1ed7c36 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Не удалось отрегулировать окружающие звуки."</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Гостевое устройство. Заряд батареи: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Гостевое устройство. Заряд батареи: <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_guest_media_only_battery_level" msgid="7928347900623812299">"Гостевое устройство (только медиафайлы). Заряд батареи: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Гостевое устройство (только медиафайлы). Заряд батареи: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Подключено (поддерживается отправка аудио), заряд: <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_untethered_left_lea_support" msgid="7707464334346454950">"Подключено (поддерживается отправка аудио), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (Л)."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Подключено (поддерживается отправка аудио), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (П)."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Подключено (поддерживается отправка аудио)."</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Гостевое устройство (поддерживает передачу аудио). Заряд батареи: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Гостевое устройство (поддерживает передачу аудио). Заряд батареи: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Гостевое устройство (поддерживает передачу аудио)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Используется (только для медиа)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Гостевое устройство"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Гостевое устройство (только медиафайлы)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Поддерживается отправка аудио"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Гостевое устройство. Поддерживает передачу аудио."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Используется (только для медиа), только левый"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Используется (только для медиа), правый наушник"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Используется (только для медиа), левый и правый наушники"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Аппаратное ускорение отрисовки"</string>
<string name="media_category" msgid="8122076702526144053">"Мультимедиа"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Мониторинг"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Управление окнами"</string>
<string name="strict_mode" msgid="889864762140862437">"Строгий режим"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Подсвечивать экран во время длительных операций"</string>
<string name="pointer_location" msgid="7516929526199520173">"Место касания"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Вариант недействителен. Повторите попытку."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Инструменты разработчика от поставщика WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Пакет WebView не найден."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Не удалось запустить инструменты разработчика."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Цветовой режим"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Использовать sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Отключено"</string>
@@ -508,7 +494,7 @@
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Коррекция цвета"</string>
<string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"Используйте коррекцию цвета, чтобы:<br/> <ol> <li> Добиться нужной цветопередачи.</li> <li> Убрать цвета, которые мешают сосредоточиться.</li> </ol>"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"Новая настройка: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
- <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"Уровень заряда – <xliff:g id="PERCENTAGE">%1$s</xliff:g>. <xliff:g id="TIME_STRING">%2$s</xliff:g>."</string>
+ <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_charging_on_hold_settings_home_page" msgid="7690464049464805856">"<xliff:g id="LEVEL">%1$s</xliff:g>, зарядка приостановлена для защиты батареи"</string>
<string name="power_incompatible_charging_settings_home_page" msgid="1322050766135126880">"<xliff:g id="LEVEL">%1$s</xliff:g>, проверьте зарядное устройство"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"Заряда хватит примерно на <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index dcfb914..dffa392 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"වටපිටාව යාවත්කාලීන කළ නොහැකි විය"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"ආගන්තුක උපාංගය. බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"ආගන්තුක උපාංගය. බැටරිය ව: <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_guest_media_only_battery_level" msgid="7928347900623812299">"ආගන්තුක උපාංගය (මාධ්ය පමණි). බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"ආගන්තුක උපාංගය (මාධ්ය පමණි). බැටරිය ව: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"සම්බන්ධයි (ශ්රව්ය බෙදා ගැනීමට සහය දක්වයි). බැටරිය ව: <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_untethered_left_lea_support" msgid="7707464334346454950">"සම්බන්ධයි (ශ්රව්ය බෙදා ගැනීමට සහය දක්වයි). වම: බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"සම්බන්ධයි (ශ්රව්ය බෙදා ගැනීමට සහය දක්වයි). දකුණ: බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"සම්බන්ධයි (ශ්රව්ය බෙදා ගැනීමට සහය දක්වයි)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"ආගන්තුක උපාංගය (ශ්රව්ය බෙදා ගැනීම සඳහා සහය දක්වයි). බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"ආගන්තුක උපාංගය (ශ්රව්ය බෙදා ගැනීම සඳහා සහය දක්වයි). බැටරිය ව: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"ආගන්තුක උපාංගය (ශ්රව්ය බෙදා ගැනීම සඳහා සහය දක්වයි)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"සක්රිය (මාධ්ය පමණි)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"ආගන්තුක උපාංගය"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"ආගන්තුක උපාංගය (මාධ්ය පමණි)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ශ්රව්ය බෙදා ගැනීම සහය දක්වයි"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"ආගන්තුක උපාංගය. ශ්රව්ය බෙදා ගැනීම සහය දක්වයි"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"සක්රිය (මාධ්ය පමණි), වම පමණි"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"සක්රිය (මාධ්ය පමණි), දකුණ පමණි"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"සක්රිය (මාධ්ය පමණි), වම සහ දකුණ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"දෘඩාංග වේගය වැඩි කළ පිරිනැමීම"</string>
<string name="media_category" msgid="8122076702526144053">"මාධ්ය"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"නිරීක්ෂණය"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"කවුළු කළමනාකරණය"</string>
<string name="strict_mode" msgid="889864762140862437">"තදබල ආකාරය සබල කිරීම"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"මූලික පොටේ යෙදුම්, දිගු මෙහෙයුම් කරන විට තිරය ෆ්ලෑෂ් කරන්න"</string>
<string name="pointer_location" msgid="7516929526199520173">"සූචක පිහිටීම"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"මෙම තෝරා ගැනීම තව දුරටත් වලංගු නැත. නැවත උත්සාහ කරන්න."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView පැකේජය හමු නොවුණි."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools දියත් කිරීමට නොහැකි විය."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"පින්තූර වර්ණ ප්රකාරය"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB භාවිතා කරන්න"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"අබලයි"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 86e8274..0f4297a 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Okolie sa nepodarilo aktualizovať"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Zariadenie hosťa. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Zariadenie hosťa. Ľ: <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> batérie."</string>
+ <string name="bluetooth_guest_media_only_battery_level" msgid="7928347900623812299">"Zariadenie hosťa (iba médiá). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Zariadenie hosťa (iba médiá). Ľ: <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> 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Pripojené (podporuje zdieľanie zvuku). Ľ: <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> batérie."</string>
<string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Pripojené (podporuje zdieľanie zvuku). Ľavá strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Pripojené (podporuje zdieľanie zvuku). Pravá strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Pripojené (podporuje zdieľanie zvuku)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Zariadenie hosťa (podporuje zdieľanie zvuku). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Zariadenie hosťa (podporuje zdieľanie zvuku). Ľ: <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> batérie."</string>
+ <string name="bluetooth_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Zariadenie hosťa (podporuje zdieľanie zvuku)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktívne (iba médiá)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Zariadenie hosťa"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Zariadenie hosťa (iba médiá)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podporuje zdieľanie zvuku"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Zariadenie hosťa. Podporuje zdieľanie zvuku."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktívne (iba médiá), iba ľavá strana"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktívne (iba médiá), iba pravá strana"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktívne (iba médiá), ľavá aj pravá strana"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardvérom zrýchlené vykresľovanie"</string>
<string name="media_category" msgid="8122076702526144053">"Médiá"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorovanie"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Správa okien"</string>
<string name="strict_mode" msgid="889864762140862437">"Povoliť prísny režim"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Blikať pri dlhých operáciách hlavného vlákna"</string>
<string name="pointer_location" msgid="7516929526199520173">"Umiestnenie kurzora"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Implementácia WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Nastaviť implementáciu WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Táto voľba už nie je platná. Skúste to znova."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Nástroje pre vývojárov prvku WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Balík WebView sa nenašiel."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Nástroje pre vývojárov sa nepodarilo spustiť."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Farebný režim obrázka"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Použije sa sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Vypnuté"</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 28ae8e1..744b4da 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Okolice ni bilo mogoče posodobiti"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Naprava gosta. Baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Naprava gosta. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Naprava gosta (samo predstavnost). Baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Naprava gosta (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Povezano (podpira deljenje zvoka), 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_untethered_left_lea_support" msgid="7707464334346454950">"Povezano (podpira deljenje zvoka). Levo – baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Povezano (podpira deljenje zvoka). Desno – baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Povezano (podpira deljenje zvoka)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Naprava gosta (podpira deljenje zvoka). Baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Naprava gosta (podpira deljenje zvoka). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Naprava gosta (podpira deljenje zvoka)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivno (samo predstavnost)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Naprava gosta"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Naprava gosta (samo predstavnost)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podpira deljenje zvoka"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Naprava gosta. Podpira deljenje zvoka."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivno (samo predstavnost), samo levo"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivno (samo predstavnost), samo desno"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivno (samo predstavnost), levo in desno"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Upodabljanje s strojnim pospeševanjem"</string>
<string name="media_category" msgid="8122076702526144053">"Predstavnost"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Spremljanje"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Upravljanje oken"</string>
<string name="strict_mode" msgid="889864762140862437">"Strog način je omogočen"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Osveži zaslon pri dolgih postopkih v glavni niti."</string>
<string name="pointer_location" msgid="7516929526199520173">"Mesto kazalca"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Izvedba spletnega pogleda"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Nastavitev izvedbe spletnega pogleda"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ta izbira ni več veljavna. Poskusite znova."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Orodja za razvijalce za WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Paketa WebView ni bilo mogoče najti."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Orodij za razvijalce ni bilo mogoče zagnati."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Način barv slike"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Uporaba sRGB-ja"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogočeno"</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index 4e6ec9f..3d9622e 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ambienti rrethues nuk mund të përditësohej"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Pajisja vizitore. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Pajisja vizitore. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Pajisja vizitore (vetëm media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Pajisja vizitore (vetëm 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Lidhur (mbështet ndarjen e audios). 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_untethered_left_lea_support" msgid="7707464334346454950">"Lidhur (mbështet ndarjen e audios). Majtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Lidhur (mbështet ndarjen e audios). Djathtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Lidhur (mbështet ndarjen e audios)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Pajisja vizitore (mbështet ndarjen e audios). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Pajisja vizitore (mbështet ndarjen e audios). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Pajisja vizitore (mbështet ndarjen e audios)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (vetëm për media)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Pajisja vizitore"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Pajisja vizitore (vetëm media)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Mbështet ndarjen e audios"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Pajisja vizitore. Mbështet ndarjen e audios"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (vetëm për media), vetëm majtas"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (vetëm për media), vetëm djathtas"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (vetëm për media), majtas dhe djathtas"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Interpretimi i përshpejtuar i harduerit"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorimi"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Menaxhimi i dritareve"</string>
<string name="strict_mode" msgid="889864762140862437">"Aktivizo modalitetin e rreptë"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Ndriço ekranin kur aplikacionet kryejnë operacione të gjata teksa bashkëveprojnë"</string>
<string name="pointer_location" msgid="7516929526199520173">"Vendndodhja e treguesit"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Zbatimi i WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Cakto zbatimin e WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Kjo zgjedhje nuk është më e vlefshme. Provo përsëri."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools e WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Paketa e WebView nuk u gjet."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools nuk mund të nisej."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Modalitti i ngjyrave të figurës"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Përdor sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Çaktivizuar"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index 96924b9..32ec500 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ажурирање окружења није успело"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Уређај госта. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Уређај госта. Лево: <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_guest_media_only_battery_level" msgid="7928347900623812299">"Уређај госта (само за медије). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Уређај госта (само за медије). Лево: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Повезано (подржава дељење звука), лево: <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_untethered_left_lea_support" msgid="7707464334346454950">"Повезано (подржава дељење звука). Лево: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Повезано (подржава дељење звука). Десно: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Повезано (подржава дељење звука)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Уређај госта (подржава дељење звука). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Уређај госта (подржава дељење звука). Лево: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Уређај госта (подржава дељење звука)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активан (само за медије)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Уређај госта"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Уређај госта (само за медије)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Подржава дељење звука"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Уређај госта. Подржава дељење звука"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активан (само за медије), само лево"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активан (само за медије), само десно"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активан (само за медије), лево и десно"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Хардверски убрзано приказивање"</string>
<string name="media_category" msgid="8122076702526144053">"Медији"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Надгледање"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Управљање прозорима"</string>
<string name="strict_mode" msgid="889864762140862437">"Омогућен је строги режим"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Екран трепери када апликације обављају дуге операције на главној нити"</string>
<string name="pointer_location" msgid="7516929526199520173">"Локација показивача"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Овај избор више није важећи. Пробајте поново."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView алатке за програмере"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Пакет за WebView није пронађен."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Покретање алатки за програмере није успело."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Режим боја слика"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Користи sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Онемогућено је"</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 3c7aff6..cf223f5b 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Det gick inte att uppdatera omgivningsläget"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Gästenhet. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Gästenhet. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Gästenhet (endast media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Gästenhet (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ansluten (ljuddelning stöds). 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_untethered_left_lea_support" msgid="7707464334346454950">"Ansluten (ljuddelning stöds). Vänster: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ansluten (ljuddelning stöds). Höger: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ansluten (ljuddelning stöds)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Gästenhet (ljuddelning stöds). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Gästenhet (ljuddelning stöds). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Gästenhet (ljuddelning stöds)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (endast media)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Gästenhet"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Gästenhet (endast media)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Ljuddelning stöds"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Gästenhet. Ljuddelning stöds"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (endast media), endast vänster"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (endast media), endast höger"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (endast media), vänster och höger"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hårdvaruaccelererad rendering"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Övervakning"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Fönsterhantering"</string>
<string name="strict_mode" msgid="889864762140862437">"Strikt läge aktiverat"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Tänd skärm när app gör omfattande åtgärd på huvudtråd"</string>
<string name="pointer_location" msgid="7516929526199520173">"Pekarens plats"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ange WebView-implementering"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Det här alternativet är inte längre giltigt. Försök igen."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Verktyg för programmerare för WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView-paketet hittades inte."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Verktyg för programmerare kunde inte startas."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Färgläge för bilder"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Använd sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Inaktiverad"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 4f520b4..26e0412 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Imeshindwa kusasisha mazingira"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Kifaa kingeni. Chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Kifaa kingeni. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Kifaa kingeni (sauti/video/picha pekee). Chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Kifaa kingeni (sauti/video/picha 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Imeunganishwa (inaweza kutumia kipengele cha kusikiliza pamoja). 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_untethered_left_lea_support" msgid="7707464334346454950">"Imeunganishwa (inaweza kutumia kipengele cha kusikiliza pamoja). Kushoto: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Imeunganishwa (inaweza kutumia kipengele cha kusikiliza pamoja). Kulia: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Imeunganishwa (inaweza kusikiliza pamoja)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Kifaa kingeni (kinatumia kipengele cha kusikiliza pamoja). Chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Kifaa kingeni (kinatumia kipengele cha kusikiliza pamoja). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Kifaa kingeni (kinatumia kipengele cha kusikiliza pamoja)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Inatumika (maudhui pekee)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Kifaa kingeni"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Kifaa kingeni (sauti/video/picha pekee)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Inaweza kutumia kipengele cha kusikiliza pamoja"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Kifaa kingeni. Kinatumia kipengele cha kusikiliza pamoja"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Inatumika (maudhui pekee), kushoto pekee"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Inatumika (maudhui pekee), kulia pekee"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Inatumika (maudhui pekee), kushoto na kulia"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Utekelezaji wa maunzi ulioharakishwa"</string>
<string name="media_category" msgid="8122076702526144053">"Maudhui"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Ufuatiliaji"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Udhibiti wa Dirisha"</string>
<string name="strict_mode" msgid="889864762140862437">"Hali makinifu imewashwa"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Fanya skrini imemeteke programu zinapoendeleza shughuli ndefu kwenye skrini kuu"</string>
<string name="pointer_location" msgid="7516929526199520173">"Mahali pa kiashiria"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Utekelezaji wa WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Weka utekelezaji wa WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Chaguo hili halipo tena. Jaribu tena."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Zana za Wasanidi Programu za Mwonekano wa Wavuti"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Haijapata kifurushi cha Mwonekano wa Wavuti."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Imeshindwa kuwasha Zana za Wasanidi Programu."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Hali ya rangi ya picha"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Tumia sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Imezimwa"</string>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index aa34584..c2e762f 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"சுற்றுப்புறங்களைப் புதுப்பிக்க முடியவில்லை"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"விருந்தினர் சாதனம். <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"விருந்தினர் சாதனம். இடது பேட்டரி: <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_guest_media_only_battery_level" msgid="7928347900623812299">"விருந்தினர் சாதனம் (மீடியா மட்டும்). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"விருந்தினர் சாதனம் (மீடியா மட்டும்). இடது பேட்டரி: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது). இடது பேட்டரி: <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_untethered_left_lea_support" msgid="7707464334346454950">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது). இடது: - <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது). வலது: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"விருந்தினர் சாதனம் (ஆடியோ பகிர்வை ஆதரிக்கிறது). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"விருந்தினர் சாதனம் (ஆடியோ பகிர்வை ஆதரிக்கிறது). இடது பேட்டரி: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"விருந்தினர் சாதனம் (ஆடியோ பகிர்வை ஆதரிக்கிறது)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"செயலிலுள்ளது (மீடியா மட்டும்)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"விருந்தினர் சாதனம்"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"விருந்தினர் சாதனம் (மீடியா மட்டும்)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ஆடியோ பகிர்வை ஆதரிக்கிறது"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"விருந்தினர் சாதனம். ஆடியோ பகிர்வை ஆதரிக்கிறது."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"செயலிலுள்ளது (மீடியா மட்டும்), இடதுபுறம் மட்டும்"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"செயலிலுள்ளது (மீடியா மட்டும்), வலதுபுறம் மட்டும்"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"செயலிலுள்ளது (மீடியா மட்டும்), இடதுபுறம் மற்றும் வலதுபுறம்"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"வன்பொருள் முடுக்கத்துடன் கூடிய காட்சியாக்கம்"</string>
<string name="media_category" msgid="8122076702526144053">"மீடியா"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"கண்காணித்தல்"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"சாளர நிர்வாகம்"</string>
<string name="strict_mode" msgid="889864762140862437">"நிலையான பயன்முறை இயக்கப்பட்டது"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"முக்கியத் தொடரிழையில் நீண்ட நேரம் செயல்படும்போது திரையைக் காட்சிப்படுத்தும்"</string>
<string name="pointer_location" msgid="7516929526199520173">"குறிப்பான் இடம்"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"இனி இந்தத் தேர்வைப் பயன்படுத்த முடியாது. மீண்டும் முயலவும்."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView டெவெலப்பர் கருவிகள்"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView தொகுப்பு இல்லை."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"டெவெலப்பர் கருவிகளை இயக்க முடியவில்லை."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"படத்தின் வண்ணப் பயன்முறை"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGBஐப் பயன்படுத்தும்"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"முடக்கப்பட்டது"</string>
@@ -667,7 +653,7 @@
<string name="user_grant_admin_message" msgid="1673791931033486709">"மற்ற பயனர்களுக்கு இல்லாத சிறப்புரிமைகள் நிர்வாகிகளுக்கு உண்டு. நிர்வாகி அனைத்துப் பயனர்களையும் நிர்வகிக்கலாம், இந்தச் சாதனத்தைப் புதுப்பிக்கலாம் அல்லது ரீசெட் செய்யலாம், அமைப்புகளை மாற்றலாம், நிறுவப்பட்ட அனைத்து ஆப்ஸையும் பார்க்கலாம், பிறருக்கு நிர்வாகி சிறப்புரிமைகளை வழங்கலாம் அல்லது அகற்றலாம்."</string>
<string name="user_grant_admin_button" msgid="5441486731331725756">"நிர்வாகியாக்கு"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"இப்போது பயனரை அமைக்கவா?"</string>
- <string name="user_setup_dialog_message" msgid="269931619868102841">"இந்தச் சாதனத்தை இவர் பயன்படுத்தும் நிலையிலும், அவருக்கான அமைப்புகளை அவரே செய்து கொள்பவராகவும் இருக்க வேண்டும்."</string>
+ <string name="user_setup_dialog_message" msgid="269931619868102841">"பயனர் இந்தச் சாதனத்தில் அவருக்கான அமைப்புகளை அமைக்கும் நிலையில் இப்போது இருக்க வேண்டும்"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"இப்போது சுயவிவரத்தை அமைக்கவா?"</string>
<string name="user_setup_button_setup_now" msgid="1708269547187760639">"இப்போது அமை"</string>
<string name="user_setup_button_setup_later" msgid="8712980133555493516">"இப்போது இல்லை"</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index cded034..f4678f3 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"పరిసరాలను అప్డేట్ చేయడం సాధ్యం కాలేదు"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"గెస్ట్ పరికరం. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"గెస్ట్ పరికరం. ఎడమ వైపు: <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_guest_media_only_battery_level" msgid="7928347900623812299">"గెస్ట్ పరికరం (మీడియాకు మాత్రమే). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"గెస్ట్ పరికరం (మీడియాకు మాత్రమే). ఎడమ వైపు: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"కనెక్ట్ చేయబడింది (ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది). ఎడమ వైపు: <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_untethered_left_lea_support" msgid="7707464334346454950">"కనెక్ట్ చేయబడింది (ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది). ఎడమ వైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"కనెక్ట్ అయింది (ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది). కుడివైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"కనెక్ట్ చేయబడింది (ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"గెస్ట్ పరికరం (ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"గెస్ట్ పరికరం (ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది). ఎడమ వైపు: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"గెస్ట్ పరికరం (ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"యాక్టివ్ (మీడియా మాత్రమే)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"గెస్ట్ పరికరం"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"గెస్ట్ పరికరం (మీడియాకు మాత్రమే)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"గెస్ట్ పరికరం. ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"యాక్టివ్ (మీడియా మాత్రమే), ఎడమ వైపు మాత్రమే"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"యాక్టివ్ (మీడియా మాత్రమే), కుడివైపు మాత్రమే"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"యాక్టివ్ (మీడియా మాత్రమే), ఎడమ, కుడివైపు మాత్రమే"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"హార్డ్వేర్ యాగ్జిలరేషన్ ఆధారిత రెండరింగ్"</string>
<string name="media_category" msgid="8122076702526144053">"మీడియా"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"పర్యవేక్షణ"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"విండో మేనేజ్మెంట్"</string>
<string name="strict_mode" msgid="889864762140862437">"స్ట్రిక్ట్ మోడ్ ఎనేబుల్డ్"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"యాప్లు ప్రధాన థ్రెడ్లో సుదీర్ఘ చర్యలు చేసేటప్పుడు స్క్రీన్ను ఫ్లాష్ చేయండి"</string>
<string name="pointer_location" msgid="7516929526199520173">"పాయింటర్ లొకేషన్"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"వెబ్ వీక్షణ అమలు"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"వెబ్ వీక్షణ అమలుని సెట్ చేయండి"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ఈ ఎంపిక ఇప్పుడు లేదు. మళ్లీ ట్రై చేయండి."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"వెబ్ వీక్షణ DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"వెబ్ వీక్షణ ప్యాకేజీ కనుగొనబడలేదు."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevToolsను లాంచ్ చేయడం సాధ్యపడలేదు."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"చిత్రం రంగు మోడ్"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ఉపయోగిస్తుంది"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"డిజేబుల్ చేయబడింది"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index eaf256d..e360ae6 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"อัปเดตเสียงแวดล้อมไม่ได้"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"อุปกรณ์ของผู้มาเยือน แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"อุปกรณ์ของผู้มาเยือน 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_guest_media_only_battery_level" msgid="7928347900623812299">"อุปกรณ์ของผู้มาเยือน (สื่อเท่านั้น) แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"อุปกรณ์ของผู้มาเยือน (สื่อเท่านั้น) 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง) แบตเตอรี่ข้างซ้าย: <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_untethered_left_lea_support" msgid="7707464334346454950">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง) ซ้าย: แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง) ขวา: แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"อุปกรณ์ของผู้มาเยือน (รองรับการแชร์เสียง) แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"อุปกรณ์ของผู้มาเยือน (รองรับการแชร์เสียง) 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"อุปกรณ์ของผู้มาเยือน (รองรับการแชร์เสียง)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ใช้งานอยู่ (สื่อเท่านั้น)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"อุปกรณ์ของผู้มาเยือน"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"อุปกรณ์ของผู้มาเยือน (สื่อเท่านั้น)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"รองรับการแชร์เสียง"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"อุปกรณ์ของผู้มาเยือน รองรับการแชร์เสียง"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ใช้งานอยู่ (สื่อเท่านั้น), ซ้ายเท่านั้น"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ใช้งานอยู่ (สื่อเท่านั้น), ขวาเท่านั้น"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ใช้งานอยู่ (สื่อเท่านั้น), ซ้ายและขวา"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"การแสดงผลที่มีการเร่งด้วยฮาร์ดแวร์"</string>
<string name="media_category" msgid="8122076702526144053">"สื่อ"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"การตรวจสอบ"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"การจัดการหน้าต่าง"</string>
<string name="strict_mode" msgid="889864762140862437">"เปิดใช้งานโหมดเข้มงวด"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"กะพริบหน้าจอเมื่อแอปทำงานในเทรดหลักนาน"</string>
<string name="pointer_location" msgid="7516929526199520173">"ตำแหน่งของตัวชี้"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"ตัวเลือกนี้ใช้ไม่ได้อีกต่อไป โปรดลองอีกครั้ง"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"เครื่องมือสำหรับนักพัฒนาเว็บของ WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"ไม่พบแพ็กเกจ WebView"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"เปิดเครื่องมือสำหรับนักพัฒนาเว็บไม่ได้"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"โหมดสีของรูปภาพ"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"ใช้ sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"ปิดใช้"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index b6d8d19..09f40c7 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Hindi ma-update ang paligid"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Device ng bisita. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Device ng bisita. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Device ng bisita (media lang). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Device ng bisita (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Nakakonekta (sinusuportahan ang pag-share ng audio). 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_untethered_left_lea_support" msgid="7707464334346454950">"Nakakonekta (sinusuportahan ang pag-share ng audio). Kaliwa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Nakakonekta (sinusuportahan ang pag-share ng audio). Kanan: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Nakakonekta (sinusuportahan ang pag-share ng audio)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Device ng bisita (sinusuportahan ang pag-share ng audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Device ng bisita (sinusuportahan ang pag-share ng audio). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Device ng bisita (sinusuportahan ang pag-share ng audio)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktibo (media lang)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Device ng bisita"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Device ng bisita (media lang)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Sinusuportahan ang pag-share ng audio"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Device ng bisita. Sinusuportahan ang pag-share ng audio"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktibo (media lang), kaliwa lang"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktibo (media lang), kanan lang"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktibo (media lang), kaliwa at kanan"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Pag-render na pinapabilis ng hardware"</string>
<string name="media_category" msgid="8122076702526144053">"Media"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Pagsubaybay"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Pamamahala sa Window"</string>
<string name="strict_mode" msgid="889864762140862437">"Enabled ang strict mode"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"I-flash ang screen pag may long ops ang app sa main thread"</string>
<string name="pointer_location" msgid="7516929526199520173">"Lokasyon ng pointer"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Pagpapatupad sa WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Itakda ang pagpapatupad sa WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Wala nang bisa ang napiling ito. Subukang muli."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"DevTools ng WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Hindi nakita ang WebView package."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Hindi mailunsad ang DevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Mode ng kulay ng larawan"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Gamitin ang sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Naka-disable"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index c4cbaf6..19b3baf 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Çevredeki sesler güncellenemedi"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Misafir cihaz. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Misafir cihaz. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Misafir cihaz (yalnızca medya). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Misafir cihaz (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Bağlı (ses paylaşımını destekler). 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_untethered_left_lea_support" msgid="7707464334346454950">"Bağlı (ses paylaşımını destekler). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Bağlı (ses paylaşımını destekler). Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Bağlı (ses paylaşımını destekler)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Misafir cihaz (ses paylaşımını destekler). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Misafir cihaz (ses paylaşımını destekler). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Misafir cihaz (ses paylaşımını destekler)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Etkin (yalnızca medya)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Misafir cihaz"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Misafir cihaz (yalnızca medya)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Ses paylaşımını destekler"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Misafir cihaz. Ses paylaşımını destekler"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Etkin (yalnızca medya), yalnızca sol"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Etkin (yalnızca medya), yalnızca sağ"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Etkin (yalnızca medya), sol ve sağ"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Donanım hızlandırmalı oluşturma"</string>
<string name="media_category" msgid="8122076702526144053">"Medya"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"İzleme"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Pencere Yönetimi"</string>
<string name="strict_mode" msgid="889864762140862437">"Yüksek düzey modu etkin"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Uygulamalar ana iş parçacığında uzun işlem yaparken ekranı yanıp söndür"</string>
<string name="pointer_location" msgid="7516929526199520173">"İşaretçi konumu"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Web Görünümü kullanımı"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Web Görünümü kullanımını ayarla"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Bu seçenek artık geçerli değil. Tekrar deneyin."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView Geliştirici Araçları"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView paketi bulunamadı."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Geliştirici Araçları başlatılamadı."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Resim renk modu"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB\'yi kullan"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Devre dışı"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index ecff572..ff18f5c 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Не вдалось оновити стан оточення"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Гостьовий пристрій. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Гостьовий пристрій. Лівий: <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_guest_media_only_battery_level" msgid="7928347900623812299">"Гостьовий пристрій (лише для мультимедіа). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Гостьовий пристрій (лише для мультимедіа). Лівий: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Підключено (підтримує надсилання аудіо). Лівий: <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_untethered_left_lea_support" msgid="7707464334346454950">"Підключено (підтримує надсилання аудіо). Лівий: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Підключено (підтримує надсилання аудіо). Правий: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Підключено (підтримує надсилання аудіо)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Гостьовий пристрій (підтримує надсилання аудіо). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Гостьовий пристрій (підтримує надсилання аудіо). Лівий: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Гостьовий пристрій (підтримує надсилання аудіо)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активно (лише для мультимедіа)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Гостьовий пристрій"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Гостьовий пристрій (лише для мультимедіа)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Підтримує надсилання аудіо"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Гостьовий пристрій. Підтримує надсилання аудіо."</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активно (лише для мультимедіа); лише лівий"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активно (лише для мультимедіа); лише правий"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активно (лише для мультимедіа); лівий і правий"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Апаратне прискорення"</string>
<string name="media_category" msgid="8122076702526144053">"Медіа"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Моніторинг"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Керування вікнами"</string>
<string name="strict_mode" msgid="889864762140862437">"Строгий режим увімкнено"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Підсвічувати екран під час довгострокових операцій"</string>
<string name="pointer_location" msgid="7516929526199520173">"Розташування курсора"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"Ця опція більше не дійсна. Повторіть спробу."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Інструменти розробника WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Пакет WebView не знайдено."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Не вдалося запустити Інструменти розробника."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Режим кольору"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Використовувати sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Вимкнено"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 3407114..a07a341 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"اطراف کو اپ ڈیٹ نہیں کیا جا سکا"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"مہمان آلہ۔ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"مہمان آلہ۔ بایاں: <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_guest_media_only_battery_level" msgid="7928347900623812299">"مہمان آلہ (صرف میڈیا)۔ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"مہمان آلہ (صرف میڈیا)۔ بایاں: <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ 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_untethered_left_lea_support" msgid="7707464334346454950">"منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ بائيں: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ دائيں: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"مہمان آلہ (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"مہمان آلہ (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ بایاں: <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"مہمان آلہ (آڈیو کے اشتراک کو سپورٹ کرتا ہے)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"فعال (صرف میڈیا)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"مہمان آلہ"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"مہمان آلہ (صرف میڈیا)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"آڈیو کے اشتراک کو سپورٹ کرتا ہے"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"مہمان آلہ۔ آڈیو کے اشتراک کو سپورٹ کرتا ہے"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"فعال (صرف میڈیا)، صرف بائیں"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"فعال (صرف میڈیا)، صرف دائیں"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"فعال (صرف میڈیا)، بائیں اور دائیں"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"ہارڈ ویئر کے ذریعے تیز کردہ رینڈرنگ"</string>
<string name="media_category" msgid="8122076702526144053">"میڈیا"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"مانیٹر کرنا"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"ونڈو کا نظم و نسق"</string>
<string name="strict_mode" msgid="889864762140862437">"سخت وضع فعال ہے"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"ایپس کے اصل تھریڈ پر طویل اعمال انجام دیتے وقت اسکرین کو فلیش کریں"</string>
<string name="pointer_location" msgid="7516929526199520173">"پوائنٹر مقام"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"یہ انتخاب اب درست نہیں رہا۔ دوبارہ کوشش کریں۔"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView پیکیج نہیں ملا۔"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools کو شروع نہیں کیا جا سکا۔"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"تصویری رنگ موڈ"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB استعمال کریں"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"غیر فعال"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index bff7993..3a10aa8 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Atrof-muhit yangilanmadi"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Mehmon qurilma. Quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Mehmon qurilma. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Mehmon qurilma (faqat multimedia). Quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Mehmon qurilma (faqat multimedia). 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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ulangan (audio yuborish mumkin), 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_untethered_left_lea_support" msgid="7707464334346454950">"Ulangan (audio yuborish mumkin). Quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (chap)."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ulangan (audio yuborish mumkin). Quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (oʻng)."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ulangan (audio yuborish mumkin)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Mehmon qurilma (audio ulashuvni dastaklaydi). Quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Mehmon qurilma (audio ulashuvni dastaklaydi). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Mehmon qurilma (audio ulashuvni dastaklaydi)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Faol (faqat media uchun)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Mehmon qurilma"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Mehmon qurilma (faqat multimedia)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Audio yuborishi mumkin"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Mehmon qurilma. Audio ulashishi mumkin"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Faol (faqat media uchun), faqat chap"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Faol (faqat media uchun), faqat oʻng"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Faol (faqat media uchun), chap va oʻng"</string>
@@ -148,7 +138,7 @@
<string name="bluetooth_profile_opp" msgid="6692618568149493430">"Fayl uzatish"</string>
<string name="bluetooth_profile_hid" msgid="2969922922664315866">"Kiritish qurilmasi"</string>
<string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetga ulanish"</string>
- <string name="bluetooth_profile_pbap" msgid="2103406516858653017">"Chaqiruv va kontaktlarga ruxsat berilsinmi?"</string>
+ <string name="bluetooth_profile_pbap" msgid="2103406516858653017">"Kontaktlar va chaqiruv tarixiga ruxsat berish"</string>
<string name="bluetooth_profile_pbap_summary" msgid="402819589201138227">"Maʼlumotlar chaqiruvlar haqida xabar berish uchun ishlatiladi"</string>
<string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Internet aloqasi ulashmasi"</string>
<string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS xabarlari"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Vizualizatsiyani apparatli tezlatish"</string>
<string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Oyna boshqaruvi"</string>
<string name="strict_mode" msgid="889864762140862437">"Qat’iy rejim yoqilgan"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Uzun amallar vaqtida ekranni miltillatish"</string>
<string name="pointer_location" msgid="7516929526199520173">"Kursor joylashuvi"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ta’minotchisi"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ta’minotchisini sozlash"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Bu variant endi yaroqsiz. Qaytadan urining."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView paketi topilmadi."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"DevTools ishga tushirilmadi."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Rang rejimi"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ranglaridan foydalanish"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Oʻchiq"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index cb0a875a..6095e8c 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Không cập nhật được âm lượng xung quanh"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Thiết bị khách. Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Thiết bị khách. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Thiết bị khách (chỉ dành cho nội dung nghe nhìn). Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Thiết bị khách (chỉ dành cho nội dung nghe nhì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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh). 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_untethered_left_lea_support" msgid="7707464334346454950">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh). Bên trái: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh). Bên phải: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh)."</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Thiết bị khách (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>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Thiết bị khách (hỗ trợ tính năng chia sẻ âm thanh). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Thiết bị khách (hỗ trợ tính năng chia sẻ âm thanh)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Đang hoạt động (chỉ phát nội dung đa phương tiện)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Thiết bị khách"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Thiết bị khách (chỉ dành cho nội dung nghe nhìn)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Hỗ trợ tính năng chia sẻ âm thanh"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Thiết bị khách. Hỗ trợ tính năng chia sẻ âm thanh"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Đang hoạt động (chỉ phát nội dung đa phương tiện), chỉ dùng tai nghe bên trái"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Đang hoạt động (chỉ phát nội dung đa phương tiện), chỉ dùng tai nghe bên phải"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Đang hoạt động (chỉ phát nội dung đa phương tiện), đang dùng cả tai nghe bên trái và phải"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Kết xuất có tăng tốc phần cứng"</string>
<string name="media_category" msgid="8122076702526144053">"Phương tiện"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Giám sát"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Quản lý cửa sổ"</string>
<string name="strict_mode" msgid="889864762140862437">"Luôn bật chế độ nghiêm ngặt"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Màn hình nháy khi ứng dụng thực hiện các hoạt động dài trên luồng chính"</string>
<string name="pointer_location" msgid="7516929526199520173">"Vị trí con trỏ"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Triển khai WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Đặt triển khai WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Lựa chọn này không còn hợp lệ nữa. Hãy thử lại."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"Công cụ cho nhà phát triển WebView"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Không tìm thấy gói WebView."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Không khởi chạy được Công cụ cho nhà phát triển."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Chế độ màu của ảnh"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Sử dụng sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Đã tắt"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index f13f7d9..06379e1 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -107,39 +107,29 @@
<string name="tv_bluetooth_battery_level_untethered_right" msgid="8610019317279155595">"右耳机电池电量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="4155462233006205630">"使用中"</string>
<string name="bluetooth_saved_device" msgid="4895871321722311428">"已保存的设备"</string>
- <string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"使用中(仅左耳助听器)"</string>
+ <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>
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"无法更新周围声音"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"访客设备。电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"访客设备。左侧电池电量为 <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_guest_media_only_battery_level" msgid="7928347900623812299">"访客设备(仅限媒体)。电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"访客设备(仅限媒体)。左侧电池电量为 <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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"已连接(支持音频分享)。左侧电池电量为 <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_untethered_left_lea_support" msgid="7707464334346454950">"已连接(支持音频分享)。左侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"已连接(支持音频分享)。右侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"已连接(支持音频分享)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"访客设备(支持音频分享)。电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"访客设备(支持音频分享)。左侧电池电量为 <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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"访客设备(支持音频分享)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"使用中(仅限媒体)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"访客设备"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"访客设备(仅限媒体)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"支持音频分享"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"访客设备。支持音频分享"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"使用中(仅限媒体),仅左侧"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"使用中(仅限媒体),仅右侧"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"使用中(仅限媒体),左侧和右侧"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"硬件加速渲染"</string>
<string name="media_category" msgid="8122076702526144053">"媒体"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"监控"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"窗口管理"</string>
<string name="strict_mode" msgid="889864762140862437">"启用严格模式"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"应用在主线程上执行长时间操作时闪烁屏幕"</string>
<string name="pointer_location" msgid="7516929526199520173">"指针位置"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"此选项已失效,请重试。"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView 开发者工具"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"未找到 WebView 软件包。"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"无法启动开发者工具。"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"图片颜色模式"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"使用 sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"已停用"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 14976e0..a3ae971 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"無法更新環境聲音"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"訪客裝置。<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"訪客裝置。左側:<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_guest_media_only_battery_level" msgid="7928347900623812299">"訪客裝置 (僅限媒體)。<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"訪客裝置 (僅限媒體)。左側:<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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"已連線 (支援音訊分享功能),左側:<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_untethered_left_lea_support" msgid="7707464334346454950">"已連線 (支援音訊分享功能)。左側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"已連線 (支援音訊分享功能)。右側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"已連線 (支援音訊分享功能)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"訪客裝置 (支援音訊分享功能)。<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"訪客裝置 (支援音訊分享功能)。左側:<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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"訪客裝置 (支援音訊分享功能)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"啟用 (只限媒體)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"訪客裝置"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"訪客裝置 (僅限媒體)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"支援音訊分享功能"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"訪客裝置。支援音訊分享功能"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"左側啟用 (只限媒體)"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"右側啟用 (只限媒體)"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"右側同時啟用 (只限媒體)"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"硬件加速轉譯"</string>
<string name="media_category" msgid="8122076702526144053">"媒體"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"監控"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"視窗管理"</string>
<string name="strict_mode" msgid="889864762140862437">"嚴格模式已啟用"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"當應用程式在主執行緒中進行長時間作業時,讓螢幕閃爍"</string>
<string name="pointer_location" msgid="7516929526199520173">"指標位置"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"此選擇已失效,請再試一次。"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView 開發人員工具"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"找不到 WebView 套件。"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"無法啟動開發人員工具。"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"相片顏色模式"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"使用 sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"已停用"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index b65cb4f..f670088 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"無法更新環境狀態"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"訪客裝置。電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"訪客裝置。左側電量:<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_guest_media_only_battery_level" msgid="7928347900623812299">"訪客裝置 (僅限媒體)。電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"訪客裝置 (僅限媒體)。左側電量:<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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"已連線 (支援音訊分享)。左側電量:<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_untethered_left_lea_support" msgid="7707464334346454950">"已連線 (支援音訊分享)。左側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"已連線 (支援音訊分享)。右側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"已連線 (支援音訊分享)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"訪客裝置 (支援音訊分享)。電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"訪客裝置 (支援音訊分享)。左側電量:<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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"訪客裝置 (支援音訊分享)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"啟用 (僅限媒體)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"訪客裝置"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"訪客裝置 (僅限媒體)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"支援音訊分享"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"訪客裝置。支援音訊分享"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"左側啟用 (僅限媒體)"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"右側啟用 (僅限媒體)"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"左右側同時啟用 (僅限媒體)"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"硬體加速轉譯"</string>
<string name="media_category" msgid="8122076702526144053">"媒體"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"監控"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"視窗管理"</string>
<string name="strict_mode" msgid="889864762140862437">"嚴格模式已啟用"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"當應用程式在主執行緒中進行長時間作業時,讓螢幕閃爍"</string>
<string name="pointer_location" msgid="7516929526199520173">"指標位置"</string>
@@ -492,12 +481,9 @@
<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_toast_text" msgid="8512254949169359848">"這個選項已失效,請再試一次。"</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView 開發人員工具"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"找不到 WebView 套件。"</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"無法啟動開發人員工具。"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"螢幕色彩模式"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"使用 sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"已停用"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 859c153..1d792a0 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -113,33 +113,23 @@
<string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ayikwazanga ukubuyekeza izindawo ezizungezile"</string>
<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>
- <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
- <skip />
+ <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Idivayisi yesivakashi. Ibhethri engu-<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Idivayisi yesivakashi. 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_guest_media_only_battery_level" msgid="7928347900623812299">"Idivayisi yomsindo (imidiya kuphela). Ibhethri engu-<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Idivayisi yomsindo (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>
<string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe). 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_untethered_left_lea_support" msgid="7707464334346454950">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe). Kwesokudla: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri."</string>
<string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe). Kwesokudla: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri."</string>
<string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe)"</string>
- <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
- <skip />
- <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
- <skip />
- <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
- <skip />
+ <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Idivayisi yesivakashi (isekela ukwabelana ngomsindo). Ibhethri engu-<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+ <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Idivayisi yesivakashi (isekela ukwabelana ngomsindo). 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_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Idivayisi yesivakashi (isekela ukwabelana ngomsindo)"</string>
<string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Kuyasebenza (imidiya kuphela)"</string>
- <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
- <skip />
- <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
- <skip />
+ <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Idivayisi yesivakashi"</string>
+ <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Idivayisi yesivakashi (imidiya kuphela)"</string>
<string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Isekela ukwabelana ngokuqoshiwe"</string>
- <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
- <skip />
+ <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Idivayisi yesivakashi. Isekela ukwabelana ngomsindo"</string>
<string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Iyasebenza (imidiya kuphela), ngakwesokunxele kuphela"</string>
<string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Kuyasebenza (imidiya kuphela), ngakwesokudla kuphela"</string>
<string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Kuyasebenza (imidiya kuphela), ngakwesokunxele nakwesokudla"</string>
@@ -396,8 +386,7 @@
<string name="debug_hw_drawing_category" msgid="5830815169336975162">"Ukunikezelwa okusheshisiwe kwezingxenyekazi zekhompyutha"</string>
<string name="media_category" msgid="8122076702526144053">"Imidiya"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Ukwengamela"</string>
- <!-- no translation found for window_management_category (2015535427098365170) -->
- <skip />
+ <string name="window_management_category" msgid="2015535427098365170">"Ukuphathwa Kwewindi"</string>
<string name="strict_mode" msgid="889864762140862437">"Imodi eqinile ivumelwe"</string>
<string name="strict_mode_summary" msgid="1838248687233554654">"Ukuphazimisa isikrini uma izinhlelo zokusebenza ziyenza umsebenzi ngesikhathi eside kuchungechunge olukhulu"</string>
<string name="pointer_location" msgid="7516929526199520173">"Isikhombi sendawo"</string>
@@ -492,12 +481,9 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"Ukufakwa ke-WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Sesba ukufakwa kwe-WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Lokhu kukhetha akusavumelekile. Zama futhi."</string>
- <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
- <skip />
- <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
- <skip />
+ <string name="webview_launch_devtools_title" msgid="8009687433555367112">"IWebView DevTools"</string>
+ <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"Iphakheji yeWebView ayitholwanga."</string>
+ <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Ayikwazanga ukuqalisa iDevTools."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"Imodi yombala wesithombe"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"Sebenzisa i-sRGB"</string>
<string name="daltonizer_mode_disabled" msgid="403424372812399228">"Kukhutshaziwe"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java
index 522a436..31948e4 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java
@@ -23,6 +23,7 @@
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
+import android.hardware.input.InputManager;
import android.media.AudioDeviceAttributes;
import android.media.AudioDeviceInfo;
import android.media.AudioManager;
@@ -34,6 +35,7 @@
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
+import android.view.InputDevice;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
@@ -1054,7 +1056,7 @@
/** Get develop option value for audio sharing preview. */
@WorkerThread
- private static boolean getAudioSharingPreviewValue(@Nullable ContentResolver contentResolver) {
+ public static boolean getAudioSharingPreviewValue(@Nullable ContentResolver contentResolver) {
if (contentResolver == null) return false;
return Settings.Global.getInt(
contentResolver,
@@ -1193,4 +1195,53 @@
}
device.setMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS, fastPairCustomizedMeta.getBytes());
}
+
+ /**
+ * Returns the {@link InputDevice} of the given bluetooth address if the device is a input
+ * device.
+ *
+ * @param address The address of the bluetooth device
+ * @return The {@link InputDevice} of the given address if applicable
+ */
+ @Nullable
+ public static InputDevice getInputDevice(Context context, String address) {
+ InputManager im = context.getSystemService(InputManager.class);
+
+ if (im != null) {
+ for (int deviceId : im.getInputDeviceIds()) {
+ String btAddress = im.getInputDeviceBluetoothAddress(deviceId);
+
+ if (btAddress != null && btAddress.equals(address)) {
+ return im.getInputDevice(deviceId);
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Identifies whether a device is a stylus using the associated {@link InputDevice} or
+ * {@link CachedBluetoothDevice}.
+ * InputDevices are only available when the device is USI or Bluetooth-connected, whereas
+ * CachedBluetoothDevices are available for Bluetooth devices when connected or paired,
+ * so to handle all cases, both are needed.
+ *
+ * @param inputDevice The associated input device of the stylus
+ * @param cachedBluetoothDevice The associated bluetooth device of the stylus
+ */
+ public static boolean isDeviceStylus(@Nullable InputDevice inputDevice,
+ @Nullable CachedBluetoothDevice cachedBluetoothDevice) {
+ if (inputDevice != null && inputDevice.supportsSource(InputDevice.SOURCE_STYLUS)) {
+ return true;
+ }
+
+ if (cachedBluetoothDevice != null) {
+ BluetoothDevice bluetoothDevice = cachedBluetoothDevice.getDevice();
+ String deviceType = BluetoothUtils.getStringMetaData(bluetoothDevice,
+ BluetoothDevice.METADATA_DEVICE_TYPE);
+ return TextUtils.equals(deviceType, BluetoothDevice.DEVICE_TYPE_STYLUS);
+ }
+
+ return false;
+ }
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java
index 367e38e..f18a2da 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java
@@ -149,8 +149,8 @@
private ContentResolver mContentResolver;
private ContentObserver mSettingsObserver;
// Cached broadcast callbacks being register before service is connected.
- private Map<BluetoothLeBroadcast.Callback, Executor> mCachedBroadcastCallbackExecutorMap =
- new ConcurrentHashMap<>();
+ private ConcurrentHashMap<BluetoothLeBroadcast.Callback, Executor>
+ mCachedBroadcastCallbackExecutorMap = new ConcurrentHashMap<>();
private final ServiceListener mServiceListener =
new ServiceListener() {
@@ -880,7 +880,7 @@
@NonNull @CallbackExecutor Executor executor,
@NonNull BluetoothLeBroadcast.Callback callback) {
if (mServiceBroadcast == null) {
- Log.d(TAG, "registerServiceCallBack failed, the BluetoothLeBroadcast is null.");
+ Log.d(TAG, "registerServiceCallBack failed, proxy not attached.");
mCachedBroadcastCallbackExecutorMap.putIfAbsent(callback, executor);
return;
}
@@ -902,10 +902,7 @@
@NonNull @CallbackExecutor Executor executor,
@NonNull BluetoothLeBroadcastAssistant.Callback callback) {
if (mServiceBroadcastAssistant == null) {
- Log.d(
- TAG,
- "registerBroadcastAssistantCallback failed, "
- + "the BluetoothLeBroadcastAssistant is null.");
+ Log.d(TAG, "registerBroadcastAssistantCallback failed, proxy not attached.");
return;
}
@@ -920,7 +917,7 @@
public void unregisterServiceCallBack(@NonNull BluetoothLeBroadcast.Callback callback) {
mCachedBroadcastCallbackExecutorMap.remove(callback);
if (mServiceBroadcast == null) {
- Log.d(TAG, "unregisterServiceCallBack failed, the BluetoothLeBroadcast is null.");
+ Log.d(TAG, "unregisterServiceCallBack failed, proxy not attached.");
return;
}
@@ -939,10 +936,7 @@
private void unregisterBroadcastAssistantCallback(
@NonNull BluetoothLeBroadcastAssistant.Callback callback) {
if (mServiceBroadcastAssistant == null) {
- Log.d(
- TAG,
- "unregisterBroadcastAssistantCallback, "
- + "the BluetoothLeBroadcastAssistant is null.");
+ Log.d(TAG, "unregisterBroadcastAssistantCallback, proxy not attched.");
return;
}
@@ -1140,7 +1134,9 @@
/** Update fallback active device if needed. */
public void updateFallbackActiveDeviceIfNeeded() {
- if (Flags.disableAudioSharingAutoPickFallbackInUi()) {
+ if (Flags.disableAudioSharingAutoPickFallbackInUi() || (mContext != null
+ && Flags.audioSharingDeveloperOption()
+ && BluetoothUtils.getAudioSharingPreviewValue(mContext.getContentResolver()))) {
Log.d(TAG, "Skip updateFallbackActiveDeviceIfNeeded, disable flag is on");
return;
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/connectivity/OWNERS b/packages/SettingsLib/src/com/android/settingslib/connectivity/OWNERS
index 9f15c1b..b676d8d 100644
--- a/packages/SettingsLib/src/com/android/settingslib/connectivity/OWNERS
+++ b/packages/SettingsLib/src/com/android/settingslib/connectivity/OWNERS
@@ -1,6 +1,5 @@
# Default reviewers for this and subdirectories.
andychou@google.com
-arcwang@google.com
changbetty@google.com
qal@google.com
wengsu@google.com
diff --git a/packages/SettingsLib/src/com/android/settingslib/qrcode/OWNERS b/packages/SettingsLib/src/com/android/settingslib/qrcode/OWNERS
index 372eb81..921ffed 100644
--- a/packages/SettingsLib/src/com/android/settingslib/qrcode/OWNERS
+++ b/packages/SettingsLib/src/com/android/settingslib/qrcode/OWNERS
@@ -1,5 +1,4 @@
# Default reviewers for this and subdirectories.
-bonianchen@google.com
changbetty@google.com
wengsu@google.com
zoeychen@google.com
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/AmbientVolumeControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/AmbientVolumeControllerTest.java
index abc1d226..e4381ae 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/AmbientVolumeControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/AmbientVolumeControllerTest.java
@@ -26,6 +26,7 @@
import android.bluetooth.AudioInputControl;
import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothProfile;
import android.content.Context;
import androidx.test.core.app.ApplicationProvider;
@@ -67,6 +68,9 @@
@Before
public void setUp() {
when(mProfileManager.getVolumeControlProfile()).thenReturn(mVolumeControlProfile);
+ when(mVolumeControlProfile.isProfileReady()).thenReturn(true);
+ when(mVolumeControlProfile.getConnectionStatus(mDevice)).thenReturn(
+ BluetoothProfile.STATE_CONNECTED);
when(mDevice.getAddress()).thenReturn(TEST_ADDRESS);
when(mDevice.isConnected()).thenReturn(true);
mVolumeController = new AmbientVolumeController(mProfileManager, mCallback);
@@ -74,8 +78,6 @@
@Test
public void onServiceConnected_notifyCallback() {
- when(mVolumeControlProfile.isProfileReady()).thenReturn(true);
-
mVolumeController.onServiceConnected();
verify(mCallback).onVolumeControlServiceConnected();
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java
index ebe6128..0325c0e 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java
@@ -15,7 +15,9 @@
*/
package com.android.settingslib.bluetooth;
+import static com.android.settingslib.bluetooth.BluetoothUtils.getInputDevice;
import static com.android.settingslib.bluetooth.BluetoothUtils.isAvailableAudioSharingMediaBluetoothDevice;
+import static com.android.settingslib.bluetooth.BluetoothUtils.isDeviceStylus;
import static com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast.UNKNOWN_VALUE_PLACEHOLDER;
import static com.android.settingslib.flags.Flags.FLAG_ENABLE_DETERMINING_ADVANCED_DETAILS_HEADER_WITH_METADATA;
@@ -42,6 +44,7 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
+import android.hardware.input.InputManager;
import android.media.AudioDeviceAttributes;
import android.media.AudioDeviceInfo;
import android.media.AudioManager;
@@ -51,6 +54,7 @@
import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
import android.util.Pair;
+import android.view.InputDevice;
import com.android.internal.R;
import com.android.settingslib.flags.Flags;
@@ -97,14 +101,18 @@
@Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
@Mock private CachedBluetoothDeviceManager mDeviceManager;
@Mock private BluetoothLeBroadcastReceiveState mLeBroadcastReceiveState;
+ @Mock
+ private InputManager mInputManager;
private Context mContext;
private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+ private final InputDevice mInputDevice = mock(InputDevice.class);
private static final String STRING_METADATA = "string_metadata";
private static final String LE_AUDIO_SHARING_METADATA = "le_audio_sharing";
private static final String BOOL_METADATA = "true";
private static final String INT_METADATA = "25";
private static final int METADATA_FAST_PAIR_CUSTOMIZED_FIELDS = 25;
+ private static final int TEST_DEVICE_ID = 123;
private static final String KEY_HEARABLE_CONTROL_SLICE = "HEARABLE_CONTROL_SLICE_WITH_WIDTH";
private static final String CONTROL_METADATA =
"<HEARABLE_CONTROL_SLICE_WITH_WIDTH>"
@@ -115,6 +123,7 @@
private static final String FAKE_TEMP_BOND_METADATA = "<TEMP_BOND_TYPE>fake</TEMP_BOND_TYPE>";
private static final String TEST_EXCLUSIVE_MANAGER_PACKAGE = "com.test.manager";
private static final String TEST_EXCLUSIVE_MANAGER_COMPONENT = "com.test.manager/.component";
+ private static final String TEST_ADDRESS = "11:22:33:44:55:66";
private static final int TEST_BROADCAST_ID = 25;
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@@ -134,6 +143,10 @@
when(mA2dpProfile.getProfileId()).thenReturn(BluetoothProfile.A2DP);
when(mLeAudioProfile.getProfileId()).thenReturn(BluetoothProfile.LE_AUDIO);
when(mHearingAid.getProfileId()).thenReturn(BluetoothProfile.HEARING_AID);
+ when(mContext.getSystemService(InputManager.class)).thenReturn(mInputManager);
+ when(mInputManager.getInputDeviceIds()).thenReturn(new int[]{TEST_DEVICE_ID});
+ when(mInputManager.getInputDeviceBluetoothAddress(TEST_DEVICE_ID)).thenReturn(TEST_ADDRESS);
+ when(mInputManager.getInputDevice(TEST_DEVICE_ID)).thenReturn(mInputDevice);
}
@Test
@@ -1097,9 +1110,8 @@
@Test
public void getAudioDeviceAttributesForSpatialAudio_bleHeadset() {
- String address = "11:22:33:44:55:66";
when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice);
- when(mCachedBluetoothDevice.getAddress()).thenReturn(address);
+ when(mCachedBluetoothDevice.getAddress()).thenReturn(TEST_ADDRESS);
when(mCachedBluetoothDevice.getProfiles()).thenReturn(List.of(mLeAudioProfile));
when(mLeAudioProfile.isEnabled(mBluetoothDevice)).thenReturn(true);
@@ -1112,14 +1124,13 @@
new AudioDeviceAttributes(
AudioDeviceAttributes.ROLE_OUTPUT,
AudioDeviceInfo.TYPE_BLE_HEADSET,
- address));
+ TEST_ADDRESS));
}
@Test
public void getAudioDeviceAttributesForSpatialAudio_bleSpeaker() {
- String address = "11:22:33:44:55:66";
when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice);
- when(mCachedBluetoothDevice.getAddress()).thenReturn(address);
+ when(mCachedBluetoothDevice.getAddress()).thenReturn(TEST_ADDRESS);
when(mCachedBluetoothDevice.getProfiles()).thenReturn(List.of(mLeAudioProfile));
when(mLeAudioProfile.isEnabled(mBluetoothDevice)).thenReturn(true);
@@ -1132,14 +1143,14 @@
new AudioDeviceAttributes(
AudioDeviceAttributes.ROLE_OUTPUT,
AudioDeviceInfo.TYPE_BLE_SPEAKER,
- address));
+ TEST_ADDRESS));
}
@Test
public void getAudioDeviceAttributesForSpatialAudio_a2dp() {
- String address = "11:22:33:44:55:66";
+
when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice);
- when(mCachedBluetoothDevice.getAddress()).thenReturn(address);
+ when(mCachedBluetoothDevice.getAddress()).thenReturn(TEST_ADDRESS);
when(mCachedBluetoothDevice.getProfiles()).thenReturn(List.of(mA2dpProfile));
when(mA2dpProfile.isEnabled(mBluetoothDevice)).thenReturn(true);
@@ -1152,14 +1163,13 @@
new AudioDeviceAttributes(
AudioDeviceAttributes.ROLE_OUTPUT,
AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
- address));
+ TEST_ADDRESS));
}
@Test
public void getAudioDeviceAttributesForSpatialAudio_hearingAid() {
- String address = "11:22:33:44:55:66";
when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice);
- when(mCachedBluetoothDevice.getAddress()).thenReturn(address);
+ when(mCachedBluetoothDevice.getAddress()).thenReturn(TEST_ADDRESS);
when(mCachedBluetoothDevice.getProfiles()).thenReturn(List.of(mHearingAid));
when(mHearingAid.isEnabled(mBluetoothDevice)).thenReturn(true);
@@ -1172,7 +1182,7 @@
new AudioDeviceAttributes(
AudioDeviceAttributes.ROLE_OUTPUT,
AudioDeviceInfo.TYPE_HEARING_AID,
- address));
+ TEST_ADDRESS));
}
@Test
@@ -1375,4 +1385,54 @@
verify(mBluetoothDevice).setMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS,
TEMP_BOND_METADATA.getBytes());
}
+
+ @Test
+ public void getInputDevice_addressNotMatched_returnsNull() {
+ assertThat(getInputDevice(mContext, "123")).isNull();
+ }
+
+ @Test
+ public void getInputDevice_isInputDevice_returnsInputDevice() {
+ assertThat(getInputDevice(mContext, TEST_ADDRESS)).isEqualTo(mInputDevice);
+ }
+
+ @Test
+ public void isDeviceStylus_noDevices_false() {
+ assertThat(isDeviceStylus(null, null)).isFalse();
+ }
+
+ @Test
+ public void isDeviceStylus_nonStylusInputDevice_false() {
+ InputDevice inputDevice = new InputDevice.Builder()
+ .setSources(InputDevice.SOURCE_DPAD)
+ .build();
+
+ assertThat(isDeviceStylus(inputDevice, null)).isFalse();
+ }
+
+ @Test
+ public void isDeviceStylus_stylusInputDevice_true() {
+ InputDevice inputDevice = new InputDevice.Builder()
+ .setSources(InputDevice.SOURCE_STYLUS)
+ .build();
+
+ assertThat(isDeviceStylus(inputDevice, null)).isTrue();
+ }
+
+ @Test
+ public void isDeviceStylus_nonStylusBluetoothDevice_false() {
+ when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_DEVICE_TYPE)).thenReturn(
+ BluetoothDevice.DEVICE_TYPE_WATCH.getBytes());
+
+ assertThat(isDeviceStylus(null, mCachedBluetoothDevice)).isFalse();
+ }
+
+ @Test
+ public void isDeviceStylus_stylusBluetoothDevice_true() {
+ when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_DEVICE_TYPE)).thenReturn(
+ BluetoothDevice.DEVICE_TYPE_STYLUS.getBytes());
+ when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice);
+
+ assertThat(isDeviceStylus(null, mCachedBluetoothDevice)).isTrue();
+ }
}
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 69e99c6..94199df 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
@@ -662,10 +662,10 @@
@Test
@RequiresFlagsEnabled(
com.android.settingslib.flags.Flags.FLAG_HEARING_DEVICE_SET_CONNECTION_STATUS_REPORT)
- public void onDeviceUnpaired_hearingDevice_callReportConnectionStatus() {
+ public void onDeviceUnpaired_containsHearingAidInfo_callReportConnectionStatus() {
when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
- when(mCachedDevice1.getProfiles()).thenReturn(
- ImmutableList.of(mHapClientProfile, mHearingAidProfile));
+ mCachedDevice1.setHearingAidInfo(
+ new HearingAidInfo.Builder().setHiSyncId(HISYNCID1).build());
mCachedDeviceManager.onDeviceUnpaired(mCachedDevice1);
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 49cdec1..b53cb27 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -461,9 +461,9 @@
resource_dirs: [],
static_libs: [
"//frameworks/libs/systemui:compilelib",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/dagger:api",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/util/settings:api",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail:impl",
+ "com.android.systemui.dagger-api",
+ "com.android.systemui.util.settings-api",
+ "com.android.systemui.retail-impl",
"SystemUI-res",
"WifiTrackerLib",
"WindowManager-Shell",
@@ -751,9 +751,9 @@
],
static_libs: [
"//frameworks/libs/systemui:compilelib",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/dagger:api",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/util/settings:api",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail:impl",
+ "com.android.systemui.dagger-api",
+ "com.android.systemui.util.settings-api",
+ "com.android.systemui.retail-impl",
"SystemUI-tests-base",
"androidx.test.uiautomator_uiautomator",
"androidx.core_core-animation-testing",
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index eb5b22f..f2c76ba 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -1939,6 +1939,16 @@
}
flag {
+ name: "notification_appear_nonlinear"
+ namespace: "systemui"
+ description: "Fix linear usage of notification appear"
+ bug: "397658189"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "disable_shade_trackpad_two_finger_swipe"
namespace: "systemui"
description: "Disables expansion of the shade via two finger swipe on a trackpad"
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt
index f8bcb81..bc75b1d 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt
@@ -22,19 +22,8 @@
import android.util.LruCache
import android.util.MathUtils
import androidx.annotation.VisibleForTesting
-import java.lang.Float.max
-import java.lang.Float.min
import kotlin.math.roundToInt
-private const val TAG_WGHT = "wght"
-private const val TAG_ITAL = "ital"
-
-private const val FONT_WEIGHT_DEFAULT_VALUE = 400f
-private const val FONT_ITALIC_MAX = 1f
-private const val FONT_ITALIC_MIN = 0f
-private const val FONT_ITALIC_ANIMATION_STEP = 0.1f
-private const val FONT_ITALIC_DEFAULT_VALUE = 0f
-
/** Caches for font interpolation */
interface FontCache {
val animationFrameCount: Int
@@ -91,11 +80,8 @@
class FontInterpolator(val fontCache: FontCache = FontCacheImpl()) {
/** Linear interpolate the font variation settings. */
fun lerp(start: Font, end: Font, progress: Float, linearProgress: Float): Font {
- if (progress == 0f) {
- return start
- } else if (progress == 1f) {
- return end
- }
+ if (progress <= 0f) return start
+ if (progress >= 1f) return end
val startAxes = start.axes ?: EMPTY_AXES
val endAxes = end.axes ?: EMPTY_AXES
@@ -110,7 +96,7 @@
InterpKey(start, end, (linearProgress * fontCache.animationFrameCount).roundToInt())
fontCache.get(iKey)?.let {
if (DEBUG) {
- Log.d(LOG_TAG, "[$progress] Interp. cache hit for $iKey")
+ Log.d(LOG_TAG, "[$progress, $linearProgress] Interp. cache hit for $iKey")
}
return it
}
@@ -121,37 +107,16 @@
// and also pre-fill the missing axes value with default value from 'fvar' table.
val newAxes =
lerp(startAxes, endAxes) { tag, startValue, endValue ->
- when (tag) {
- TAG_WGHT ->
- MathUtils.lerp(
- startValue ?: FONT_WEIGHT_DEFAULT_VALUE,
- endValue ?: FONT_WEIGHT_DEFAULT_VALUE,
- progress,
- )
- TAG_ITAL ->
- adjustItalic(
- MathUtils.lerp(
- startValue ?: FONT_ITALIC_DEFAULT_VALUE,
- endValue ?: FONT_ITALIC_DEFAULT_VALUE,
- progress,
- )
- )
- else -> {
- require(startValue != null && endValue != null) {
- "Unable to interpolate due to unknown default axes value : $tag"
- }
- MathUtils.lerp(startValue, endValue, progress)
- }
- }
+ MathUtils.lerp(startValue, endValue, progress)
}
// Check if we already make font for this axes. This is typically happens if the animation
- // happens backward.
+ // happens backward and is being linearly interpolated.
val vKey = VarFontKey(start, newAxes)
fontCache.get(vKey)?.let {
fontCache.put(iKey, it)
if (DEBUG) {
- Log.d(LOG_TAG, "[$progress] Axis cache hit for $vKey")
+ Log.d(LOG_TAG, "[$progress, $linearProgress] Axis cache hit for $vKey")
}
return it
}
@@ -164,14 +129,14 @@
fontCache.put(vKey, newFont)
// Cache misses are likely to create memory leaks, so this is logged at error level.
- Log.e(LOG_TAG, "[$progress] Cache MISS for $iKey / $vKey")
+ Log.e(LOG_TAG, "[$progress, $linearProgress] Cache MISS for $iKey / $vKey")
return newFont
}
private fun lerp(
start: Array<FontVariationAxis>,
end: Array<FontVariationAxis>,
- filter: (tag: String, left: Float?, right: Float?) -> Float,
+ filter: (tag: String, left: Float, right: Float) -> Float,
): List<FontVariationAxis> {
// Safe to modify result of Font#getAxes since it returns cloned object.
start.sortBy { axis -> axis.tag }
@@ -191,39 +156,37 @@
else -> tagA.compareTo(tagB)
}
- val axis =
+ val tag =
when {
- comp == 0 -> {
- val v = filter(tagA!!, start[i++].styleValue, end[j++].styleValue)
- FontVariationAxis(tagA, v)
- }
- comp < 0 -> {
- val v = filter(tagA!!, start[i++].styleValue, null)
- FontVariationAxis(tagA, v)
- }
- else -> { // comp > 0
- val v = filter(tagB!!, null, end[j++].styleValue)
- FontVariationAxis(tagB, v)
- }
+ comp == 0 -> tagA!!
+ comp < 0 -> tagA!!
+ else -> tagB!!
}
- result.add(axis)
+ val axisDefinition = GSFAxes.getAxis(tag)
+ require(comp == 0 || axisDefinition != null) {
+ "Unable to interpolate due to unknown default axes value: $tag"
+ }
+
+ val axisValue =
+ when {
+ comp == 0 -> filter(tag, start[i++].styleValue, end[j++].styleValue)
+ comp < 0 -> filter(tag, start[i++].styleValue, axisDefinition!!.defaultValue)
+ else -> filter(tag, axisDefinition!!.defaultValue, end[j++].styleValue)
+ }
+
+ // Round axis value to valid intermediate steps. This improves the cache hit rate.
+ val step = axisDefinition?.animationStep ?: DEFAULT_ANIMATION_STEP
+ result.add(FontVariationAxis(tag, (axisValue / step).roundToInt() * step))
}
return result
}
- // For the performance reasons, we animate italic with FONT_ITALIC_ANIMATION_STEP. This helps
- // Cache hit ratio in the Skia glyph cache.
- private fun adjustItalic(value: Float) =
- coerceInWithStep(value, FONT_ITALIC_MIN, FONT_ITALIC_MAX, FONT_ITALIC_ANIMATION_STEP)
-
- private fun coerceInWithStep(v: Float, min: Float, max: Float, step: Float) =
- (v.coerceIn(min, max) / step).toInt() * step
-
companion object {
private const val LOG_TAG = "FontInterpolator"
private val DEBUG = Log.isLoggable(LOG_TAG, Log.DEBUG)
private val EMPTY_AXES = arrayOf<FontVariationAxis>()
+ private const val DEFAULT_ANIMATION_STEP = 1f
// Returns true if given two font instance can be interpolated.
fun canInterpolate(start: Font, end: Font) =
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/FontVariationUtils.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/FontVariationUtils.kt
index 9545bda..9a74687 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/FontVariationUtils.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/FontVariationUtils.kt
@@ -1,12 +1,20 @@
-package com.android.systemui.animation
+/*
+ * 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.
+ */
-object GSFAxes {
- const val WEIGHT = "wght"
- const val WIDTH = "wdth"
- const val SLANT = "slnt"
- const val ROUND = "ROND"
- const val OPTICAL_SIZE = "opsz"
-}
+package com.android.systemui.animation
class FontVariationUtils {
private var mWeight = -1
@@ -46,20 +54,20 @@
}
var resultString = ""
if (mWeight >= 0) {
- resultString += "'${GSFAxes.WEIGHT}' $mWeight"
+ resultString += "'${GSFAxes.WEIGHT.tag}' $mWeight"
}
if (mWidth >= 0) {
resultString +=
- (if (resultString.isBlank()) "" else ", ") + "'${GSFAxes.WIDTH}' $mWidth"
+ (if (resultString.isBlank()) "" else ", ") + "'${GSFAxes.WIDTH.tag}' $mWidth"
}
if (mOpticalSize >= 0) {
resultString +=
(if (resultString.isBlank()) "" else ", ") +
- "'${GSFAxes.OPTICAL_SIZE}' $mOpticalSize"
+ "'${GSFAxes.OPTICAL_SIZE.tag}' $mOpticalSize"
}
if (mRoundness >= 0) {
resultString +=
- (if (resultString.isBlank()) "" else ", ") + "'${GSFAxes.ROUND}' $mRoundness"
+ (if (resultString.isBlank()) "" else ", ") + "'${GSFAxes.ROUND.tag}' $mRoundness"
}
return if (isUpdated) resultString else ""
}
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/GSFAxes.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/GSFAxes.kt
new file mode 100644
index 0000000..f4e0361
--- /dev/null
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/GSFAxes.kt
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2025 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.animation
+
+data class AxisDefinition(
+ val tag: String,
+ val minValue: Float,
+ val defaultValue: Float,
+ val maxValue: Float,
+ val animationStep: Float,
+)
+
+object GSFAxes {
+ val WEIGHT =
+ AxisDefinition(
+ tag = "wght",
+ minValue = 1f,
+ defaultValue = 400f,
+ maxValue = 1000f,
+ animationStep = 10f,
+ )
+
+ val WIDTH =
+ AxisDefinition(
+ tag = "wdth",
+ minValue = 25f,
+ defaultValue = 100f,
+ maxValue = 151f,
+ animationStep = 1f,
+ )
+
+ val SLANT =
+ AxisDefinition(
+ tag = "slnt",
+ minValue = 0f,
+ defaultValue = 0f,
+ maxValue = -10f,
+ animationStep = 0.1f,
+ )
+
+ val ROUND =
+ AxisDefinition(
+ tag = "ROND",
+ minValue = 0f,
+ defaultValue = 0f,
+ maxValue = 100f,
+ animationStep = 1f,
+ )
+
+ val GRADE =
+ AxisDefinition(
+ tag = "GRAD",
+ minValue = 0f,
+ defaultValue = 0f,
+ maxValue = 100f,
+ animationStep = 1f,
+ )
+
+ val OPTICAL_SIZE =
+ AxisDefinition(
+ tag = "opsz",
+ minValue = 6f,
+ defaultValue = 18f,
+ maxValue = 144f,
+ animationStep = 1f,
+ )
+
+ // Not a GSF Axis, but present for FontInterpolator compatibility
+ val ITALIC =
+ AxisDefinition(
+ tag = "ITAL",
+ minValue = 0f,
+ defaultValue = 0f,
+ maxValue = 1f,
+ animationStep = 0.1f,
+ )
+
+ private val AXIS_MAP =
+ listOf(WEIGHT, WIDTH, SLANT, ROUND, GRADE, OPTICAL_SIZE, ITALIC)
+ .map { def -> def.tag.toLowerCase() to def }
+ .toMap()
+
+ fun getAxis(axis: String): AxisDefinition? = AXIS_MAP[axis.toLowerCase()]
+}
diff --git a/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/BouncerSceneModule.kt b/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/BouncerOverlayModule.kt
similarity index 71%
rename from packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/BouncerSceneModule.kt
rename to packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/BouncerOverlayModule.kt
index 5b368df..42694243 100644
--- a/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/BouncerSceneModule.kt
+++ b/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/BouncerOverlayModule.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 The Android Open Source Project
+ * Copyright (C) 2025 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.
@@ -16,14 +16,13 @@
package com.android.systemui.scene
-import com.android.systemui.bouncer.ui.composable.BouncerScene
-import com.android.systemui.scene.ui.composable.Scene
+import com.android.systemui.bouncer.ui.composable.BouncerOverlay
+import com.android.systemui.scene.ui.composable.Overlay
import dagger.Binds
import dagger.Module
import dagger.multibindings.IntoSet
@Module
-interface BouncerSceneModule {
-
- @Binds @IntoSet fun bouncerScene(scene: BouncerScene): Scene
+interface BouncerOverlayModule {
+ @Binds @IntoSet fun bouncer(overlay: BouncerOverlay): Overlay
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerContent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerContent.kt
index 456edaf..48e52d6 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerContent.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerContent.kt
@@ -98,7 +98,7 @@
import com.android.systemui.bouncer.ui.BouncerDialogFactory
import com.android.systemui.bouncer.ui.viewmodel.AuthMethodBouncerViewModel
import com.android.systemui.bouncer.ui.viewmodel.BouncerMessageViewModel
-import com.android.systemui.bouncer.ui.viewmodel.BouncerSceneContentViewModel
+import com.android.systemui.bouncer.ui.viewmodel.BouncerOverlayContentViewModel
import com.android.systemui.bouncer.ui.viewmodel.MessageViewModel
import com.android.systemui.bouncer.ui.viewmodel.PasswordBouncerViewModel
import com.android.systemui.bouncer.ui.viewmodel.PatternBouncerViewModel
@@ -118,7 +118,7 @@
@Composable
fun BouncerContent(
- viewModel: BouncerSceneContentViewModel,
+ viewModel: BouncerOverlayContentViewModel,
dialogFactory: BouncerDialogFactory,
modifier: Modifier = Modifier,
) {
@@ -131,8 +131,8 @@
@Composable
@VisibleForTesting
fun BouncerContent(
- layout: BouncerSceneLayout,
- viewModel: BouncerSceneContentViewModel,
+ layout: BouncerOverlayLayout,
+ viewModel: BouncerOverlayContentViewModel,
dialogFactory: BouncerDialogFactory,
modifier: Modifier,
) {
@@ -147,11 +147,12 @@
modifier = modifier.imePadding().onKeyEvent(viewModel::onKeyEvent).scale(scale)
) {
when (layout) {
- BouncerSceneLayout.STANDARD_BOUNCER -> StandardLayout(viewModel = viewModel)
- BouncerSceneLayout.BESIDE_USER_SWITCHER ->
+ BouncerOverlayLayout.STANDARD_BOUNCER -> StandardLayout(viewModel = viewModel)
+ BouncerOverlayLayout.BESIDE_USER_SWITCHER ->
BesideUserSwitcherLayout(viewModel = viewModel)
- BouncerSceneLayout.BELOW_USER_SWITCHER -> BelowUserSwitcherLayout(viewModel = viewModel)
- BouncerSceneLayout.SPLIT_BOUNCER -> SplitLayout(viewModel = viewModel)
+ BouncerOverlayLayout.BELOW_USER_SWITCHER ->
+ BelowUserSwitcherLayout(viewModel = viewModel)
+ BouncerOverlayLayout.SPLIT_BOUNCER -> SplitLayout(viewModel = viewModel)
}
Dialog(bouncerViewModel = viewModel, dialogFactory = dialogFactory)
@@ -163,7 +164,10 @@
* authentication attempt, including all messaging UI (directives, reasoning, errors, etc.).
*/
@Composable
-private fun StandardLayout(viewModel: BouncerSceneContentViewModel, modifier: Modifier = Modifier) {
+private fun StandardLayout(
+ viewModel: BouncerOverlayContentViewModel,
+ modifier: Modifier = Modifier,
+) {
val isHeightExpanded =
LocalWindowSizeClass.current.heightSizeClass == WindowHeightSizeClass.Expanded
@@ -208,7 +212,7 @@
* by double-tapping on the side.
*/
@Composable
-private fun SplitLayout(viewModel: BouncerSceneContentViewModel, modifier: Modifier = Modifier) {
+private fun SplitLayout(viewModel: BouncerOverlayContentViewModel, modifier: Modifier = Modifier) {
val authMethod by viewModel.authMethodViewModel.collectAsStateWithLifecycle()
Row(
@@ -297,7 +301,7 @@
*/
@Composable
private fun BesideUserSwitcherLayout(
- viewModel: BouncerSceneContentViewModel,
+ viewModel: BouncerOverlayContentViewModel,
modifier: Modifier = Modifier,
) {
val isLeftToRight = LocalLayoutDirection.current == LayoutDirection.Ltr
@@ -452,7 +456,7 @@
/** Arranges the bouncer contents and user switcher contents one on top of the other, vertically. */
@Composable
private fun BelowUserSwitcherLayout(
- viewModel: BouncerSceneContentViewModel,
+ viewModel: BouncerOverlayContentViewModel,
modifier: Modifier = Modifier,
) {
Column(modifier = modifier.padding(vertical = 128.dp)) {
@@ -483,7 +487,7 @@
@Composable
private fun FoldAware(
- viewModel: BouncerSceneContentViewModel,
+ viewModel: BouncerOverlayContentViewModel,
aboveFold: @Composable BoxScope.() -> Unit,
belowFold: @Composable BoxScope.() -> Unit,
modifier: Modifier = Modifier,
@@ -606,7 +610,7 @@
* For example, this can be the PIN shapes or password text field.
*/
@Composable
-private fun OutputArea(viewModel: BouncerSceneContentViewModel, modifier: Modifier = Modifier) {
+private fun OutputArea(viewModel: BouncerOverlayContentViewModel, modifier: Modifier = Modifier) {
val authMethodViewModel: AuthMethodBouncerViewModel? by
viewModel.authMethodViewModel.collectAsStateWithLifecycle()
when (val nonNullViewModel = authMethodViewModel) {
@@ -631,7 +635,7 @@
*/
@Composable
private fun InputArea(
- viewModel: BouncerSceneContentViewModel,
+ viewModel: BouncerOverlayContentViewModel,
pinButtonRowVerticalSpacing: Dp,
centerPatternDotsVertically: Boolean,
modifier: Modifier = Modifier,
@@ -659,7 +663,7 @@
}
@Composable
-private fun ActionArea(viewModel: BouncerSceneContentViewModel, modifier: Modifier = Modifier) {
+private fun ActionArea(viewModel: BouncerOverlayContentViewModel, modifier: Modifier = Modifier) {
val actionButton: BouncerActionButtonModel? by
viewModel.actionButton.collectAsStateWithLifecycle()
val appearFadeInAnimatable = remember { Animatable(0f) }
@@ -723,7 +727,7 @@
@Composable
private fun Dialog(
- bouncerViewModel: BouncerSceneContentViewModel,
+ bouncerViewModel: BouncerOverlayContentViewModel,
dialogFactory: BouncerDialogFactory,
) {
val dialogViewModel by bouncerViewModel.dialogViewModel.collectAsStateWithLifecycle()
@@ -751,7 +755,7 @@
/** Renders the UI of the user switcher that's displayed on large screens next to the bouncer UI. */
@Composable
-private fun UserSwitcher(viewModel: BouncerSceneContentViewModel, modifier: Modifier = Modifier) {
+private fun UserSwitcher(viewModel: BouncerOverlayContentViewModel, modifier: Modifier = Modifier) {
val isUserSwitcherVisible by viewModel.isUserSwitcherVisible.collectAsStateWithLifecycle()
if (!isUserSwitcherVisible) {
// Take up the same space as the user switcher normally would, but with nothing inside it.
@@ -829,7 +833,7 @@
@Composable
private fun UserSwitcherDropdownMenu(
isExpanded: Boolean,
- items: List<BouncerSceneContentViewModel.UserSwitcherDropdownItemViewModel>,
+ items: List<BouncerOverlayContentViewModel.UserSwitcherDropdownItemViewModel>,
onDismissed: () -> Unit,
) {
val context = LocalContext.current
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlay.kt
similarity index 78%
rename from packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerScene.kt
rename to packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlay.kt
index fad8ae7..48dee24 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlay.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2025 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.
@@ -29,19 +29,19 @@
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.bouncer.ui.BouncerDialogFactory
-import com.android.systemui.bouncer.ui.viewmodel.BouncerSceneContentViewModel
+import com.android.systemui.bouncer.ui.viewmodel.BouncerOverlayContentViewModel
import com.android.systemui.bouncer.ui.viewmodel.BouncerUserActionsViewModel
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.rememberViewModel
-import com.android.systemui.scene.shared.model.Scenes
-import com.android.systemui.scene.ui.composable.Scene
+import com.android.systemui.scene.shared.model.Overlays
+import com.android.systemui.scene.ui.composable.Overlay
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
object Bouncer {
object Elements {
+ val Root = ElementKey("BouncerRoot")
val Background = ElementKey("BouncerBackground")
val Content = ElementKey("BouncerContent")
}
@@ -51,16 +51,16 @@
}
}
-/** The bouncer scene displays authentication challenges like PIN, password, or pattern. */
+/** The bouncer overlay displays authentication challenges like PIN, password, or pattern. */
@SysUISingleton
-class BouncerScene
+class BouncerOverlay
@Inject
constructor(
private val actionsViewModelFactory: BouncerUserActionsViewModel.Factory,
- private val contentViewModelFactory: BouncerSceneContentViewModel.Factory,
+ private val contentViewModelFactory: BouncerOverlayContentViewModel.Factory,
private val dialogFactory: BouncerDialogFactory,
-) : ExclusiveActivatable(), Scene {
- override val key = Scenes.Bouncer
+) : Overlay {
+ override val key = Overlays.Bouncer
private val actionsViewModel: BouncerUserActionsViewModel by lazy {
actionsViewModelFactory.create()
@@ -68,22 +68,22 @@
override val userActions: Flow<Map<UserAction, UserActionResult>> = actionsViewModel.actions
- override suspend fun onActivated(): Nothing {
+ override suspend fun activate(): Nothing {
actionsViewModel.activate()
}
@Composable
override fun ContentScope.Content(modifier: Modifier) =
- BouncerScene(
- viewModel = rememberViewModel("BouncerScene") { contentViewModelFactory.create() },
+ BouncerOverlay(
+ viewModel = rememberViewModel("BouncerOverlay") { contentViewModelFactory.create() },
dialogFactory = dialogFactory,
- modifier = modifier,
+ modifier = modifier.element(Bouncer.Elements.Root),
)
}
@Composable
-private fun ContentScope.BouncerScene(
- viewModel: BouncerSceneContentViewModel,
+private fun ContentScope.BouncerOverlay(
+ viewModel: BouncerOverlayContentViewModel,
dialogFactory: BouncerDialogFactory,
modifier: Modifier = Modifier,
) {
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerSceneLayout.kt b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlayLayout.kt
similarity index 74%
rename from packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerSceneLayout.kt
rename to packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlayLayout.kt
index 328fec5..8651859 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerSceneLayout.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlayLayout.kt
@@ -23,12 +23,12 @@
import com.android.compose.windowsizeclass.LocalWindowSizeClass
/**
- * Returns the [BouncerSceneLayout] that should be used by the bouncer scene. If
- * [isOneHandedModeSupported] is `false`, then [BouncerSceneLayout.BESIDE_USER_SWITCHER] is replaced
- * by [BouncerSceneLayout.STANDARD_BOUNCER].
+ * Returns the [BouncerOverlayLayout] that should be used by the bouncer scene. If
+ * [isOneHandedModeSupported] is `false`, then [BouncerOverlayLayout.BESIDE_USER_SWITCHER] is
+ * replaced by [BouncerOverlayLayout.STANDARD_BOUNCER].
*/
@Composable
-fun calculateLayout(isOneHandedModeSupported: Boolean): BouncerSceneLayout {
+fun calculateLayout(isOneHandedModeSupported: Boolean): BouncerOverlayLayout {
val windowSizeClass = LocalWindowSizeClass.current
return calculateLayoutInternal(
@@ -57,7 +57,7 @@
}
/** Enumerates all known adaptive layout configurations. */
-enum class BouncerSceneLayout {
+enum class BouncerOverlayLayout {
/** The default UI with the bouncer laid out normally. */
STANDARD_BOUNCER,
/** The bouncer is displayed vertically stacked with the user switcher. */
@@ -84,21 +84,21 @@
width: SizeClass,
height: SizeClass,
isOneHandedModeSupported: Boolean,
-): BouncerSceneLayout {
+): BouncerOverlayLayout {
return when (height) {
- SizeClass.COMPACT -> BouncerSceneLayout.SPLIT_BOUNCER
+ SizeClass.COMPACT -> BouncerOverlayLayout.SPLIT_BOUNCER
SizeClass.MEDIUM ->
when (width) {
- SizeClass.COMPACT -> BouncerSceneLayout.STANDARD_BOUNCER
- SizeClass.MEDIUM -> BouncerSceneLayout.STANDARD_BOUNCER
- SizeClass.EXPANDED -> BouncerSceneLayout.BESIDE_USER_SWITCHER
+ SizeClass.COMPACT -> BouncerOverlayLayout.STANDARD_BOUNCER
+ SizeClass.MEDIUM -> BouncerOverlayLayout.STANDARD_BOUNCER
+ SizeClass.EXPANDED -> BouncerOverlayLayout.BESIDE_USER_SWITCHER
}
SizeClass.EXPANDED ->
when (width) {
- SizeClass.COMPACT -> BouncerSceneLayout.STANDARD_BOUNCER
- SizeClass.MEDIUM -> BouncerSceneLayout.BELOW_USER_SWITCHER
- SizeClass.EXPANDED -> BouncerSceneLayout.BESIDE_USER_SWITCHER
+ SizeClass.COMPACT -> BouncerOverlayLayout.STANDARD_BOUNCER
+ SizeClass.MEDIUM -> BouncerOverlayLayout.BELOW_USER_SWITCHER
+ SizeClass.EXPANDED -> BouncerOverlayLayout.BESIDE_USER_SWITCHER
}
- }.takeIf { it != BouncerSceneLayout.BESIDE_USER_SWITCHER || isOneHandedModeSupported }
- ?: BouncerSceneLayout.STANDARD_BOUNCER
+ }.takeIf { it != BouncerOverlayLayout.BESIDE_USER_SWITCHER || isOneHandedModeSupported }
+ ?: BouncerOverlayLayout.STANDARD_BOUNCER
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationLockscreenScrim.kt b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationLockscreenScrim.kt
index ef8911d..624c560 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationLockscreenScrim.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationLockscreenScrim.kt
@@ -31,6 +31,7 @@
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.ContentScope
import com.android.compose.animation.scene.content.state.TransitionState
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationLockscreenScrimViewModel
@@ -100,7 +101,7 @@
val isBouncerToLockscreen =
layoutState.currentTransition?.isTransitioning(
- from = Scenes.Bouncer,
+ from = Overlays.Bouncer,
to = Scenes.Lockscreen,
) ?: false
@@ -120,5 +121,5 @@
return shadeMode != ShadeMode.Dual &&
currentTransition.isInitiatedByUserInput &&
(currentTransition.isTransitioning(from = Scenes.Shade, to = Scenes.Lockscreen) ||
- currentTransition.isTransitioning(from = Scenes.Bouncer, to = Scenes.Lockscreen))
+ currentTransition.isTransitioning(from = Overlays.Bouncer, to = Scenes.Lockscreen))
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt
index b826187..fe5c72f 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt
@@ -135,7 +135,8 @@
}
}
is TransitionState.Transition.OverlayTransition ->
- error("Bad transition for QuickSettings scene: overlays not supported")
+ // Currently, no overlays use this QS impl, so we should make sure it's closed.
+ QSSceneAdapter.State.CLOSED
}
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerInterruptionHandler.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerInterruptionHandler.kt
index 7e99847..4ff7f48 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerInterruptionHandler.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerInterruptionHandler.kt
@@ -20,9 +20,11 @@
import com.android.compose.animation.scene.InterruptionResult
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.content.state.TransitionState
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.composable.transitions.TO_BOUNCER_FADE_FRACTION
+// TODO(b/394632609) update this class to handle Bouncer as an Overlay
object SceneContainerInterruptionHandler : InterruptionHandler {
override fun onInterruption(
interrupted: TransitionState.Transition.ChangeScene,
@@ -39,7 +41,7 @@
transition: TransitionState.Transition.ChangeScene,
targetScene: SceneKey,
): InterruptionResult? {
- if (targetScene != Scenes.Gone || !transition.isTransitioningFromOrTo(Scenes.Bouncer)) {
+ if (targetScene != Scenes.Gone || !transition.isTransitioningFromOrTo(Overlays.Bouncer)) {
return null
}
@@ -48,7 +50,7 @@
// usually the Lockscreen scene).
val otherScene: SceneKey
val animatesFromBouncer =
- if (transition.isTransitioning(to = Scenes.Bouncer)) {
+ if (transition.isTransitioning(to = Overlays.Bouncer)) {
otherScene = transition.fromScene
transition.progress >= TO_BOUNCER_FADE_FRACTION
} else {
@@ -58,7 +60,7 @@
return if (animatesFromBouncer) {
InterruptionResult(
- animateFrom = Scenes.Bouncer,
+ animateFrom = Scenes.Lockscreen,
// We don't want the content of the lockscreen to be shown during the Bouncer =>
// Launcher transition. We disable chaining of the transitions so that only the
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
index 2ad9b7a..7fe19fe 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
@@ -1,5 +1,6 @@
package com.android.systemui.scene.ui.composable
+import com.android.compose.animation.scene.DefaultInterruptionHandler
import com.android.compose.animation.scene.SceneTransitions
import com.android.compose.animation.scene.TransitionKey
import com.android.compose.animation.scene.reveal.ContainerRevealHaptics
@@ -29,6 +30,7 @@
import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeTransition
import com.android.systemui.scene.ui.composable.transitions.lockscreenToSplitShadeTransition
import com.android.systemui.scene.ui.composable.transitions.shadeToQuickSettingsTransition
+import com.android.systemui.scene.ui.composable.transitions.toBouncerTransition
import com.android.systemui.scene.ui.composable.transitions.toNotificationsShadeTransition
import com.android.systemui.scene.ui.composable.transitions.toQuickSettingsShadeTransition
import com.android.systemui.shade.ui.composable.Shade
@@ -48,12 +50,10 @@
class SceneContainerTransitions : SceneContainerTransitionsBuilder {
override fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions {
return transitions {
- interruptionHandler = SceneContainerInterruptionHandler
+ interruptionHandler = DefaultInterruptionHandler
// Scene transitions
- from(Scenes.Bouncer, to = Scenes.Gone) { bouncerToGoneTransition() }
- from(Scenes.Dream, to = Scenes.Bouncer) { dreamToBouncerTransition() }
from(Scenes.Dream, to = Scenes.Communal) { dreamToCommunalTransition() }
from(Scenes.Dream, to = Scenes.Gone) { dreamToGoneTransition() }
from(
@@ -102,15 +102,6 @@
goneToQuickSettingsTransition(durationScale = 0.9)
}
- from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() }
- from(
- Scenes.Lockscreen,
- to = Scenes.Bouncer,
- key = TransitionKey.PredictiveBack,
- reversePreview = { bouncerToLockscreenPreview() },
- ) {
- lockscreenToBouncerTransition()
- }
from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() }
from(Scenes.Lockscreen, to = Scenes.Dream) { lockscreenToDreamTransition() }
from(
@@ -190,10 +181,22 @@
) {
communalToShadeTransition()
}
- from(Scenes.Communal, to = Scenes.Bouncer) { communalToBouncerTransition() }
// Overlay transitions
+ to(Overlays.Bouncer) { toBouncerTransition() }
+ from(Overlays.Bouncer, to = Scenes.Gone) { bouncerToGoneTransition() }
+ from(Scenes.Dream, to = Overlays.Bouncer) { dreamToBouncerTransition() }
+ from(Scenes.Lockscreen, to = Overlays.Bouncer) { lockscreenToBouncerTransition() }
+ from(
+ Scenes.Lockscreen,
+ to = Overlays.Bouncer,
+ key = TransitionKey.PredictiveBack,
+ reversePreview = { bouncerToLockscreenPreview() },
+ ) {
+ lockscreenToBouncerTransition()
+ }
+ from(Scenes.Communal, to = Overlays.Bouncer) { communalToBouncerTransition() }
to(
Overlays.NotificationsShade,
cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromBouncerToGoneTransition.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromBouncerToGoneTransition.kt
index 5eefe49..27cdf21 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromBouncerToGoneTransition.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromBouncerToGoneTransition.kt
@@ -2,10 +2,10 @@
import androidx.compose.animation.core.tween
import com.android.compose.animation.scene.TransitionBuilder
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.bouncer.ui.composable.Bouncer
fun TransitionBuilder.bouncerToGoneTransition() {
spec = tween(durationMillis = 500)
- fade(Scenes.Bouncer.rootElementKey)
+ fade(Bouncer.Elements.Root)
}
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 cdb1e2e..7e7b629 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
@@ -54,6 +54,7 @@
import com.android.compose.animation.scene.LowestZIndexContentPicker
import com.android.compose.windowsizeclass.LocalWindowSizeClass
import com.android.systemui.res.R
+import androidx.compose.ui.unit.Dp
/** Renders a lightweight shade UI container, as an overlay. */
@Composable
@@ -202,10 +203,15 @@
}
object Dimensions {
- val PanelCornerRadius = 46.dp
+ val PanelCornerRadius: Dp
+ @Composable
+ @ReadOnlyComposable get() =
+ dimensionResource(R.dimen.overlay_shade_panel_shape_radius)
}
object Shapes {
- val RoundedCornerPanel = RoundedCornerShape(Dimensions.PanelCornerRadius)
+ val RoundedCornerPanel: RoundedCornerShape
+ @Composable
+ @ReadOnlyComposable get() = RoundedCornerShape(Dimensions.PanelCornerRadius)
}
}
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/ObservableTransitionState.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/ObservableTransitionState.kt
index 5bf77ae..f7f0bf19 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/ObservableTransitionState.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/ObservableTransitionState.kt
@@ -220,13 +220,70 @@
isInPreviewStage,
)
}
+
+ fun showOverlay(
+ overlay: OverlayKey,
+ fromScene: SceneKey,
+ currentOverlays: Flow<Set<OverlayKey>>,
+ progress: Flow<Float>,
+ isInitiatedByUserInput: Boolean,
+ isUserInputOngoing: Flow<Boolean>,
+ previewProgress: Flow<Float> = flowOf(0f),
+ isInPreviewStage: Flow<Boolean> = flowOf(false),
+ ): ShowOrHideOverlay {
+ return ShowOrHideOverlay(
+ overlay = overlay,
+ fromContent = fromScene,
+ toContent = overlay,
+ currentScene = fromScene,
+ currentOverlays = currentOverlays,
+ progress = progress,
+ isInitiatedByUserInput = isInitiatedByUserInput,
+ isUserInputOngoing = isUserInputOngoing,
+ previewProgress = previewProgress,
+ isInPreviewStage = isInPreviewStage,
+ )
+ }
+
+ fun hideOverlay(
+ overlay: OverlayKey,
+ toScene: SceneKey,
+ currentOverlays: Flow<Set<OverlayKey>>,
+ progress: Flow<Float>,
+ isInitiatedByUserInput: Boolean,
+ isUserInputOngoing: Flow<Boolean>,
+ previewProgress: Flow<Float> = flowOf(0f),
+ isInPreviewStage: Flow<Boolean> = flowOf(false),
+ ): ShowOrHideOverlay {
+ return ShowOrHideOverlay(
+ overlay = overlay,
+ fromContent = overlay,
+ toContent = toScene,
+ currentScene = toScene,
+ currentOverlays = currentOverlays,
+ progress = progress,
+ isInitiatedByUserInput = isInitiatedByUserInput,
+ isUserInputOngoing = isUserInputOngoing,
+ previewProgress = previewProgress,
+ isInPreviewStage = isInPreviewStage,
+ )
+ }
}
}
- fun isIdle(scene: SceneKey? = null): Boolean {
- return this is Idle && (scene == null || this.currentScene == scene)
+ fun isIdle(scene: SceneKey? = null, overlay: OverlayKey? = null): Boolean {
+ return this is Idle &&
+ (scene == null || this.currentScene == scene) &&
+ (overlay == null || overlay in this.currentOverlays)
}
+ fun isIdle(content: ContentKey?): Boolean =
+ when (content) {
+ is SceneKey -> isIdle(scene = content)
+ is OverlayKey -> isIdle(overlay = content)
+ null -> this is Idle
+ }
+
fun isTransitioning(from: ContentKey? = null, to: ContentKey? = null): Boolean {
return this is Transition &&
(from == null || this.fromContent == from) &&
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 72bb82b..f423bab 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
@@ -447,7 +447,7 @@
}
infix fun to(overlay: OverlayKey): Pair<UserAction, UserActionResult> {
- return this to UserActionResult(toOverlay = overlay)
+ return this to UserActionResult.ShowOverlay(overlay)
}
/** Resolve this into a [Resolved] user action given [layoutDirection]. */
@@ -677,22 +677,6 @@
*/
requiresFullDistanceSwipe: Boolean = false,
): UserActionResult = ChangeScene(toScene, transitionKey, requiresFullDistanceSwipe)
-
- /** A [UserActionResult] that shows [toOverlay]. */
- operator fun invoke(
- /** The overlay we should be transitioning to during the [UserAction]. */
- toOverlay: OverlayKey,
-
- /** The key of the transition that should be used. */
- transitionKey: TransitionKey? = null,
-
- /**
- * If `true`, the swipe will be committed if only if the user swiped at least the swipe
- * distance, i.e. the transition progress was already equal to or bigger than 100% when
- * the user released their finger.
- */
- requiresFullDistanceSwipe: Boolean = false,
- ): UserActionResult = ShowOverlay(toOverlay, transitionKey, requiresFullDistanceSwipe)
}
}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockController.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockController.kt
index 004d1aa..ac1c5a8 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockController.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockController.kt
@@ -130,39 +130,25 @@
private val FONT_AXES =
listOf(
- ClockFontAxis(
- key = GSFAxes.WEIGHT,
+ GSFAxes.WEIGHT.toClockAxis(
type = AxisType.Float,
- minValue = 25f,
currentValue = 400f,
- maxValue = 1000f,
name = "Weight",
description = "Glyph Weight",
),
- ClockFontAxis(
- key = GSFAxes.WIDTH,
+ GSFAxes.WIDTH.toClockAxis(
type = AxisType.Float,
- minValue = 25f,
currentValue = 85f,
- maxValue = 151f,
name = "Width",
description = "Glyph Width",
),
- ClockFontAxis(
- key = GSFAxes.ROUND,
+ GSFAxes.ROUND.toClockAxis(
type = AxisType.Boolean,
- minValue = 0f,
- currentValue = 0f,
- maxValue = 100f,
name = "Round",
description = "Glyph Roundness",
),
- ClockFontAxis(
- key = GSFAxes.SLANT,
+ GSFAxes.SLANT.toClockAxis(
type = AxisType.Boolean,
- minValue = 0f,
- currentValue = 0f,
- maxValue = -10f,
name = "Slant",
description = "Glyph Slant",
),
@@ -170,10 +156,10 @@
private val LEGACY_FLEX_SETTINGS =
listOf(
- ClockFontAxisSetting(GSFAxes.WEIGHT, 600f),
- ClockFontAxisSetting(GSFAxes.WIDTH, 100f),
- ClockFontAxisSetting(GSFAxes.ROUND, 100f),
- ClockFontAxisSetting(GSFAxes.SLANT, 0f),
+ GSFAxes.WEIGHT.toClockAxisSetting(600f),
+ GSFAxes.WIDTH.toClockAxisSetting(100f),
+ GSFAxes.ROUND.toClockAxisSetting(100f),
+ GSFAxes.SLANT.toClockAxisSetting(0f),
)
}
}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt
index b2dbd65..b4c2f5d 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt
@@ -132,7 +132,7 @@
if (!isLargeClock) {
axes =
axes.map { axis ->
- if (axis.key == GSFAxes.WIDTH && axis.value > SMALL_CLOCK_MAX_WDTH) {
+ if (axis.key == GSFAxes.WIDTH.tag && axis.value > SMALL_CLOCK_MAX_WDTH) {
axis.copy(value = SMALL_CLOCK_MAX_WDTH)
} else {
axis
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FontUtils.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FontUtils.kt
new file mode 100644
index 0000000..212b1e2
--- /dev/null
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FontUtils.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2025 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.shared.clocks
+
+import com.android.systemui.animation.AxisDefinition
+import com.android.systemui.plugins.clocks.AxisType
+import com.android.systemui.plugins.clocks.ClockFontAxis
+import com.android.systemui.plugins.clocks.ClockFontAxisSetting
+
+fun AxisDefinition.toClockAxis(
+ type: AxisType,
+ currentValue: Float? = null,
+ name: String,
+ description: String,
+): ClockFontAxis {
+ return ClockFontAxis(
+ key = this.tag,
+ type = type,
+ maxValue = this.maxValue,
+ minValue = this.minValue,
+ currentValue = currentValue ?: this.defaultValue,
+ name = name,
+ description = description,
+ )
+}
+
+fun AxisDefinition.toClockAxisSetting(value: Float? = null): ClockFontAxisSetting {
+ return ClockFontAxisSetting(this.tag, value ?: this.defaultValue)
+}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
index 54be4d8..b7ce20e 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
@@ -49,6 +49,7 @@
import com.android.systemui.shared.clocks.DimensionParser
import com.android.systemui.shared.clocks.FLEX_CLOCK_ID
import com.android.systemui.shared.clocks.FontTextStyle
+import com.android.systemui.shared.clocks.toClockAxisSetting
import java.lang.Thread
import kotlin.math.max
import kotlin.math.min
@@ -585,25 +586,25 @@
val FIDGET_INTERPOLATOR = PathInterpolator(0.26873f, 0f, 0.45042f, 1f)
val FIDGET_DISTS =
mapOf(
- GSFAxes.WEIGHT to Pair(200f, 500f),
- GSFAxes.WIDTH to Pair(30f, 75f),
- GSFAxes.ROUND to Pair(0f, 50f),
- GSFAxes.SLANT to Pair(0f, -5f),
+ GSFAxes.WEIGHT.tag to Pair(200f, 500f),
+ GSFAxes.WIDTH.tag to Pair(30f, 75f),
+ GSFAxes.ROUND.tag to Pair(0f, 50f),
+ GSFAxes.SLANT.tag to Pair(0f, -5f),
)
val AOD_COLOR = Color.WHITE
- val LS_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 400f)
- val AOD_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 200f)
- val WIDTH_AXIS = ClockFontAxisSetting(GSFAxes.WIDTH, 85f)
- val ROUND_AXIS = ClockFontAxisSetting(GSFAxes.ROUND, 0f)
- val SLANT_AXIS = ClockFontAxisSetting(GSFAxes.SLANT, 0f)
+ val LS_WEIGHT_AXIS = GSFAxes.WEIGHT.toClockAxisSetting(400f)
+ val AOD_WEIGHT_AXIS = GSFAxes.WEIGHT.toClockAxisSetting(200f)
+ val WIDTH_AXIS = GSFAxes.WIDTH.toClockAxisSetting(85f)
+ val ROUND_AXIS = GSFAxes.ROUND.toClockAxisSetting(0f)
+ val SLANT_AXIS = GSFAxes.SLANT.toClockAxisSetting(0f)
// Axes for Legacy version of the Flex Clock
- val FLEX_LS_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 600f)
- val FLEX_AOD_LARGE_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 74f)
- val FLEX_AOD_SMALL_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 133f)
- val FLEX_LS_WIDTH_AXIS = ClockFontAxisSetting(GSFAxes.WIDTH, 100f)
- val FLEX_AOD_WIDTH_AXIS = ClockFontAxisSetting(GSFAxes.WIDTH, 43f)
- val FLEX_ROUND_AXIS = ClockFontAxisSetting(GSFAxes.ROUND, 100f)
+ val FLEX_LS_WEIGHT_AXIS = GSFAxes.WEIGHT.toClockAxisSetting(600f)
+ val FLEX_AOD_LARGE_WEIGHT_AXIS = GSFAxes.WEIGHT.toClockAxisSetting(74f)
+ val FLEX_AOD_SMALL_WEIGHT_AXIS = GSFAxes.WEIGHT.toClockAxisSetting(133f)
+ val FLEX_LS_WIDTH_AXIS = GSFAxes.WIDTH.toClockAxisSetting(100f)
+ val FLEX_AOD_WIDTH_AXIS = GSFAxes.WIDTH.toClockAxisSetting(43f)
+ val FLEX_ROUND_AXIS = GSFAxes.ROUND.toClockAxisSetting(100f)
}
}
diff --git a/packages/SystemUI/lint.xml b/packages/SystemUI/lint.xml
index 59a7109..bef2edd 100644
--- a/packages/SystemUI/lint.xml
+++ b/packages/SystemUI/lint.xml
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<lint>
+<!-- TODO(397519800): Remove hard coded once ASfP is capable of configuring this automatically -->
+<lint lintJars="../../../../out/soong/.intermediates/frameworks/base/packages/SystemUI/checks/SystemUILintChecker/linux_glibc_common/combined/SystemUILintChecker.jar">
<issue id="PrivateResource" severity="ignore" />
-</lint>
\ No newline at end of file
+</lint>
diff --git a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
index 24b9e84..189d554 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
@@ -43,6 +43,7 @@
import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants
import com.android.systemui.classifier.FalsingA11yDelegate
import com.android.systemui.classifier.FalsingCollector
+import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
@@ -65,6 +66,7 @@
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.FakeSceneDataSource
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.fakeSceneDataSource
import com.android.systemui.statusbar.policy.ConfigurationController
@@ -797,6 +799,9 @@
@EnableSceneContainer
fun dismissesKeyguard_whenSceneChangesToGone() =
kosmos.testScope.runTest {
+ // Collect sceneInteractor.currentOverlays so that show/hideOverlay receive updated
+ // overlay state during validation
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
// Upon init, we have never dismisses the keyguard.
underTest.onInit()
runCurrent()
@@ -807,19 +812,24 @@
// is not enough to trigger a dismissal of the keyguard.
underTest.onViewAttached()
fakeSceneDataSource.pause()
- sceneInteractor.changeScene(Scenes.Bouncer, "reason")
+ sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
+ sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
sceneTransitionStateFlow.value =
- ObservableTransitionState.Transition(
- Scenes.Lockscreen,
- Scenes.Bouncer,
- flowOf(Scenes.Bouncer),
- flowOf(.5f),
- false,
+ ObservableTransitionState.Transition.showOverlay(
+ overlay = Overlays.Bouncer,
+ fromScene = Scenes.Lockscreen,
+ currentOverlays = flowOf(setOf(Overlays.Bouncer)),
+ progress = flowOf(.5f),
+ isInitiatedByUserInput = false,
isUserInputOngoing = flowOf(false),
)
runCurrent()
- fakeSceneDataSource.unpause(expectedScene = Scenes.Bouncer)
- sceneTransitionStateFlow.value = ObservableTransitionState.Idle(Scenes.Bouncer)
+ fakeSceneDataSource.unpause(expectedOverlays = setOf(Overlays.Bouncer))
+ sceneTransitionStateFlow.value =
+ ObservableTransitionState.Idle(
+ currentScene = Scenes.Lockscreen,
+ currentOverlays = setOf(Overlays.Bouncer),
+ )
runCurrent()
verify(primaryBouncerInteractor, never())
.notifyKeyguardAuthenticatedPrimaryAuth(anyInt())
@@ -832,17 +842,18 @@
runCurrent()
fakeSceneDataSource.pause()
sceneInteractor.changeScene(Scenes.Gone, "reason")
+ sceneInteractor.hideOverlay(Overlays.Bouncer, "reason")
sceneTransitionStateFlow.value =
- ObservableTransitionState.Transition(
- Scenes.Bouncer,
- Scenes.Gone,
- flowOf(Scenes.Gone),
- flowOf(.5f),
- false,
+ ObservableTransitionState.Transition.hideOverlay(
+ overlay = Overlays.Bouncer,
+ toScene = Scenes.Gone,
+ currentOverlays = flowOf(emptySet()),
+ progress = flowOf(.5f),
+ isInitiatedByUserInput = false,
isUserInputOngoing = flowOf(false),
)
runCurrent()
- fakeSceneDataSource.unpause(expectedScene = Scenes.Gone)
+ fakeSceneDataSource.unpause(expectedScene = Scenes.Gone, expectedOverlays = emptySet())
sceneTransitionStateFlow.value = ObservableTransitionState.Idle(Scenes.Gone)
runCurrent()
verify(primaryBouncerInteractor).notifyKeyguardAuthenticatedPrimaryAuth(anyInt())
@@ -850,20 +861,30 @@
// While listening, moving back to the bouncer scene does not dismiss the keyguard
// again.
clearInvocations(primaryBouncerInteractor)
+
+ // switch to a different non-keyguard scene since showing overlay over Gone is
+ // prohibited
+ sceneInteractor.snapToScene(Scenes.Shade, "reason")
+ runCurrent()
+
fakeSceneDataSource.pause()
- sceneInteractor.changeScene(Scenes.Bouncer, "reason")
+ sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
sceneTransitionStateFlow.value =
- ObservableTransitionState.Transition(
- Scenes.Gone,
- Scenes.Bouncer,
- flowOf(Scenes.Bouncer),
- flowOf(.5f),
- false,
+ ObservableTransitionState.Transition.showOverlay(
+ overlay = Overlays.Bouncer,
+ fromScene = Scenes.Shade,
+ currentOverlays = flowOf(setOf(Overlays.Bouncer)),
+ progress = flowOf(.5f),
+ isInitiatedByUserInput = false,
isUserInputOngoing = flowOf(false),
)
runCurrent()
- fakeSceneDataSource.unpause(expectedScene = Scenes.Bouncer)
- sceneTransitionStateFlow.value = ObservableTransitionState.Idle(Scenes.Bouncer)
+ fakeSceneDataSource.unpause(expectedOverlays = setOf(Overlays.Bouncer))
+ sceneTransitionStateFlow.value =
+ ObservableTransitionState.Idle(
+ currentScene = Scenes.Lockscreen,
+ currentOverlays = setOf(Overlays.Bouncer),
+ )
runCurrent()
verify(primaryBouncerInteractor, never())
.notifyKeyguardAuthenticatedPrimaryAuth(anyInt())
@@ -874,17 +895,18 @@
underTest.onViewDetached()
fakeSceneDataSource.pause()
sceneInteractor.changeScene(Scenes.Gone, "reason")
+ sceneInteractor.hideOverlay(Overlays.Bouncer, "reason")
sceneTransitionStateFlow.value =
- ObservableTransitionState.Transition(
- Scenes.Bouncer,
- Scenes.Gone,
- flowOf(Scenes.Gone),
- flowOf(.5f),
- false,
+ ObservableTransitionState.Transition.hideOverlay(
+ overlay = Overlays.Bouncer,
+ toScene = Scenes.Gone,
+ currentOverlays = flowOf(emptySet()),
+ progress = flowOf(.5f),
+ isInitiatedByUserInput = false,
isUserInputOngoing = flowOf(false),
)
runCurrent()
- fakeSceneDataSource.unpause(expectedScene = Scenes.Gone)
+ fakeSceneDataSource.unpause(expectedScene = Scenes.Gone, expectedOverlays = emptySet())
sceneTransitionStateFlow.value = ObservableTransitionState.Idle(Scenes.Gone)
runCurrent()
verify(primaryBouncerInteractor, never())
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/FontVariationUtilsTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/FontVariationUtilsTest.kt
index f44769d..8d3640d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/FontVariationUtilsTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/FontVariationUtilsTest.kt
@@ -21,7 +21,7 @@
roundness = 100,
)
Assert.assertEquals(
- "'${GSFAxes.WEIGHT}' 100, '${GSFAxes.WIDTH}' 100, '${GSFAxes.ROUND}' 100",
+ "'${GSFAxes.WEIGHT.tag}' 100, '${GSFAxes.WIDTH.tag}' 100, '${GSFAxes.ROUND.tag}' 100",
initFvar,
)
val updatedFvar =
@@ -32,7 +32,8 @@
roundness = 100,
)
Assert.assertEquals(
- "'${GSFAxes.WEIGHT}' 200, '${GSFAxes.WIDTH}' 100, '${GSFAxes.OPTICAL_SIZE}' 0, '${GSFAxes.ROUND}' 100",
+ "'${GSFAxes.WEIGHT.tag}' 200, '${GSFAxes.WIDTH.tag}' 100," +
+ " '${GSFAxes.OPTICAL_SIZE.tag}' 0, '${GSFAxes.ROUND.tag}' 100",
updatedFvar,
)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerActionButtonInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerActionButtonInteractorTest.kt
index f376e93..40295a2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerActionButtonInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerActionButtonInteractorTest.kt
@@ -33,6 +33,7 @@
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository
import com.android.systemui.statusbar.pipeline.mobile.data.repository.fake
@@ -94,7 +95,8 @@
kosmos.telecomManager = telecomManager
- kosmos.sceneInteractor.changeScene(Scenes.Bouncer, "")
+ kosmos.sceneInteractor.changeScene(Scenes.Lockscreen, "")
+ kosmos.sceneInteractor.showOverlay(Overlays.Bouncer, "")
}
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerSceneLayoutTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerOverlayLayoutTest.kt
similarity index 92%
rename from packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerSceneLayoutTest.kt
rename to packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerOverlayLayoutTest.kt
index b4b4178..2d0dd49 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerSceneLayoutTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerOverlayLayoutTest.kt
@@ -18,10 +18,10 @@
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import com.android.systemui.bouncer.ui.composable.BouncerSceneLayout.BELOW_USER_SWITCHER
-import com.android.systemui.bouncer.ui.composable.BouncerSceneLayout.BESIDE_USER_SWITCHER
-import com.android.systemui.bouncer.ui.composable.BouncerSceneLayout.SPLIT_BOUNCER
-import com.android.systemui.bouncer.ui.composable.BouncerSceneLayout.STANDARD_BOUNCER
+import com.android.systemui.bouncer.ui.composable.BouncerOverlayLayout.BELOW_USER_SWITCHER
+import com.android.systemui.bouncer.ui.composable.BouncerOverlayLayout.BESIDE_USER_SWITCHER
+import com.android.systemui.bouncer.ui.composable.BouncerOverlayLayout.SPLIT_BOUNCER
+import com.android.systemui.bouncer.ui.composable.BouncerOverlayLayout.STANDARD_BOUNCER
import com.google.common.truth.Truth.assertThat
import java.util.Locale
import org.junit.Test
@@ -32,7 +32,7 @@
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
-class BouncerSceneLayoutTest : SysuiTestCase() {
+class BouncerOverlayLayoutTest : SysuiTestCase() {
data object Phone :
Device(
@@ -186,7 +186,7 @@
data class TestCase(
val device: Device,
val held: Held,
- val expected: BouncerSceneLayout,
+ val expected: BouncerOverlayLayout,
val isOneHandedModeSupported: Boolean = true,
) {
override fun toString(): String {
@@ -203,10 +203,10 @@
}
data class Expected(
- val whenNaturallyHeld: BouncerSceneLayout,
- val whenUnnaturallyHeld: BouncerSceneLayout,
+ val whenNaturallyHeld: BouncerOverlayLayout,
+ val whenUnnaturallyHeld: BouncerOverlayLayout,
) {
- fun layout(heldNaturally: Boolean): BouncerSceneLayout {
+ fun layout(heldNaturally: Boolean): BouncerOverlayLayout {
return if (heldNaturally) {
whenNaturallyHeld
} else {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerPredictiveBackTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerPredictiveBackTest.kt
index dda460a..0fe649c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerPredictiveBackTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerPredictiveBackTest.kt
@@ -43,11 +43,10 @@
import com.android.compose.animation.scene.isElement
import com.android.compose.theme.PlatformTheme
import com.android.systemui.SysuiTestCase
-import com.android.systemui.bouncer.domain.interactor.bouncerInteractor
import com.android.systemui.bouncer.ui.BouncerDialogFactory
-import com.android.systemui.bouncer.ui.viewmodel.BouncerSceneContentViewModel
+import com.android.systemui.bouncer.ui.viewmodel.BouncerOverlayContentViewModel
import com.android.systemui.bouncer.ui.viewmodel.BouncerUserActionsViewModel
-import com.android.systemui.bouncer.ui.viewmodel.bouncerSceneContentViewModel
+import com.android.systemui.bouncer.ui.viewmodel.bouncerOverlayContentViewModel
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
@@ -59,6 +58,7 @@
import com.android.systemui.scene.domain.startable.sceneContainerStartable
import com.android.systemui.scene.sceneContainerViewModelFactory
import com.android.systemui.scene.sceneTransitionsBuilder
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.SceneContainerConfig
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.sceneDataSourceDelegator
@@ -103,10 +103,10 @@
motionTestRule.toolkit.composeContentTestRule as AndroidComposeTestRule<*, *>
private val sceneInteractor by lazy { kosmos.sceneInteractor }
- private val Kosmos.sceneKeys by Fixture { listOf(Scenes.Lockscreen, Scenes.Bouncer) }
- private val Kosmos.initialSceneKey by Fixture { Scenes.Bouncer }
+ private val Kosmos.sceneKeys by Fixture { listOf(Scenes.Lockscreen) }
+ private val Kosmos.initialSceneKey by Fixture { Scenes.Lockscreen }
private val Kosmos.sceneContainerConfig by Fixture {
- val navigationDistances = mapOf(Scenes.Lockscreen to 1, Scenes.Bouncer to 0)
+ val navigationDistances = mapOf(Scenes.Lockscreen to 1)
SceneContainerConfig(
sceneKeys,
initialSceneKey,
@@ -137,17 +137,17 @@
}
private val bouncerSceneActionsViewModelFactory =
object : BouncerUserActionsViewModel.Factory {
- override fun create() = BouncerUserActionsViewModel(kosmos.bouncerInteractor)
+ override fun create() = BouncerUserActionsViewModel()
}
- private lateinit var bouncerSceneContentViewModel: BouncerSceneContentViewModel
- private val bouncerSceneContentViewModelFactory =
- object : BouncerSceneContentViewModel.Factory {
- override fun create() = bouncerSceneContentViewModel
+ private lateinit var mBouncerOverlayContentViewModel: BouncerOverlayContentViewModel
+ private val mBouncerOverlayContentViewModelFactory =
+ object : BouncerOverlayContentViewModel.Factory {
+ override fun create() = mBouncerOverlayContentViewModel
}
private val bouncerScene =
- BouncerScene(
+ BouncerOverlay(
bouncerSceneActionsViewModelFactory,
- bouncerSceneContentViewModelFactory,
+ mBouncerOverlayContentViewModelFactory,
bouncerDialogFactory,
)
@@ -155,7 +155,7 @@
fun setUp() {
MockitoAnnotations.initMocks(this)
- bouncerSceneContentViewModel = kosmos.bouncerSceneContentViewModel
+ mBouncerOverlayContentViewModel = kosmos.bouncerOverlayContentViewModel
val startable = kosmos.sceneContainerStartable
startable.start()
@@ -175,14 +175,10 @@
rememberViewModel("BouncerPredictiveBackTest") {
sceneContainerViewModel
},
- sceneByKey =
- mapOf(
- Scenes.Lockscreen to FakeLockscreen(),
- Scenes.Bouncer to bouncerScene,
- ),
- initialSceneKey = Scenes.Bouncer,
+ sceneByKey = mapOf(Scenes.Lockscreen to FakeLockscreen()),
+ initialSceneKey = Scenes.Lockscreen,
transitionsBuilder = kosmos.sceneTransitionsBuilder,
- overlayByKey = emptyMap(),
+ overlayByKey = mapOf(Overlays.Bouncer to bouncerScene),
dataSourceDelegator = kosmos.sceneDataSourceDelegator,
qsSceneAdapter = { kosmos.fakeQsSceneAdapter },
sceneJankMonitorFactory = kosmos.sceneJankMonitorFactory,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerOverlayContentViewModelTest.kt
similarity index 98%
rename from packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModelTest.kt
rename to packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerOverlayContentViewModelTest.kt
index eef8d9f..9cc09bd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerOverlayContentViewModelTest.kt
@@ -61,17 +61,17 @@
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
-class BouncerSceneContentViewModelTest : SysuiTestCase() {
+class BouncerOverlayContentViewModelTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
- private lateinit var underTest: BouncerSceneContentViewModel
+ private lateinit var underTest: BouncerOverlayContentViewModel
@Before
fun setUp() {
kosmos.sceneContainerStartable.start()
- underTest = kosmos.bouncerSceneContentViewModel
+ underTest = kosmos.bouncerOverlayContentViewModel
underTest.activateIn(testScope)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModelTest.kt
index e12fabf..fe2f51f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModelTest.kt
@@ -27,6 +27,7 @@
import com.android.systemui.kosmos.testScope
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.scene.domain.startable.sceneContainerStartable
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.fakeSceneDataSource
import com.android.systemui.testKosmos
@@ -62,13 +63,13 @@
kosmos.fakeSceneDataSource.changeScene(Scenes.QuickSettings)
runCurrent()
- kosmos.fakeSceneDataSource.changeScene(Scenes.Bouncer)
+ kosmos.fakeSceneDataSource.showOverlay(Overlays.Bouncer)
runCurrent()
assertThat(actions)
.containsEntriesExactly(
- Back to UserActionResult(Scenes.QuickSettings),
- Swipe.Down to UserActionResult(Scenes.QuickSettings),
+ Back to UserActionResult.HideOverlay(Overlays.Bouncer),
+ Swipe.Down to UserActionResult.HideOverlay(Overlays.Bouncer),
)
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt
index b2d2458..7cfbf5e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt
@@ -22,7 +22,6 @@
import androidx.compose.ui.input.key.KeyEventType
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
-import com.android.compose.animation.scene.SceneKey
import com.android.systemui.SysuiTestCase
import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository
import com.android.systemui.authentication.domain.interactor.authenticationInteractor
@@ -38,7 +37,7 @@
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.testKosmos
import com.android.systemui.user.data.model.SelectedUserModel
import com.android.systemui.user.data.model.SelectionStatus
@@ -86,12 +85,12 @@
@Test
fun onShown() =
testScope.runTest {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val password by collectLastValue(underTest.password)
lockDeviceAndOpenPasswordBouncer()
assertThat(password).isEmpty()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(underTest.authenticationMethod).isEqualTo(AuthenticationMethodModel.Password)
}
@@ -111,14 +110,14 @@
@Test
fun onPasswordInputChanged() =
testScope.runTest {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val password by collectLastValue(underTest.password)
lockDeviceAndOpenPasswordBouncer()
underTest.onPasswordInputChanged("password")
assertThat(password).isEqualTo("password")
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
@Test
@@ -152,7 +151,7 @@
kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
AuthenticationMethodModel.Password
)
- switchToScene(Scenes.Bouncer)
+ showBouncer()
// No input entered.
@@ -185,7 +184,7 @@
@Test
fun onShown_againAfterSceneChange_resetsPassword() =
testScope.runTest {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val password by collectLastValue(underTest.password)
lockDeviceAndOpenPasswordBouncer()
@@ -194,14 +193,14 @@
assertThat(password).isEqualTo("password")
// The user doesn't confirm the password, but navigates back to the lockscreen instead.
- switchToScene(Scenes.Lockscreen)
+ hideBouncer()
// The user navigates to the bouncer again.
- switchToScene(Scenes.Bouncer)
+ showBouncer()
// Ensure the previously-entered password is not shown.
assertThat(password).isEmpty()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
@Test
@@ -379,21 +378,28 @@
assertThat(underTest.onKeyEvent(KeyEventType.KeyDown, KeyEvent.KEYCODE_SPACE)).isFalse()
}
- private fun TestScope.switchToScene(toScene: SceneKey) {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
- val bouncerHidden = currentScene == Scenes.Bouncer && toScene != Scenes.Bouncer
- sceneInteractor.changeScene(toScene, "reason")
- if (bouncerHidden) underTest.onHidden()
+ private fun TestScope.showBouncer() {
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+ sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
runCurrent()
- assertThat(currentScene).isEqualTo(toScene)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
+ }
+
+ private fun TestScope.hideBouncer() {
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+ sceneInteractor.hideOverlay(Overlays.Bouncer, "reason")
+ underTest.onHidden()
+ runCurrent()
+
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
}
private fun TestScope.lockDeviceAndOpenPasswordBouncer() {
kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
AuthenticationMethodModel.Password
)
- switchToScene(Scenes.Bouncer)
+ showBouncer()
}
private suspend fun TestScope.setLockout(isLockedOut: Boolean, failedAttemptCount: Int = 5) {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt
index ec7d1c3..4075d11 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt
@@ -19,7 +19,6 @@
import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
-import com.android.compose.animation.scene.SceneKey
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.authentication.data.repository.FakeAuthenticationRepository
@@ -36,7 +35,7 @@
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.testKosmos
import com.google.android.msdl.data.model.MSDLToken
import com.google.common.truth.Truth.assertThat
@@ -58,7 +57,7 @@
private val testScope = kosmos.testScope
private val authenticationInteractor by lazy { kosmos.authenticationInteractor }
private val sceneInteractor by lazy { kosmos.sceneInteractor }
- private val bouncerViewModel by lazy { kosmos.bouncerSceneContentViewModel }
+ private val bouncerViewModel by lazy { kosmos.bouncerOverlayContentViewModel }
private val msdlPlayer: FakeMSDLPlayer = kosmos.fakeMSDLPlayer
private val bouncerHapticHelper = kosmos.bouncerHapticPlayer
private val underTest =
@@ -81,21 +80,21 @@
@Test
fun onShown() =
testScope.runTest {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val selectedDots by collectLastValue(underTest.selectedDots)
val currentDot by collectLastValue(underTest.currentDot)
lockDeviceAndOpenPatternBouncer()
assertThat(selectedDots).isEmpty()
assertThat(currentDot).isNull()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(underTest.authenticationMethod).isEqualTo(AuthenticationMethodModel.Pattern)
}
@Test
fun onDragStart() =
testScope.runTest {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val selectedDots by collectLastValue(underTest.selectedDots)
val currentDot by collectLastValue(underTest.currentDot)
lockDeviceAndOpenPatternBouncer()
@@ -104,7 +103,7 @@
assertThat(selectedDots).isEmpty()
assertThat(currentDot).isNull()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
@Test
@@ -143,7 +142,7 @@
@Test
fun onDragEnd_whenWrong() =
testScope.runTest {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val selectedDots by collectLastValue(underTest.selectedDots)
val currentDot by collectLastValue(underTest.currentDot)
lockDeviceAndOpenPatternBouncer()
@@ -154,7 +153,7 @@
assertThat(selectedDots).isEmpty()
assertThat(currentDot).isNull()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
@Test
@@ -365,21 +364,16 @@
)
}
- private fun TestScope.switchToScene(toScene: SceneKey) {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
- val bouncerHidden = currentScene == Scenes.Bouncer && toScene != Scenes.Bouncer
- sceneInteractor.changeScene(toScene, "reason")
- if (bouncerHidden) underTest.onHidden()
- runCurrent()
-
- assertThat(currentScene).isEqualTo(toScene)
- }
-
private fun TestScope.lockDeviceAndOpenPatternBouncer() {
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
AuthenticationMethodModel.Pattern
)
- switchToScene(Scenes.Bouncer)
+
+ sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
+ runCurrent()
+
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
companion object {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt
index 705e834..2518d2f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt
@@ -26,7 +26,6 @@
import androidx.compose.ui.input.key.KeyEventType
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
-import com.android.compose.animation.scene.SceneKey
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.authentication.data.repository.FakeAuthenticationRepository
@@ -42,7 +41,7 @@
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.testKosmos
import com.google.android.msdl.data.model.MSDLToken
import com.google.common.truth.Truth.assertThat
@@ -181,7 +180,7 @@
@Test
fun onBackspaceButtonLongPressed() =
testScope.runTest {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val pin by collectLastValue(underTest.pinInput.map { it.getPin() })
lockDeviceAndOpenPinBouncer()
@@ -194,7 +193,7 @@
underTest.onBackspaceButtonLongPressed()
assertThat(pin).isEmpty()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
@Test
@@ -213,7 +212,7 @@
@Test
fun onAuthenticateButtonClicked_whenWrong() =
testScope.runTest {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val pin by collectLastValue(underTest.pinInput.map { it.getPin() })
lockDeviceAndOpenPinBouncer()
@@ -226,7 +225,7 @@
underTest.onAuthenticateButtonClicked()
assertThat(pin).isEmpty()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
@Test
@@ -281,7 +280,7 @@
val autoConfirmEnabled by
collectLastValue(authenticationInteractor.isAutoConfirmEnabled)
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val pin by collectLastValue(underTest.pinInput.map { it.getPin() })
kosmos.fakeAuthenticationRepository.setAutoConfirmFeatureEnabled(true)
@@ -296,7 +295,7 @@
) // PIN is now wrong!
assertThat(pin).isEmpty()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
@Test
@@ -310,10 +309,10 @@
assertThat(pin).isNotEmpty()
// The user doesn't confirm the PIN, but navigates back to the lockscreen instead.
- switchToScene(Scenes.Lockscreen)
+ hideBouncer()
// The user navigates to the bouncer again.
- switchToScene(Scenes.Bouncer)
+ showBouncer()
// Ensure the previously-entered PIN is not shown.
assertThat(pin).isEmpty()
@@ -527,19 +526,26 @@
assertThat(msdlPlayer.latestPropertiesPlayed).isNull()
}
- private fun TestScope.switchToScene(toScene: SceneKey) {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
- val bouncerHidden = currentScene == Scenes.Bouncer && toScene != Scenes.Bouncer
- sceneInteractor.changeScene(toScene, "reason")
- if (bouncerHidden) underTest.onHidden()
+ private fun TestScope.showBouncer() {
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+ sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
runCurrent()
- assertThat(currentScene).isEqualTo(toScene)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
+ }
+
+ private fun TestScope.hideBouncer() {
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+ sceneInteractor.hideOverlay(Overlays.Bouncer, "reason")
+ underTest.onHidden()
+ runCurrent()
+
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
}
private fun TestScope.lockDeviceAndOpenPinBouncer() {
kosmos.fakeAuthenticationRepository.setAuthenticationMethod(AuthenticationMethodModel.Pin)
- switchToScene(Scenes.Bouncer)
+ showBouncer()
}
companion object {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelTest.kt
index 6199954..59fda98 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelTest.kt
@@ -74,7 +74,8 @@
setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
assertThat(actions).isNotEmpty()
assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(Scenes.Lockscreen))
- assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
+ assertThat(actions?.get(Swipe.Up))
+ .isEqualTo(UserActionResult.ShowOverlay(Overlays.Bouncer))
assertThat(actions?.get(Swipe.Down)).isEqualTo(UserActionResult(Scenes.Shade))
setUpState(isShadeTouchable = false, isDeviceUnlocked = false)
@@ -96,7 +97,8 @@
setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
assertThat(actions).isNotEmpty()
assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(Scenes.Lockscreen))
- assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
+ assertThat(actions?.get(Swipe.Up))
+ .isEqualTo(UserActionResult.ShowOverlay(Overlays.Bouncer))
assertThat(actions?.get(Swipe.Down))
.isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade))
@@ -120,7 +122,8 @@
setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
assertThat(actions).isNotEmpty()
assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(Scenes.Lockscreen))
- assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
+ assertThat(actions?.get(Swipe.Up))
+ .isEqualTo(UserActionResult.ShowOverlay(Overlays.Bouncer))
assertThat(actions?.get(Swipe.Down))
.isEqualTo(UserActionResult.ShowOverlay(Overlays.NotificationsShade))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
index 799054a..f47aa6b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
@@ -85,6 +85,7 @@
import com.android.systemui.scene.data.repository.Idle
import com.android.systemui.scene.data.repository.Transition
import com.android.systemui.scene.data.repository.setTransition
+import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.fakeUserTracker
@@ -602,6 +603,7 @@
flowOf(ObservableTransitionState.Idle(CommunalScenes.Communal))
)
// Transitioned to Glanceable hub.
+ kosmos.sceneInteractor.changeScene(Scenes.Communal, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Communal),
stateTransition =
@@ -656,6 +658,7 @@
keyguardRepository.setKeyguardOccluded(true)
// And on hub
+ kosmos.sceneInteractor.changeScene(Scenes.Communal, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Communal),
stateTransition =
@@ -673,6 +676,7 @@
assertThat(isCommunalContentFlowFrozen).isEqualTo(true)
// 3. When transitioned to OCCLUDED and activity shows
+ kosmos.sceneInteractor.changeScene(Scenes.Lockscreen, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Lockscreen),
stateTransition =
@@ -759,6 +763,7 @@
keyguardRepository.setKeyguardOccluded(true)
// And transitioned to hub
+ kosmos.sceneInteractor.changeScene(Scenes.Communal, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Communal),
stateTransition =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt
index f6016c6..651d474 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt
@@ -81,6 +81,7 @@
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.testKosmos
@@ -186,15 +187,13 @@
underTest = createDeviceEntryFaceAuthRepositoryImpl(faceManager, bypassController)
if (!SceneContainerFlag.isEnabled) {
- mSetFlagsRule.disableFlags(
- AConfigFlags.FLAG_KEYGUARD_WM_STATE_REFACTOR,
- )
+ mSetFlagsRule.disableFlags(AConfigFlags.FLAG_KEYGUARD_WM_STATE_REFACTOR)
}
}
private fun createDeviceEntryFaceAuthRepositoryImpl(
fmOverride: FaceManager? = faceManager,
- bypassControllerOverride: KeyguardBypassController? = bypassController
+ bypassControllerOverride: KeyguardBypassController? = bypassController,
): DeviceEntryFaceAuthRepositoryImpl {
val faceAuthBuffer = logcatTableLogBuffer(kosmos, "face auth")
val faceDetectBuffer = logcatTableLogBuffer(kosmos, "face detect")
@@ -256,7 +255,7 @@
0,
null,
keyguardSessionId,
- faceAuthUiEvent.extraInfo
+ faceAuthUiEvent.extraInfo,
)
}
@@ -289,7 +288,7 @@
authenticationCallback.value.onAuthenticationError(
FACE_ERROR_LOCKOUT_PERMANENT,
- "face locked out"
+ "face locked out",
)
assertThat(lockedOut()).isTrue()
@@ -317,7 +316,7 @@
.thenReturn(
listOf(
createFaceSensorProperties(supportsFaceDetection = false),
- createFaceSensorProperties(supportsFaceDetection = true)
+ createFaceSensorProperties(supportsFaceDetection = true),
)
)
assertThat(createDeviceEntryFaceAuthRepositoryImpl().isDetectionSupported).isFalse()
@@ -326,7 +325,7 @@
.thenReturn(
listOf(
createFaceSensorProperties(supportsFaceDetection = true),
- createFaceSensorProperties(supportsFaceDetection = false)
+ createFaceSensorProperties(supportsFaceDetection = false),
)
)
assertThat(createDeviceEntryFaceAuthRepositoryImpl().isDetectionSupported).isTrue()
@@ -409,7 +408,7 @@
// Auth is done cancelling.
authenticationCallback.value.onAuthenticationError(
FACE_ERROR_CANCELED,
- "First auth attempt cancellation completed"
+ "First auth attempt cancellation completed",
)
val value = authStatus() as ErrorFaceAuthenticationStatus
assertThat(value.msgId).isEqualTo(FACE_ERROR_CANCELED)
@@ -472,7 +471,7 @@
underTest =
createDeviceEntryFaceAuthRepositoryImpl(
fmOverride = null,
- bypassControllerOverride = null
+ bypassControllerOverride = null,
)
fakeUserRepository.setSelectedUserInfo(primaryUser)
@@ -499,7 +498,7 @@
testGatingCheckForFaceAuth {
fakeUserRepository.setSelectedUserInfo(
primaryUser,
- SelectionStatus.SELECTION_IN_PROGRESS
+ SelectionStatus.SELECTION_IN_PROGRESS,
)
}
}
@@ -510,7 +509,7 @@
testGatingCheckForDetect {
fakeUserRepository.setSelectedUserInfo(
userInfo = primaryUser,
- selectionStatus = SelectionStatus.SELECTION_IN_PROGRESS
+ selectionStatus = SelectionStatus.SELECTION_IN_PROGRESS,
)
}
}
@@ -544,11 +543,11 @@
testGatingCheckForFaceAuth(sceneContainerEnabled = true) {
kosmos.sceneInteractor.setTransitionState(
MutableStateFlow(
- ObservableTransitionState.Transition(
- fromScene = Scenes.Bouncer,
+ ObservableTransitionState.Transition.hideOverlay(
+ overlay = Overlays.Bouncer,
toScene = Scenes.Gone,
- currentScene = flowOf(Scenes.Bouncer),
- progress = MutableStateFlow(0.2f),
+ currentOverlays = flowOf(setOf(Overlays.Bouncer)),
+ progress = flowOf(.2f),
isInitiatedByUserInput = true,
isUserInputOngoing = flowOf(false),
)
@@ -634,9 +633,11 @@
assertThat(canFaceAuthRun()).isFalse()
// but bouncer is shown after that.
- kosmos.sceneInteractor.changeScene(Scenes.Bouncer, "for-test")
+ kosmos.sceneInteractor.showOverlay(Overlays.Bouncer, "for-test")
kosmos.sceneInteractor.setTransitionState(
- MutableStateFlow(ObservableTransitionState.Idle(Scenes.Bouncer))
+ MutableStateFlow(
+ ObservableTransitionState.Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer))
+ )
)
runCurrent()
@@ -666,7 +667,7 @@
assertThat(canFaceAuthRun()).isFalse()
underTest.requestAuthenticate(
FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER,
- fallbackToDetection = true
+ fallbackToDetection = true,
)
faceAuthenticateIsNotCalled()
@@ -687,7 +688,7 @@
assertThat(canFaceAuthRun()).isFalse()
underTest.requestAuthenticate(
FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER,
- fallbackToDetection = true
+ fallbackToDetection = true,
)
faceAuthenticateIsNotCalled()
@@ -704,7 +705,7 @@
keyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
to = KeyguardState.OFF,
- testScope
+ testScope,
)
runCurrent()
keyguardTransitionRepository.sendTransitionStep(
@@ -730,7 +731,7 @@
keyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.OFF,
to = KeyguardState.LOCKSCREEN,
- testScope
+ testScope,
)
runCurrent()
@@ -834,7 +835,7 @@
fakeUserRepository.setSelectedUserInfo(
primaryUser,
- SelectionStatus.SELECTION_IN_PROGRESS
+ SelectionStatus.SELECTION_IN_PROGRESS,
)
assertThat(authenticated()).isFalse()
@@ -896,11 +897,11 @@
testGatingCheckForDetect(sceneContainerEnabled = true) {
kosmos.sceneInteractor.setTransitionState(
MutableStateFlow(
- ObservableTransitionState.Transition(
- fromScene = Scenes.Bouncer,
+ ObservableTransitionState.Transition.hideOverlay(
+ overlay = Overlays.Bouncer,
toScene = Scenes.Gone,
- currentScene = flowOf(Scenes.Bouncer),
- progress = MutableStateFlow(0.2f),
+ currentOverlays = flowOf(setOf(Overlays.Bouncer)),
+ progress = flowOf(.2f),
isInitiatedByUserInput = true,
isUserInputOngoing = flowOf(false),
)
@@ -1032,7 +1033,7 @@
keyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.DOZING,
to = KeyguardState.GONE,
- testScope
+ testScope,
)
runCurrent()
verify(faceManager).scheduleWatchdog()
@@ -1044,7 +1045,7 @@
keyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.AOD,
to = KeyguardState.GONE,
- testScope
+ testScope,
)
runCurrent()
verify(faceManager).scheduleWatchdog()
@@ -1056,7 +1057,7 @@
keyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
to = KeyguardState.GONE,
- testScope
+ testScope,
)
runCurrent()
verify(faceManager).scheduleWatchdog()
@@ -1068,7 +1069,7 @@
keyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.PRIMARY_BOUNCER,
to = KeyguardState.GONE,
- testScope
+ testScope,
)
runCurrent()
verify(faceManager).scheduleWatchdog()
@@ -1085,7 +1086,7 @@
authenticationCallback.value.onAuthenticationError(
FACE_ERROR_HW_UNAVAILABLE,
- "HW unavailable"
+ "HW unavailable",
)
advanceTimeBy(DeviceEntryFaceAuthRepositoryImpl.HAL_ERROR_RETRY_TIMEOUT)
@@ -1137,7 +1138,7 @@
private suspend fun TestScope.testGatingCheckForFaceAuth(
sceneContainerEnabled: Boolean = false,
- gatingCheckModifier: suspend () -> Unit
+ gatingCheckModifier: suspend () -> Unit,
) {
initCollectors()
allPreconditionsToRunFaceAuthAreTrue(sceneContainerEnabled)
@@ -1180,7 +1181,7 @@
private suspend fun TestScope.testGatingCheckForDetect(
sceneContainerEnabled: Boolean = false,
- gatingCheckModifier: suspend () -> Unit
+ gatingCheckModifier: suspend () -> Unit,
) {
initCollectors()
allPreconditionsToRunFaceAuthAreTrue(sceneContainerEnabled)
@@ -1194,7 +1195,7 @@
// Trigger authenticate with detection fallback
underTest.requestAuthenticate(
FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER,
- fallbackToDetection = true
+ fallbackToDetection = true,
)
runCurrent()
@@ -1213,7 +1214,7 @@
// Try to run detect again
underTest.requestAuthenticate(
FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER,
- fallbackToDetection = true
+ fallbackToDetection = true,
)
// Detect won't run because preconditions are not true anymore.
@@ -1242,7 +1243,7 @@
// Keyguard is not going away
kosmos.fakeKeyguardTransitionRepository.sendTransitionStep(
TransitionStep(KeyguardState.OFF, KeyguardState.LOCKSCREEN, value = 1.0f),
- validateStep = false
+ validateStep = false,
)
kosmos.sceneInteractor.setTransitionState(
MutableStateFlow(ObservableTransitionState.Idle(Scenes.Lockscreen))
@@ -1263,7 +1264,7 @@
keyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.AOD,
to = KeyguardState.LOCKSCREEN,
- testScope
+ testScope,
)
runCurrent()
}
@@ -1315,7 +1316,7 @@
any(),
any(),
isNull(),
- any(FaceAuthenticateOptions::class.java)
+ any(FaceAuthenticateOptions::class.java),
)
}
@@ -1334,7 +1335,7 @@
"vendor/model/revision" /* hardwareVersion */,
"1.01" /* firmwareVersion */,
"00000001" /* serialNumber */,
- "" /* softwareVersion */
+ "", /* softwareVersion */
)
)
return FaceSensorPropertiesInternal(
@@ -1345,7 +1346,7 @@
FaceSensorProperties.TYPE_UNKNOWN,
supportsFaceDetection /* supportsFaceDetection */,
true /* supportsSelfIllumination */,
- false /* resetLockoutRequiresChallenge */
+ false, /* resetLockoutRequiresChallenge */
)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt
index e36d245..d2d8ab9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt
@@ -55,6 +55,7 @@
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.power.shared.model.WakeSleepReason
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.android.systemui.user.data.model.SelectionStatus
@@ -298,9 +299,12 @@
testScope.runTest {
underTest.start()
- kosmos.sceneInteractor.changeScene(Scenes.Bouncer, "for-test")
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "for-test")
+ kosmos.sceneInteractor.showOverlay(Overlays.Bouncer, "for-test")
kosmos.sceneInteractor.setTransitionState(
- MutableStateFlow(ObservableTransitionState.Idle(Scenes.Bouncer))
+ MutableStateFlow(
+ ObservableTransitionState.Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer))
+ )
)
runCurrent()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
index 84f08f1..d247137 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
@@ -45,6 +45,7 @@
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.domain.startable.sceneContainerStartable
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.sysuiStatusBarStateController
import com.android.systemui.testKosmos
@@ -179,7 +180,7 @@
kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true)
switchToScene(Scenes.Lockscreen)
runCurrent()
- switchToScene(Scenes.Bouncer)
+ showBouncer()
val isDeviceEntered by collectLastValue(underTest.isDeviceEntered)
assertThat(isDeviceEntered).isFalse()
@@ -375,6 +376,7 @@
fun showOrUnlockDevice_noAlternateBouncer_switchesToBouncerScene() =
testScope.runTest {
val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
switchToScene(Scenes.Lockscreen)
assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
@@ -386,7 +388,7 @@
underTest.attemptDeviceEntry()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
@Test
@@ -437,6 +439,7 @@
assertThat(isDeviceEntered).isFalse()
assertThat(isDeviceEnteredDirectly).isFalse()
val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
// Navigate to shade and bouncer:
@@ -446,8 +449,8 @@
// be shown and successful authentication should take the user back to where they are,
// the shade scene.
sysuiStatusBarStateController.setLeaveOpenOnKeyguardHide(true)
- switchToScene(Scenes.Bouncer)
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ showBouncer()
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(isDeviceEntered).isFalse()
assertThat(isDeviceEnteredDirectly).isFalse()
@@ -465,6 +468,19 @@
runCurrent()
}
+ private fun TestScope.showBouncer() {
+ sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
+ sceneInteractor.setTransitionState(
+ flowOf(
+ ObservableTransitionState.Idle(
+ sceneInteractor.currentScene.value,
+ setOf(Overlays.Bouncer),
+ )
+ )
+ )
+ runCurrent()
+ }
+
private suspend fun givenCanShowAlternateBouncer() {
val canShowAlternateBouncer by
testScope.collectLastValue(kosmos.alternateBouncerInteractor.canShowAlternateBouncer)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractorTest.kt
index a5c0da5..f15fd28 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractorTest.kt
@@ -45,6 +45,7 @@
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.phone.dozeScrimController
import com.android.systemui.statusbar.phone.screenOffAnimationController
@@ -145,6 +146,7 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(true)
configureDeviceEntryBiometricAuthSuccessState(isFingerprintAuth = true)
configureBiometricUnlockState(
+ primaryBouncerVisible = false,
alternateBouncerVisible = false,
sceneKey = Scenes.Lockscreen,
)
@@ -167,7 +169,11 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(false)
configureDeviceEntryBiometricAuthSuccessState(isFingerprintAuth = true)
- configureBiometricUnlockState(alternateBouncerVisible = false, sceneKey = Scenes.Dream)
+ configureBiometricUnlockState(
+ primaryBouncerVisible = false,
+ alternateBouncerVisible = false,
+ sceneKey = Scenes.Dream,
+ )
runCurrent()
assertThat(deviceEntryFromBiometricSource)
@@ -185,8 +191,9 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(true)
configureDeviceEntryBiometricAuthSuccessState(isFingerprintAuth = true)
configureBiometricUnlockState(
+ primaryBouncerVisible = true,
alternateBouncerVisible = false,
- sceneKey = Scenes.Bouncer,
+ sceneKey = Scenes.Lockscreen,
)
runCurrent()
@@ -205,6 +212,7 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(true)
configureDeviceEntryBiometricAuthSuccessState(isFingerprintAuth = true)
configureBiometricUnlockState(
+ primaryBouncerVisible = false,
alternateBouncerVisible = false,
sceneKey = Scenes.Lockscreen,
)
@@ -225,6 +233,7 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(true)
configureDeviceEntryBiometricAuthSuccessState(isFingerprintAuth = true)
configureBiometricUnlockState(
+ primaryBouncerVisible = false,
alternateBouncerVisible = true,
sceneKey = Scenes.Lockscreen,
)
@@ -247,6 +256,7 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(true)
configureDeviceEntryBiometricAuthSuccessState(isFaceAuth = true)
configureBiometricUnlockState(
+ primaryBouncerVisible = false,
alternateBouncerVisible = false,
sceneKey = Scenes.Lockscreen,
)
@@ -274,6 +284,7 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(true)
configureDeviceEntryBiometricAuthSuccessState(isFaceAuth = true)
configureBiometricUnlockState(
+ primaryBouncerVisible = false,
alternateBouncerVisible = false,
sceneKey = Scenes.Lockscreen,
)
@@ -295,8 +306,9 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(true)
configureDeviceEntryBiometricAuthSuccessState(isFaceAuth = true)
configureBiometricUnlockState(
+ primaryBouncerVisible = true,
alternateBouncerVisible = false,
- sceneKey = Scenes.Bouncer,
+ sceneKey = Scenes.Lockscreen,
)
runCurrent()
@@ -314,7 +326,11 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(true)
configureDeviceEntryBiometricAuthSuccessState(isFaceAuth = true)
- configureBiometricUnlockState(alternateBouncerVisible = false, sceneKey = Scenes.Shade)
+ configureBiometricUnlockState(
+ primaryBouncerVisible = false,
+ alternateBouncerVisible = false,
+ sceneKey = Scenes.Shade,
+ )
runCurrent()
// MODE_NONE does not dismiss keyguard
@@ -333,6 +349,7 @@
whenever(kosmos.keyguardUpdateMonitor.isDeviceInteractive).thenReturn(true)
configureDeviceEntryBiometricAuthSuccessState(isFaceAuth = true)
configureBiometricUnlockState(
+ primaryBouncerVisible = false,
alternateBouncerVisible = false,
sceneKey = Scenes.Lockscreen,
)
@@ -354,6 +371,7 @@
kosmos.keyguardOcclusionRepository.setShowWhenLockedActivityInfo(onTop = true)
configureDeviceEntryBiometricAuthSuccessState(isFaceAuth = true)
configureBiometricUnlockState(
+ primaryBouncerVisible = false,
alternateBouncerVisible = true,
sceneKey = Scenes.Lockscreen,
)
@@ -381,13 +399,20 @@
}
private fun configureBiometricUnlockState(
+ primaryBouncerVisible: Boolean,
alternateBouncerVisible: Boolean,
sceneKey: SceneKey,
) {
kosmos.keyguardBouncerRepository.setAlternateVisible(alternateBouncerVisible)
kosmos.sceneInteractor.changeScene(sceneKey, "reason")
+ if (primaryBouncerVisible) kosmos.sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
kosmos.sceneInteractor.setTransitionState(
- MutableStateFlow<ObservableTransitionState>(ObservableTransitionState.Idle(sceneKey))
+ MutableStateFlow<ObservableTransitionState>(
+ ObservableTransitionState.Idle(
+ sceneKey,
+ if (primaryBouncerVisible) setOf(Overlays.Bouncer) else emptySet(),
+ )
+ )
)
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/DreamOverlayServiceTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/DreamOverlayServiceTest.kt
index 526510a..b42eddd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/DreamOverlayServiceTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/DreamOverlayServiceTest.kt
@@ -77,6 +77,7 @@
import com.android.systemui.navigationbar.gestural.domain.TaskMatcher
import com.android.systemui.scene.data.repository.sceneContainerRepository
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.android.systemui.touch.TouchInsetManager
@@ -1073,7 +1074,8 @@
assertThat(lifecycleRegistry.currentState).isEqualTo(Lifecycle.State.RESUMED)
// Bouncer shows.
- kosmos.sceneInteractor.changeScene(Scenes.Bouncer, "test")
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "test")
+ kosmos.sceneInteractor.showOverlay(Overlays.Bouncer, "test")
testScope.runCurrent()
mMainExecutor.runAllReady()
@@ -1082,6 +1084,7 @@
// Bouncer closes.
kosmos.sceneInteractor.changeScene(Scenes.Dream, "test")
+ kosmos.sceneInteractor.hideOverlay(Overlays.Bouncer, "test")
testScope.runCurrent()
mMainExecutor.runAllReady()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt
index 102ce0b..69b6e6c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt
@@ -74,7 +74,8 @@
setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
assertThat(actions).isNotEmpty()
- assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
+ assertThat(actions?.get(Swipe.Up))
+ .isEqualTo(UserActionResult.ShowOverlay(Overlays.Bouncer))
assertThat(actions?.get(Swipe.Down)).isEqualTo(UserActionResult(Scenes.Shade))
assertThat(actions?.get(Swipe.Start)).isNull()
assertThat(actions?.get(Swipe.End)).isNull()
@@ -99,7 +100,8 @@
setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
assertThat(actions).isNotEmpty()
- assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
+ assertThat(actions?.get(Swipe.Up))
+ .isEqualTo(UserActionResult.ShowOverlay(Overlays.Bouncer))
assertThat(actions?.get(Swipe.Down))
.isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade))
assertThat(actions?.get(Swipe.Start)).isNull()
@@ -126,7 +128,8 @@
setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
assertThat(actions).isNotEmpty()
- assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
+ assertThat(actions?.get(Swipe.Up))
+ .isEqualTo(UserActionResult.ShowOverlay(Overlays.Bouncer))
assertThat(actions?.get(Swipe.Down))
.isEqualTo(UserActionResult.ShowOverlay(Overlays.NotificationsShade))
assertThat(actions?.get(Swipe.Start)).isNull()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModelTest.kt
index 57bcc14..63be132 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModelTest.kt
@@ -248,6 +248,23 @@
}
@Test
+ fun screensOrderUntilFinish_whenAutoProceed() =
+ testScope.runTest {
+ val screens by collectValues(viewModel.screen)
+ val closeActivity by collectLastValue(viewModel.closeActivity)
+
+ peripheralsState(keyboardConnected = true, touchpadConnected = true)
+
+ autoProceed()
+ autoProceed()
+ // No autoproceeding at the last screen
+ goToNextScreen()
+
+ assertThat(screens).containsExactly(BACK_GESTURE, HOME_GESTURE, ACTION_KEY).inOrder()
+ assertThat(closeActivity).isTrue()
+ }
+
+ @Test
fun activityFinishes_ifTouchpadModuleIsNotPresent() =
testScope.runTest {
val viewModel =
@@ -299,6 +316,11 @@
runCurrent()
}
+ private suspend fun TestScope.autoProceed() {
+ viewModel.onAutoProceed()
+ runCurrent()
+ }
+
private fun TestScope.goBack() {
viewModel.onBack()
runCurrent()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt
index 32a631b..043daf0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt
@@ -8,16 +8,19 @@
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.flags.fakeFeatureFlagsClassic
+import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.scene.data.repository.Idle
import com.android.systemui.scene.data.repository.setSceneTransition
+import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.android.systemui.utils.GlobalWindowManager
@@ -130,7 +133,7 @@
keyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
to = KeyguardState.GONE,
- testScope
+ testScope,
)
verify(globalWindowManager, times(1))
.trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN)
@@ -141,6 +144,13 @@
@EnableSceneContainer
fun keyguardTransitionsToGone_trimsFontCache_scene_container() =
testScope.runTest {
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "reason")
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+ runCurrent()
+
+ kosmos.sceneInteractor.changeScene(Scenes.Gone, "")
kosmos.setSceneTransition(Idle(Scenes.Gone))
verify(globalWindowManager, times(1))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt
index 425079d..5bcf73b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt
@@ -41,7 +41,7 @@
import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.testKosmos
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
@@ -173,7 +173,7 @@
collectLastValue(underTest.showIndicatorForDeviceEntry)
runCurrent()
- updateBouncerScene(
+ updateBouncer(
isActive = true,
fpsDetectionRunning = true,
isUnlockingWithFpAllowed = true,
@@ -199,7 +199,7 @@
collectLastValue(underTest.showIndicatorForDeviceEntry)
runCurrent()
- updateBouncerScene(
+ updateBouncer(
isActive = false,
fpsDetectionRunning = true,
isUnlockingWithFpAllowed = true,
@@ -248,7 +248,7 @@
collectLastValue(underTest.showIndicatorForDeviceEntry)
runCurrent()
- updateBouncerScene(
+ updateBouncer(
isActive = true,
fpsDetectionRunning = false,
isUnlockingWithFpAllowed = true,
@@ -264,7 +264,7 @@
collectLastValue(underTest.showIndicatorForDeviceEntry)
runCurrent()
- updateBouncerScene(
+ updateBouncer(
isActive = true,
fpsDetectionRunning = true,
isUnlockingWithFpAllowed = false,
@@ -349,15 +349,16 @@
)
}
- private fun TestScope.updateBouncerScene(
+ private fun TestScope.updateBouncer(
isActive: Boolean,
fpsDetectionRunning: Boolean,
isUnlockingWithFpAllowed: Boolean,
) {
- kosmos.sceneInteractor.changeScene(
- if (isActive) Scenes.Bouncer else Scenes.Lockscreen,
- "reason",
- )
+ if (isActive) {
+ kosmos.sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
+ } else {
+ kosmos.sceneInteractor.hideOverlay(Overlays.Bouncer, "reason")
+ }
whenever(keyguardUpdateMonitor.isFingerprintDetectionRunning)
.thenReturn(fpsDetectionRunning)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt
index c63f6f6..0a5f079 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt
@@ -38,10 +38,12 @@
import com.android.systemui.kosmos.collectLastValue
import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
+import com.android.systemui.scene.data.repository.HideOverlay
import com.android.systemui.scene.data.repository.Idle
import com.android.systemui.scene.data.repository.Transition
import com.android.systemui.scene.data.repository.setSceneTransition
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
@@ -221,7 +223,7 @@
@Test
fun doNotResetDismissActionOnUnlockedShade() =
testScope.runTest {
- kosmos.setSceneTransition(Idle(Scenes.Bouncer))
+ kosmos.setSceneTransition(Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer)))
kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
AuthenticationMethodModel.None
)
@@ -238,7 +240,12 @@
assertThat(wasOnCancelInvoked).isFalse()
kosmos.setSceneTransition(
- Transition(from = Scenes.Bouncer, to = Scenes.Shade, progress = flowOf(1f))
+ HideOverlay(
+ overlay = Overlays.Bouncer,
+ toScene = Scenes.Shade,
+ currentOverlays = flowOf(emptySet()),
+ progress = flowOf(1f),
+ )
)
runCurrent()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt
index 6d53e6c..3fe30b7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt
@@ -24,9 +24,11 @@
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
+import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardSurfaceBehindModel
+import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.keyguard.util.mockTopActivityClassName
@@ -34,6 +36,7 @@
import com.android.systemui.scene.data.repository.Idle
import com.android.systemui.scene.data.repository.Transition
import com.android.systemui.scene.data.repository.setSceneTransition
+import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shared.system.ActivityManagerWrapper
import com.android.systemui.shared.system.activityManagerWrapper
@@ -84,7 +87,7 @@
assertThat(values)
.containsExactly(
// We're initialized in LOCKSCREEN.
- KeyguardSurfaceBehindModel(alpha = 0f),
+ KeyguardSurfaceBehindModel(alpha = 0f)
)
transitionRepository.sendTransitionStep(
@@ -105,7 +108,7 @@
it.alpha == 1f &&
it.animateFromTranslationY != 0f &&
it.translationY == 0f
- }
+ },
)
transitionRepository.sendTransitionStep(
@@ -125,7 +128,7 @@
it.alpha == 1f &&
it.animateFromTranslationY != 0f &&
it.translationY == 0f
- }
+ },
)
transitionRepository.sendTransitionStep(
@@ -146,7 +149,7 @@
it.translationY == 0f
},
// Once the current state is GONE, we should default to alpha = 1f.
- { it == KeyguardSurfaceBehindModel(alpha = 1f) }
+ { it == KeyguardSurfaceBehindModel(alpha = 1f) },
)
}
@@ -161,7 +164,7 @@
assertThat(values)
.containsExactly(
// We're initialized in LOCKSCREEN.
- KeyguardSurfaceBehindModel(alpha = 0f),
+ KeyguardSurfaceBehindModel(alpha = 0f)
)
.inOrder()
@@ -242,8 +245,7 @@
values.assertValuesMatch(
// We should be at alpha = 0f during the animation.
- { it == KeyguardSurfaceBehindModel(alpha = 0f) },
- )
+ { it == KeyguardSurfaceBehindModel(alpha = 0f) })
}
@Test
@@ -251,14 +253,19 @@
fun testSurfaceBehindModel_toAppSurface_scene_container() =
testScope.runTest {
val values by collectValues(underTest.viewParams)
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "")
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
runCurrent()
assertThat(values)
.containsExactly(
// We're initialized in LOCKSCREEN.
- KeyguardSurfaceBehindModel(alpha = 0f),
+ KeyguardSurfaceBehindModel(alpha = 0f)
)
+ kosmos.sceneInteractor.changeScene(Scenes.Gone, "")
kosmos.setSceneTransition(Transition(Scenes.Lockscreen, Scenes.Gone))
values.assertValuesMatch(
@@ -270,7 +277,7 @@
it.alpha == 1f &&
it.animateFromTranslationY != 0f &&
it.translationY == 0f
- }
+ },
)
kosmos.setSceneTransition(Idle(Scenes.Gone))
@@ -284,7 +291,7 @@
it.translationY == 0f
},
// Once the current state is GONE, we should default to alpha = 1f.
- { it == KeyguardSurfaceBehindModel(alpha = 1f) }
+ { it == KeyguardSurfaceBehindModel(alpha = 1f) },
)
}
@@ -294,15 +301,20 @@
testScope.runTest {
val values by collectValues(underTest.viewParams)
activityManagerWrapper.mockTopActivityClassName(LAUNCHER_ACTIVITY_NAME)
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "")
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
runCurrent()
assertThat(values)
.containsExactly(
// We're initialized in LOCKSCREEN.
- KeyguardSurfaceBehindModel(alpha = 0f),
+ KeyguardSurfaceBehindModel(alpha = 0f)
)
.inOrder()
+ kosmos.sceneInteractor.changeScene(Scenes.Gone, "")
kosmos.setSceneTransition(Transition(Scenes.Lockscreen, Scenes.Gone))
assertThat(values)
@@ -340,8 +352,7 @@
values.assertValuesMatch(
// We should be at alpha = 0f during the animation.
- { it == KeyguardSurfaceBehindModel(alpha = 0f) },
- )
+ { it == KeyguardSurfaceBehindModel(alpha = 0f) })
}
@Test
@@ -435,6 +446,13 @@
testScope.runTest {
val isAnimatingSurface by collectLastValue(underTest.isAnimatingSurface)
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "")
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+ runCurrent()
+
+ kosmos.sceneInteractor.changeScene(Scenes.Gone, "")
kosmos.setSceneTransition(Idle(Scenes.Gone))
kosmos.notificationLaunchAnimationInteractor.setIsLaunchAnimationRunning(true)
runCurrent()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
index 0b42898..2d1c905 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
@@ -24,6 +24,7 @@
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
+import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.Edge
import com.android.systemui.keyguard.shared.model.KeyguardState
@@ -34,15 +35,20 @@
import com.android.systemui.keyguard.shared.model.KeyguardState.OFF
import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
import com.android.systemui.keyguard.shared.model.KeyguardState.UNDEFINED
+import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
import com.android.systemui.keyguard.shared.model.TransitionState.CANCELED
import com.android.systemui.keyguard.shared.model.TransitionState.FINISHED
import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING
import com.android.systemui.keyguard.shared.model.TransitionState.STARTED
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
+import com.android.systemui.scene.data.repository.HideOverlay
import com.android.systemui.scene.data.repository.Idle
+import com.android.systemui.scene.data.repository.ShowOverlay
import com.android.systemui.scene.data.repository.Transition
import com.android.systemui.scene.data.repository.setSceneTransition
+import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
@@ -295,11 +301,13 @@
inTransition,
)
- kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Bouncer))
+ kosmos.setSceneTransition(
+ ShowOverlay(overlay = Overlays.Bouncer, fromScene = Scenes.Gone)
+ )
assertEquals(listOf(false, true, false, true), inTransition)
- kosmos.setSceneTransition(Idle(Scenes.Bouncer))
+ kosmos.setSceneTransition(Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer)))
assertEquals(listOf(false, true, false, true, false), inTransition)
}
@@ -713,6 +721,11 @@
TransitionStep(AOD, DOZING, 1f, FINISHED),
)
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "reason")
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+
assertThat(results)
.isEqualTo(
listOf(
@@ -724,6 +737,7 @@
assertThat(results).isEqualTo(listOf(false))
+ kosmos.sceneInteractor.changeScene(Scenes.Gone, "reason")
kosmos.setSceneTransition(Idle(Scenes.Gone))
assertThat(results).isEqualTo(listOf(false, true))
@@ -732,6 +746,7 @@
assertThat(results).isEqualTo(listOf(false, true))
+ kosmos.sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
kosmos.setSceneTransition(Idle(Scenes.Lockscreen))
assertThat(results).isEqualTo(listOf(false, true, false))
@@ -740,6 +755,7 @@
assertThat(results).isEqualTo(listOf(false, true, false))
+ kosmos.sceneInteractor.changeScene(Scenes.Gone, "reason")
kosmos.setSceneTransition(Idle(Scenes.Gone))
assertThat(results).isEqualTo(listOf(false, true, false, true))
@@ -1042,13 +1058,23 @@
progress.emit(0.6f)
runCurrent()
- kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Bouncer, progress = progress))
+ kosmos.setSceneTransition(
+ ShowOverlay(
+ overlay = Overlays.Bouncer,
+ fromScene = Scenes.Gone,
+ progress = progress,
+ )
+ )
progress.emit(0.1f)
runCurrent()
kosmos.setSceneTransition(
- Transition(Scenes.Bouncer, Scenes.Lockscreen, progress = progress)
+ HideOverlay(
+ overlay = Overlays.Bouncer,
+ toScene = Scenes.Lockscreen,
+ progress = progress,
+ )
)
progress.emit(0.3f)
@@ -1087,12 +1113,20 @@
kosmos.setSceneTransition(Idle(Scenes.Gone))
- kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Bouncer, progress = progress))
+ kosmos.setSceneTransition(
+ ShowOverlay(
+ overlay = Overlays.Bouncer,
+ fromScene = Scenes.Gone,
+ progress = progress,
+ )
+ )
progress.emit(0.1f)
runCurrent()
- kosmos.setSceneTransition(Transition(Scenes.Bouncer, Scenes.Gone, progress = progress))
+ kosmos.setSceneTransition(
+ HideOverlay(overlay = Overlays.Bouncer, toScene = Scenes.Gone, progress = progress)
+ )
progress.emit(0.3f)
runCurrent()
@@ -1125,7 +1159,13 @@
progress1.emit(0.1f)
runCurrent()
- kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Bouncer, progress = progress2))
+ kosmos.setSceneTransition(
+ ShowOverlay(
+ overlay = Overlays.Bouncer,
+ fromScene = Scenes.Gone,
+ progress = progress2,
+ )
+ )
progress2.emit(0.3f)
runCurrent()
@@ -1152,8 +1192,14 @@
val currentStatesMapped by
collectValues(underTest.transition(Edge.create(LOCKSCREEN, Scenes.Gone)))
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "reason")
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+
kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Lockscreen))
val sendStep1 = TransitionStep(UNDEFINED, LOCKSCREEN, 0f, STARTED)
+ kosmos.sceneInteractor.changeScene(Scenes.Gone, "reason")
kosmos.setSceneTransition(Idle(Scenes.Gone))
val sendStep2 = TransitionStep(UNDEFINED, LOCKSCREEN, 0.6f, CANCELED)
sendSteps(sendStep1, sendStep2)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractorTest.kt
index b7c162b..f0eedee 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractorTest.kt
@@ -37,11 +37,13 @@
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.data.model.asIterable
import com.android.systemui.scene.data.model.sceneStackOf
+import com.android.systemui.scene.data.repository.HideOverlay
import com.android.systemui.scene.data.repository.Idle
import com.android.systemui.scene.data.repository.Transition
import com.android.systemui.scene.data.repository.setSceneTransition
import com.android.systemui.scene.domain.interactor.sceneBackInteractor
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.mock
@@ -250,12 +252,14 @@
fun surfaceBehindVisibility_fromBouncerToGone_becomesTrue() =
testScope.runTest {
val isSurfaceBehindVisible by collectLastValue(underTest.value.surfaceBehindVisibility)
- val currentScene by collectLastValue(kosmos.sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(kosmos.sceneInteractor.currentOverlays)
// Before the transition, we start on Bouncer so the surface should start invisible.
- kosmos.setSceneTransition(ObservableTransitionState.Idle(Scenes.Bouncer))
- kosmos.sceneInteractor.changeScene(Scenes.Bouncer, "")
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ kosmos.setSceneTransition(
+ ObservableTransitionState.Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer))
+ )
+ kosmos.sceneInteractor.showOverlay(Overlays.Bouncer, "")
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(isSurfaceBehindVisible).isFalse()
// Unlocked with fingerprint.
@@ -267,44 +271,45 @@
// the
// threshold.
kosmos.setSceneTransition(
- ObservableTransitionState.Transition(
- fromScene = Scenes.Bouncer,
+ ObservableTransitionState.Transition.hideOverlay(
+ overlay = Overlays.Bouncer,
toScene = Scenes.Gone,
- isInitiatedByUserInput = false,
- isUserInputOngoing = flowOf(false),
+ currentOverlays = flowOf(setOf(Overlays.Bouncer)),
progress =
flowOf(
FromPrimaryBouncerTransitionInteractor
.TO_GONE_SURFACE_BEHIND_VISIBLE_THRESHOLD
),
- currentScene = flowOf(Scenes.Bouncer),
+ isInitiatedByUserInput = false,
+ isUserInputOngoing = flowOf(false),
)
)
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(isSurfaceBehindVisible).isFalse()
// Once the transition passes the threshold, the surface should become visible.
kosmos.setSceneTransition(
- ObservableTransitionState.Transition(
- fromScene = Scenes.Bouncer,
+ ObservableTransitionState.Transition.hideOverlay(
+ overlay = Overlays.Bouncer,
toScene = Scenes.Gone,
- isInitiatedByUserInput = false,
- isUserInputOngoing = flowOf(false),
+ currentOverlays = flowOf(setOf(Overlays.Bouncer)),
progress =
flowOf(
FromPrimaryBouncerTransitionInteractor
.TO_GONE_SURFACE_BEHIND_VISIBLE_THRESHOLD + 0.01f
),
- currentScene = flowOf(Scenes.Gone),
+ isInitiatedByUserInput = false,
+ isUserInputOngoing = flowOf(false),
)
)
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(isSurfaceBehindVisible).isTrue()
// After the transition, settles on Gone. Surface behind should stay visible now.
kosmos.setSceneTransition(ObservableTransitionState.Idle(Scenes.Gone))
kosmos.sceneInteractor.changeScene(Scenes.Gone, "")
- assertThat(currentScene).isEqualTo(Scenes.Gone)
+ kosmos.sceneInteractor.hideOverlay(Overlays.Bouncer, "")
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
assertThat(isSurfaceBehindVisible).isTrue()
}
@@ -1012,6 +1017,7 @@
kosmos.setSceneTransition(Idle(Scenes.Lockscreen))
val currentScene by collectLastValue(kosmos.sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(kosmos.sceneInteractor.currentOverlays)
assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
val lockscreenVisibility by collectLastValue(underTest.value.lockscreenVisibility)
@@ -1038,12 +1044,16 @@
assertThat(currentScene).isEqualTo(Scenes.Shade)
assertThat(lockscreenVisibility).isTrue()
- kosmos.setSceneTransition(Idle(Scenes.Bouncer))
- kosmos.sceneInteractor.changeScene(Scenes.Bouncer, "")
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ kosmos.setSceneTransition(Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer)))
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "")
+ kosmos.sceneInteractor.showOverlay(Overlays.Bouncer, "")
+ assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(lockscreenVisibility).isTrue()
- kosmos.setSceneTransition(Transition(from = Scenes.Bouncer, to = Scenes.Gone))
+ kosmos.setSceneTransition(
+ HideOverlay(overlay = Overlays.Bouncer, toScene = Scenes.Gone)
+ )
assertThat(lockscreenVisibility).isTrue()
kosmos.setSceneTransition(Idle(Scenes.Gone))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractorTest.kt
index 3cff0fc..41ec065 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractorTest.kt
@@ -1220,13 +1220,13 @@
progress.value = 0.4f
sceneTransitions.value =
- ObservableTransitionState.Transition(
- Scenes.Lockscreen,
- Scenes.Bouncer,
- flowOf(Scenes.Lockscreen),
- progress,
- false,
- flowOf(false),
+ ObservableTransitionState.Transition.showOverlay(
+ overlay = Overlays.Bouncer,
+ fromScene = Scenes.Lockscreen,
+ currentOverlays = flowOf(setOf(Overlays.Bouncer)),
+ progress = progress,
+ isInitiatedByUserInput = false,
+ isUserInputOngoing = flowOf(false),
)
assertTransition(
@@ -1342,7 +1342,7 @@
sceneTransitions.value =
ObservableTransitionState.Transition(
Scenes.Gone,
- Scenes.Bouncer,
+ Scenes.Dream,
flowOf(Scenes.Lockscreen),
progress,
false,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt
index a31728c..91cb1ff 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt
@@ -39,6 +39,7 @@
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.data.repository.sceneContainerRepository
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
@@ -125,14 +126,15 @@
kosmos.sceneContainerRepository.setTransitionState(transitionState)
transitionState.value =
- ObservableTransitionState.Transition(
+ ObservableTransitionState.Transition.showOverlay(
+ overlay = Overlays.Bouncer,
fromScene = Scenes.Lockscreen,
- toScene = Scenes.Bouncer,
- emptyFlow(),
- emptyFlow(),
- false,
- emptyFlow(),
+ currentOverlays = emptyFlow(),
+ progress = emptyFlow(),
+ isInitiatedByUserInput = false,
+ isUserInputOngoing = emptyFlow(),
)
+
runCurrent()
// fade out
repository.sendTransitionStep(step(0f, TransitionState.STARTED))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt
index f357d0c..f98ddd2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt
@@ -19,6 +19,7 @@
import android.platform.test.annotations.EnableFlags
import android.testing.TestableLooper.RunWithLooper
import androidx.test.filters.SmallTest
+import com.android.compose.animation.scene.ContentKey
import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.Swipe
@@ -135,11 +136,11 @@
private fun expectedUpDestination(
canSwipeToEnter: Boolean,
isShadeTouchable: Boolean,
- ): SceneKey? {
+ ): ContentKey? {
return when {
!isShadeTouchable -> null
canSwipeToEnter -> Scenes.Gone
- else -> Scenes.Bouncer
+ else -> Overlays.Bouncer
}
}
}
@@ -215,15 +216,17 @@
)
)
- val upScene by
- collectLastValue(
- (userActions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene?.let {
- scene ->
- kosmos.sceneInteractor.resolveSceneFamily(scene)
- } ?: flowOf(null)
- )
+ val upContent =
+ userActions?.get(Swipe.Up)?.let { result ->
+ when (result) {
+ is UserActionResult.ChangeScene -> result.toScene
+ is UserActionResult.ShowOverlay -> result.overlay
+ is UserActionResult.HideOverlay -> result.overlay
+ is UserActionResult.ReplaceByOverlay -> result.overlay
+ }
+ }
- assertThat(upScene)
+ assertThat(upContent)
.isEqualTo(
expectedUpDestination(
canSwipeToEnter = canSwipeToEnter,
@@ -292,15 +295,17 @@
}
}
- val upScene by
- collectLastValue(
- (userActions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene?.let {
- scene ->
- kosmos.sceneInteractor.resolveSceneFamily(scene)
- } ?: flowOf(null)
- )
+ val upContent =
+ userActions?.get(Swipe.Up)?.let { result ->
+ when (result) {
+ is UserActionResult.ChangeScene -> result.toScene
+ is UserActionResult.ShowOverlay -> result.overlay
+ is UserActionResult.HideOverlay -> result.overlay
+ is UserActionResult.ReplaceByOverlay -> result.overlay
+ }
+ }
- assertThat(upScene)
+ assertThat(upContent)
.isEqualTo(
expectedUpDestination(
canSwipeToEnter = canSwipeToEnter,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java
index f293614..2db2199 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java
@@ -268,6 +268,10 @@
assertThat(mViewHolder.mSeekBar.getContentDescription()).isNotNull();
assertThat(mViewHolder.mContainerLayout.isFocusable()).isFalse();
+ assertThat(mViewHolder.mContainerLayout.getImportantForAccessibility()).isEqualTo(
+ View.IMPORTANT_FOR_ACCESSIBILITY_NO);
+ assertThat(mViewHolder.mTextContent.getImportantForAccessibility()).isEqualTo(
+ View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
}
@Test
@@ -511,6 +515,11 @@
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mContainerLayout.isFocusable()).isTrue();
+ assertThat(mViewHolder.mContainerLayout.getImportantForAccessibility()).isEqualTo(
+ View.IMPORTANT_FOR_ACCESSIBILITY_YES);
+ assertThat(mViewHolder.mTextContent.getImportantForAccessibility()).isEqualTo(
+ View.IMPORTANT_FOR_ACCESSIBILITY_YES);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.VISIBLE);
@@ -750,7 +759,7 @@
.onCreateViewHolder(new LinearLayout(mContext), 0);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
- mViewHolder.mEndTouchArea.performClick();
+ mViewHolder.mCheckBox.performClick();
verify(mMediaSwitchingController).addDeviceToPlayMedia(mMediaDevice2);
}
@@ -894,7 +903,7 @@
.onCreateViewHolder(new LinearLayout(mContext), 0);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
- mViewHolder.mEndTouchArea.performClick();
+ mViewHolder.mCheckBox.performClick();
verify(mMediaSwitchingController).removeDeviceFromPlayMedia(mMediaDevice1);
}
@@ -1050,7 +1059,7 @@
new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
- mViewHolder.mEndTouchArea.performClick();
+ mViewHolder.mEndClickIcon.performClick();
mViewHolder = (MediaOutputAdapterLegacy.MediaDeviceViewHolderLegacy) mMediaOutputAdapter
.onCreateViewHolder(
new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
@@ -1073,7 +1082,7 @@
new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
- mViewHolder.mEndTouchArea.performClick();
+ mViewHolder.mEndClickIcon.performClick();
mViewHolder = (MediaOutputAdapterLegacy.MediaDeviceViewHolderLegacy) mMediaOutputAdapter
.onCreateViewHolder(
new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt
index b23cd5e..917f356 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt
@@ -103,20 +103,6 @@
}
@Test
- fun bouncerShown_hidesShade() =
- testScope.runTest {
- val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
- lockDevice()
- sceneInteractor.showOverlay(Overlays.NotificationsShade, "test")
- assertThat(currentOverlays).contains(Overlays.NotificationsShade)
-
- sceneInteractor.changeScene(Scenes.Bouncer, "test")
- runCurrent()
-
- assertThat(currentOverlays).doesNotContain(Overlays.NotificationsShade)
- }
-
- @Test
fun shadeNotTouchable_hidesShade() =
testScope.runTest {
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/CastTileTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/CastTileTest.java
index 31a627f..765c574 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/CastTileTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/CastTileTest.java
@@ -50,6 +50,8 @@
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.QsEventLogger;
import com.android.systemui.qs.logging.QSLogger;
+import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor;
+import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor;
import com.android.systemui.statusbar.connectivity.IconState;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.connectivity.SignalCallback;
@@ -107,6 +109,8 @@
private final FakeConnectivityRepository mConnectivityRepository =
new FakeConnectivityRepository();
private final FakeFeatureFlags mFeatureFlags = new FakeFeatureFlags();
+ private final ShadeDialogContextInteractor mShadeDialogContextInteractor =
+ new FakeShadeDialogContextInteractor(mContext);
private TestableLooper mTestableLooper;
private CastTile mCastTile;
@@ -535,7 +539,8 @@
mDialogTransitionAnimator,
mConnectivityRepository,
mJavaAdapter,
- mFeatureFlags
+ mFeatureFlags,
+ mShadeDialogContextInteractor
);
mCastTile.initialize();
@@ -578,7 +583,8 @@
mDialogTransitionAnimator,
mConnectivityRepository,
mJavaAdapter,
- mFeatureFlags
+ mFeatureFlags,
+ mShadeDialogContextInteractor
);
mCastTile.initialize();
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelTest.kt
index bf5f9f4..c69ebab 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelTest.kt
@@ -99,20 +99,6 @@
}
@Test
- fun bouncerShown_hidesShade() =
- testScope.runTest {
- val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
- lockDevice()
- sceneInteractor.showOverlay(Overlays.QuickSettingsShade, "test")
- assertThat(currentOverlays).contains(Overlays.QuickSettingsShade)
-
- sceneInteractor.changeScene(Scenes.Bouncer, "test")
- runCurrent()
-
- assertThat(currentOverlays).doesNotContain(Overlays.QuickSettingsShade)
- }
-
- @Test
fun shadeNotTouchable_hidesShade() =
testScope.runTest {
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
index c5fac08..eb630b4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
@@ -22,6 +22,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.OverlayKey
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.Swipe
import com.android.compose.animation.scene.UserActionResult
@@ -34,7 +35,7 @@
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
import com.android.systemui.bouncer.ui.viewmodel.PasswordBouncerViewModel
import com.android.systemui.bouncer.ui.viewmodel.PinBouncerViewModel
-import com.android.systemui.bouncer.ui.viewmodel.bouncerSceneContentViewModel
+import com.android.systemui.bouncer.ui.viewmodel.bouncerOverlayContentViewModel
import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.flags.EnableSceneContainer
@@ -54,6 +55,7 @@
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.domain.startable.sceneContainerStartable
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.fakeSceneDataSource
import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
@@ -87,7 +89,7 @@
* Therefore, when adding or modifying test cases, consider whether what you're testing is better
* covered by a more granular unit test.
* * Please reuse the helper methods in this class (for example, [putDeviceToSleep] or
- * [emulateUserDrivenTransition]).
+ * [emulateUserDrivenSceneTransition]).
* * All tests start with the device locked and with a PIN auth method. The class offers useful
* methods like [setAuthMethod], [unlockDevice], [lockDevice], etc. to help you set up a starting
* state that makes more sense for your test case.
@@ -101,7 +103,7 @@
@EnableSceneContainer
class SceneFrameworkIntegrationTest : SysuiTestCase() {
private val kosmos = testKosmos()
- private var bouncerSceneJob: Job? = null
+ private var bouncerOverlayJob: Job? = null
@Before
fun setUp() =
@@ -125,7 +127,7 @@
lockscreenUserActionsViewModel.activateIn(testScope)
shadeSceneContentViewModel.activateIn(testScope)
shadeUserActionsViewModel.activateIn(testScope)
- bouncerSceneContentViewModel.activateIn(testScope)
+ bouncerOverlayContentViewModel.activateIn(testScope)
sceneContainerViewModel.activateIn(testScope)
assertWithMessage("Initial scene key mismatch!")
@@ -141,27 +143,29 @@
@Test
fun clickLockButtonAndEnterCorrectPin_unlocksDevice() =
kosmos.runTest {
- emulateUserDrivenTransition(Scenes.Bouncer)
+ emulateUserDrivenOverlayTransition(show = Overlays.Bouncer)
fakeSceneDataSource.pause()
enterPin()
emulatePendingTransitionProgress(expectedVisible = false)
assertCurrentScene(Scenes.Gone)
+ assertOverlaysEmpty()
}
@Test
fun swipeUpOnLockscreen_enterCorrectPin_unlocksDevice() =
kosmos.runTest {
val actions by collectLastValue(kosmos.lockscreenUserActionsViewModel.actions)
- val upDestinationSceneKey =
- (actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene
- assertThat(upDestinationSceneKey).isEqualTo(Scenes.Bouncer)
- emulateUserDrivenTransition(to = upDestinationSceneKey)
+ val upDestinationOverlayKey =
+ (actions?.get(Swipe.Up) as? UserActionResult.ShowOverlay)?.overlay
+ assertThat(upDestinationOverlayKey).isEqualTo(Overlays.Bouncer)
+ emulateUserDrivenOverlayTransition(show = upDestinationOverlayKey)
fakeSceneDataSource.pause()
enterPin()
emulatePendingTransitionProgress(expectedVisible = false)
assertCurrentScene(Scenes.Gone)
+ assertOverlaysEmpty()
}
@Test
@@ -173,7 +177,7 @@
val upDestinationSceneKey =
(actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene
assertThat(upDestinationSceneKey).isEqualTo(Scenes.Gone)
- emulateUserDrivenTransition(to = upDestinationSceneKey)
+ emulateUserDrivenSceneTransition(to = upDestinationSceneKey)
}
@Test
@@ -184,13 +188,13 @@
assertCurrentScene(Scenes.Lockscreen)
// Emulate a user swipe to the shade scene.
- emulateUserDrivenTransition(to = Scenes.Shade)
+ emulateUserDrivenSceneTransition(to = Scenes.Shade)
assertCurrentScene(Scenes.Shade)
val upDestinationSceneKey =
(actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene
assertThat(upDestinationSceneKey).isEqualTo(Scenes.Lockscreen)
- emulateUserDrivenTransition(to = Scenes.Lockscreen)
+ emulateUserDrivenSceneTransition(to = Scenes.Lockscreen)
}
@Test
@@ -205,17 +209,17 @@
assertCurrentScene(Scenes.Lockscreen)
// Emulate a user swipe to dismiss the lockscreen.
- emulateUserDrivenTransition(to = Scenes.Gone)
+ emulateUserDrivenSceneTransition(to = Scenes.Gone)
assertCurrentScene(Scenes.Gone)
// Emulate a user swipe to the shade scene.
- emulateUserDrivenTransition(to = Scenes.Shade)
+ emulateUserDrivenSceneTransition(to = Scenes.Shade)
assertCurrentScene(Scenes.Shade)
val upDestinationSceneKey =
(actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene
assertThat(upDestinationSceneKey).isEqualTo(Scenes.Gone)
- emulateUserDrivenTransition(to = Scenes.Gone)
+ emulateUserDrivenSceneTransition(to = Scenes.Gone)
}
@Test
@@ -270,6 +274,8 @@
wakeUpDevice()
assertCurrentScene(Scenes.Lockscreen)
+ // set UI state to match view-model
+ transitionState.value = ObservableTransitionState.Idle(Scenes.Lockscreen)
unlockDevice()
assertCurrentScene(Scenes.Gone)
}
@@ -302,10 +308,10 @@
kosmos.runTest {
setAuthMethod(AuthenticationMethodModel.Password)
val actions by collectLastValue(lockscreenUserActionsViewModel.actions)
- val upDestinationSceneKey =
- (actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene
- assertThat(upDestinationSceneKey).isEqualTo(Scenes.Bouncer)
- emulateUserDrivenTransition(to = upDestinationSceneKey)
+ val upDestinationOverlayKey =
+ (actions?.get(Swipe.Up) as? UserActionResult.ShowOverlay)?.overlay
+ assertThat(upDestinationOverlayKey).isEqualTo(Overlays.Bouncer)
+ emulateUserDrivenOverlayTransition(show = upDestinationOverlayKey)
fakeSceneDataSource.pause()
dismissIme()
@@ -319,16 +325,16 @@
kosmos.runTest {
setAuthMethod(AuthenticationMethodModel.Password)
val actions by collectLastValue(lockscreenUserActionsViewModel.actions)
- val upDestinationSceneKey =
- (actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene
- assertThat(upDestinationSceneKey).isEqualTo(Scenes.Bouncer)
- emulateUserDrivenTransition(to = upDestinationSceneKey)
+ val upDestinationOverlayKey =
+ (actions?.get(Swipe.Up) as? UserActionResult.ShowOverlay)?.overlay
+ assertThat(upDestinationOverlayKey).isEqualTo(Overlays.Bouncer)
+ emulateUserDrivenOverlayTransition(show = upDestinationOverlayKey)
- val bouncerActionButton by collectLastValue(bouncerSceneContentViewModel.actionButton)
+ val bouncerActionButton by collectLastValue(bouncerOverlayContentViewModel.actionButton)
assertWithMessage("Bouncer action button not visible")
.that(bouncerActionButton)
.isNotNull()
- kosmos.bouncerSceneContentViewModel.onActionButtonClicked(bouncerActionButton!!)
+ kosmos.bouncerOverlayContentViewModel.onActionButtonClicked(bouncerActionButton!!)
// TODO(b/369765704): Assert that an activity was started once we use ActivityStarter.
}
@@ -339,16 +345,16 @@
setAuthMethod(AuthenticationMethodModel.Password)
startPhoneCall()
val actions by collectLastValue(lockscreenUserActionsViewModel.actions)
- val upDestinationSceneKey =
- (actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene
- assertThat(upDestinationSceneKey).isEqualTo(Scenes.Bouncer)
- emulateUserDrivenTransition(to = upDestinationSceneKey)
+ val upDestinationOverlayKey =
+ (actions?.get(Swipe.Up) as? UserActionResult.ShowOverlay)?.overlay
+ assertThat(upDestinationOverlayKey).isEqualTo(Overlays.Bouncer)
+ emulateUserDrivenOverlayTransition(show = upDestinationOverlayKey)
- val bouncerActionButton by collectLastValue(bouncerSceneContentViewModel.actionButton)
+ val bouncerActionButton by collectLastValue(bouncerOverlayContentViewModel.actionButton)
assertWithMessage("Bouncer action button not visible during call")
.that(bouncerActionButton)
.isNotNull()
- kosmos.bouncerSceneContentViewModel.onActionButtonClicked(bouncerActionButton!!)
+ kosmos.bouncerOverlayContentViewModel.onActionButtonClicked(bouncerActionButton!!)
verifyCurrent(mockTelecomManager).showInCallScreen(any())
}
@@ -358,7 +364,7 @@
kosmos.runTest {
setAuthMethod(AuthenticationMethodModel.None)
introduceLockedSim()
- assertCurrentScene(Scenes.Bouncer)
+ assertCurrentOverlay(Overlays.Bouncer)
}
@Test
@@ -366,7 +372,7 @@
kosmos.runTest {
fakeSceneDataSource.pause()
introduceLockedSim()
- emulatePendingTransitionProgress(expectedVisible = true)
+ emulatePendingTransitionProgress()
enterSimPin(
authMethodAfterSimUnlock = AuthenticationMethodModel.None,
enableLockscreen = false,
@@ -380,7 +386,7 @@
kosmos.runTest {
fakeSceneDataSource.pause()
introduceLockedSim()
- emulatePendingTransitionProgress(expectedVisible = true)
+ emulatePendingTransitionProgress()
enterSimPin(authMethodAfterSimUnlock = AuthenticationMethodModel.Pin)
assertCurrentScene(Scenes.Lockscreen)
}
@@ -396,6 +402,18 @@
.isEqualTo(expected)
}
+ private fun Kosmos.assertCurrentOverlay(expected: OverlayKey) {
+ assertWithMessage("Expected overlay missing!")
+ .that(currentValue(sceneInteractor.currentOverlays))
+ .contains(expected)
+ }
+
+ private fun Kosmos.assertOverlaysEmpty() {
+ assertWithMessage("Expected no overlays, but at least one was present")
+ .that(currentValue(sceneInteractor.currentOverlays))
+ .isEmpty()
+ }
+
/**
* Returns the [SceneKey] of the current scene as displayed in the UI.
*
@@ -439,9 +457,10 @@
}
/**
- * Emulates a gradual transition to the currently pending scene that's sitting in the
- * [fakeSceneDataSource]. This emits a series of progress updates to the [transitionState] and
- * finishes by committing the pending scene as the current scene.
+ * Emulates a gradual transition to the currently pending scene and overlay that are sitting in
+ * the [fakeSceneDataSource]. This emits a series of progress updates to the [transitionState]
+ * and finishes by committing the pending scene as the current scene, and the pending overlay as
+ * the current overlay
*
* In order to use this, the [fakeSceneDataSource] must be paused before this method is called.
*/
@@ -450,49 +469,96 @@
.that(fakeSceneDataSource.isPaused)
.isTrue()
- val to = fakeSceneDataSource.pendingScene ?: return
- val from = getCurrentSceneInUi()
+ val fromScene = getCurrentSceneInUi()
+ val toScene = fakeSceneDataSource.pendingScene ?: fromScene
- if (to == from) {
- return
+ val fromOverlays =
+ collectLastValue(currentValue(transitionState).currentOverlays()).invoke() ?: emptySet()
+ val toOverlays = fakeSceneDataSource.pendingOverlays ?: fromOverlays
+
+ val addedOverlays = toOverlays - fromOverlays
+ val removedOverlays = fromOverlays - toOverlays
+ check(
+ addedOverlays.size + removedOverlays.size < 2 &&
+ (addedOverlays.size <= 1 || removedOverlays.size <= 1)
+ ) {
+ "Detected multiple overlays being added/removed. Currently only testing single-overlay transitions."
}
- // Begin to transition.
- val progressFlow = MutableStateFlow(0f)
- transitionState.value =
- ObservableTransitionState.Transition(
- fromScene = getCurrentSceneInUi(),
- toScene = to,
- currentScene = flowOf(to),
- progress = progressFlow,
- isInitiatedByUserInput = false,
- isUserInputOngoing = flowOf(false),
- )
+ if (toScene != fromScene) {
+ // Begin scene transition.
+ val progressFlow = MutableStateFlow(0f)
+ transitionState.value =
+ ObservableTransitionState.Transition(
+ fromScene = getCurrentSceneInUi(),
+ toScene = toScene,
+ currentScene = flowOf(toScene),
+ progress = progressFlow,
+ isInitiatedByUserInput = false,
+ isUserInputOngoing = flowOf(false),
+ )
- // Report progress of transition.
- while (currentValue(progressFlow) < 1f) {
- progressFlow.value += 0.2f
+ // Report progress of transition.
+ while (currentValue(progressFlow) < 1f) {
+ progressFlow.value += 0.2f
+ }
+
+ // End the transition and report the change.
+ transitionState.value = ObservableTransitionState.Idle(toScene)
}
- // End the transition and report the change.
- transitionState.value = ObservableTransitionState.Idle(to)
+ if (addedOverlays.isNotEmpty() || removedOverlays.isNotEmpty()) {
+ // Begin overlay transition.
+ val progressFlow = MutableStateFlow(0f)
+ transitionState.value =
+ if (addedOverlays.size == 1) {
+ ObservableTransitionState.Transition.showOverlay(
+ overlay = addedOverlays.first(),
+ fromScene = toScene,
+ currentOverlays = flowOf(addedOverlays),
+ progress = progressFlow,
+ isInitiatedByUserInput = false,
+ isUserInputOngoing = flowOf(false),
+ )
+ } else {
+ ObservableTransitionState.Transition.hideOverlay(
+ overlay = removedOverlays.first(),
+ toScene = toScene,
+ currentOverlays = flowOf(removedOverlays),
+ progress = progressFlow,
+ isInitiatedByUserInput = false,
+ isUserInputOngoing = flowOf(false),
+ )
+ }
+
+ // Report progress of transition.
+ while (currentValue(progressFlow) < 1f) {
+ progressFlow.value += 0.2f
+ }
+
+ // End the transition and report the change, taking any scene transition into account.
+ transitionState.value = ObservableTransitionState.Idle(toScene, toOverlays)
+ }
fakeSceneDataSource.unpause(force = true)
- assertWithMessage("Visibility mismatch after scene transition from $from to $to!")
+ assertWithMessage(
+ "Visibility mismatch after transition from $fromScene to $toScene and $fromOverlays to $toOverlays!"
+ )
.that(currentValue { sceneContainerViewModel.isVisible })
.isEqualTo(expectedVisible)
- assertThat(currentValue(sceneContainerViewModel.currentScene)).isEqualTo(to)
+ assertThat(currentValue(sceneContainerViewModel.currentScene)).isEqualTo(toScene)
+ assertThat(currentValue(sceneInteractor.currentOverlays)).isEqualTo(toOverlays)
- bouncerSceneJob =
- if (to == Scenes.Bouncer) {
+ bouncerOverlayJob =
+ if (Overlays.Bouncer in addedOverlays) {
testScope.backgroundScope.launch {
- bouncerSceneContentViewModel.authMethodViewModel.collect {
+ bouncerOverlayContentViewModel.authMethodViewModel.collect {
// Do nothing. Need this to turn this otherwise cold flow, hot.
}
}
} else {
- bouncerSceneJob?.cancel()
+ bouncerOverlayJob?.cancel()
null
}
}
@@ -506,7 +572,7 @@
*
* @param to The scene to transition to.
*/
- private fun Kosmos.emulateUserDrivenTransition(to: SceneKey?) {
+ private fun Kosmos.emulateUserDrivenSceneTransition(to: SceneKey?) {
checkNotNull(to)
fakeSceneDataSource.pause()
@@ -515,6 +581,22 @@
emulatePendingTransitionProgress(expectedVisible = to != Scenes.Gone)
}
+ private fun Kosmos.emulateUserDrivenOverlayTransition(
+ show: OverlayKey? = null,
+ hide: OverlayKey? = null,
+ ) {
+ fakeSceneDataSource.pause()
+ if (show != null && hide != null) {
+ sceneInteractor.replaceOverlay(from = show, to = hide, "reason")
+ } else if (show != null) {
+ sceneInteractor.showOverlay(overlay = show, "reason")
+ } else if (hide != null) {
+ sceneInteractor.hideOverlay(overlay = hide, "reason")
+ }
+
+ emulatePendingTransitionProgress()
+ }
+
/**
* Locks the device.
*
@@ -548,7 +630,7 @@
.that(currentValue(deviceEntryInteractor.isUnlocked))
.isFalse()
- emulateUserDrivenTransition(Scenes.Bouncer)
+ emulateUserDrivenOverlayTransition(show = Overlays.Bouncer)
fakeSceneDataSource.pause()
enterPin()
@@ -558,17 +640,18 @@
/**
* Enters the correct PIN in the bouncer UI.
*
- * Asserts that the current scene is [Scenes.Bouncer] and that the current bouncer UI is a PIN
- * before proceeding.
+ * Asserts that [Overlays.Bouncer] is showing and that the current bouncer UI is a PIN before
+ * proceeding.
*
* Does not assert that the device is locked or unlocked.
*/
private fun Kosmos.enterPin() {
- assertWithMessage("Cannot enter PIN when not on the Bouncer scene!")
- .that(getCurrentSceneInUi())
- .isEqualTo(Scenes.Bouncer)
+ val currentOverlays by collectLastValue(currentValue(transitionState).currentOverlays())
+ assertWithMessage("Cannot enter PIN when Bouncer not showing!")
+ .that(currentOverlays)
+ .contains(Overlays.Bouncer)
val authMethodViewModel by
- collectLastValue(bouncerSceneContentViewModel.authMethodViewModel)
+ collectLastValue(bouncerOverlayContentViewModel.authMethodViewModel)
assertWithMessage("Cannot enter PIN when not using a PIN authentication method!")
.that(authMethodViewModel)
.isInstanceOf(PinBouncerViewModel::class.java)
@@ -583,8 +666,8 @@
/**
* Enters the correct PIN in the sim bouncer UI.
*
- * Asserts that the current scene is [Scenes.Bouncer] and that the current bouncer UI is a PIN
- * before proceeding.
+ * Asserts that [Overlays.Bouncer] is showing and that the current bouncer UI is a PIN before
+ * proceeding.
*
* Does not assert that the device is locked or unlocked.
*/
@@ -592,11 +675,12 @@
authMethodAfterSimUnlock: AuthenticationMethodModel = AuthenticationMethodModel.None,
enableLockscreen: Boolean = true,
) {
- assertWithMessage("Cannot enter PIN when not on the Bouncer scene!")
- .that(getCurrentSceneInUi())
- .isEqualTo(Scenes.Bouncer)
+ val currentOverlays by collectLastValue(currentValue(transitionState).currentOverlays())
+ assertWithMessage("Cannot enter PIN when Bouncer not showing!")
+ .that(currentOverlays)
+ .contains(Overlays.Bouncer)
val authMethodViewModel by
- collectLastValue(bouncerSceneContentViewModel.authMethodViewModel)
+ collectLastValue(bouncerOverlayContentViewModel.authMethodViewModel)
assertWithMessage("Cannot enter PIN when not using a PIN authentication method!")
.that(authMethodViewModel)
.isInstanceOf(PinBouncerViewModel::class.java)
@@ -643,7 +727,7 @@
/** Emulates the dismissal of the IME (soft keyboard). */
private fun Kosmos.dismissIme() {
- (currentValue(bouncerSceneContentViewModel.authMethodViewModel)
+ (currentValue(bouncerOverlayContentViewModel.authMethodViewModel)
as? PasswordBouncerViewModel)
?.let { it.onImeDismissed() }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneBackInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneBackInteractorTest.kt
index 9cc6c0f..0345853 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneBackInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneBackInteractorTest.kt
@@ -53,7 +53,7 @@
@Test
@EnableSceneContainer
- fun navigateToQs_thenBouncer_thenBack_whileLocked() =
+ fun navigateToQs_thenBack_whileLocked() =
testScope.runTest {
sceneContainerStartable.start()
@@ -61,8 +61,6 @@
RouteNode(Scenes.Lockscreen, null),
RouteNode(Scenes.Shade, Scenes.Lockscreen),
RouteNode(Scenes.QuickSettings, Scenes.Shade),
- RouteNode(Scenes.Bouncer, Scenes.QuickSettings),
- RouteNode(Scenes.QuickSettings, Scenes.Shade),
RouteNode(Scenes.Shade, Scenes.Lockscreen),
RouteNode(Scenes.Lockscreen, null),
)
@@ -70,57 +68,39 @@
@Test
@EnableSceneContainer
- fun navigateToQs_thenBouncer_thenUnlock() =
+ fun navigateToQs_thenUnlock() =
testScope.runTest {
sceneContainerStartable.start()
assertRoute(
RouteNode(Scenes.Lockscreen, null),
RouteNode(Scenes.Shade, Scenes.Lockscreen),
- RouteNode(Scenes.QuickSettings, Scenes.Shade),
- RouteNode(Scenes.Bouncer, Scenes.QuickSettings, unlockDevice = true),
+ RouteNode(Scenes.QuickSettings, Scenes.Shade, unlockDevice = true),
RouteNode(Scenes.Gone, null),
)
}
@Test
@EnableSceneContainer
- fun navigateToQs_skippingShade_thenBouncer_thenBack_whileLocked() =
+ fun navigateToQs_skippingShade_thenBack_whileLocked() =
testScope.runTest {
sceneContainerStartable.start()
assertRoute(
RouteNode(Scenes.Lockscreen, null),
RouteNode(Scenes.QuickSettings, Scenes.Lockscreen),
- RouteNode(Scenes.Bouncer, Scenes.QuickSettings),
- RouteNode(Scenes.QuickSettings, Scenes.Lockscreen),
RouteNode(Scenes.Lockscreen, null),
)
}
@Test
@EnableSceneContainer
- fun navigateToBouncer_thenBack_whileLocked() =
+ fun navigateToQs_skippingShade_thenBack_thenShade_whileLocked() =
testScope.runTest {
sceneContainerStartable.start()
assertRoute(
RouteNode(Scenes.Lockscreen, null),
- RouteNode(Scenes.Bouncer, Scenes.Lockscreen),
- RouteNode(Scenes.Lockscreen, null),
- )
- }
-
- @Test
- @EnableSceneContainer
- fun navigateToQs_skippingShade_thenBouncer_thenBack_thenShade_whileLocked() =
- testScope.runTest {
- sceneContainerStartable.start()
-
- assertRoute(
- RouteNode(Scenes.Lockscreen, null),
- RouteNode(Scenes.QuickSettings, Scenes.Lockscreen),
- RouteNode(Scenes.Bouncer, Scenes.QuickSettings),
RouteNode(Scenes.QuickSettings, Scenes.Lockscreen),
RouteNode(Scenes.Lockscreen, null),
RouteNode(Scenes.Shade, Scenes.Lockscreen),
@@ -178,9 +158,8 @@
testScope.runTest {
underTest.onSceneChange(from = Scenes.Lockscreen, to = Scenes.Shade)
underTest.onSceneChange(from = Scenes.Shade, to = Scenes.QuickSettings)
- underTest.onSceneChange(from = Scenes.QuickSettings, to = Scenes.Bouncer)
assertThat(underTest.backStack.value.asIterable().toList())
- .isEqualTo(listOf(Scenes.QuickSettings, Scenes.Shade, Scenes.Lockscreen))
+ .isEqualTo(listOf(Scenes.Shade, Scenes.Lockscreen))
underTest.updateBackStack { stack ->
// Reverse the stack, just to see if it can be done:
@@ -188,7 +167,7 @@
}
assertThat(underTest.backStack.value.asIterable().toList())
- .isEqualTo(listOf(Scenes.Lockscreen, Scenes.Shade, Scenes.QuickSettings))
+ .isEqualTo(listOf(Scenes.Lockscreen, Scenes.Shade))
}
private suspend fun TestScope.assertRoute(vararg route: RouteNode) {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
index 23a0f62..559e363 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
@@ -799,4 +799,88 @@
verify(processor, never()).onSceneAboutToChange(any(), any())
assertThat(fakeSceneDataSource.freezeAndAnimateToCurrentStateCallCount).isEqualTo(0)
}
+
+ @Test
+ fun topmostContent_sceneChange_noOverlays() =
+ kosmos.runTest {
+ val topmostContent by collectLastValue(underTest.topmostContent)
+
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+
+ underTest.snapToScene(Scenes.Lockscreen, "reason")
+
+ assertThat(topmostContent).isEqualTo(Scenes.Lockscreen)
+
+ underTest.changeScene(Scenes.Gone, "reason")
+
+ assertThat(topmostContent).isEqualTo(Scenes.Gone)
+ }
+
+ @Test
+ fun topmostContent_sceneChange_withOverlay() =
+ kosmos.runTest {
+ kosmos.enableDualShade()
+ runCurrent()
+
+ val topmostContent by collectLastValue(underTest.topmostContent)
+
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+
+ underTest.snapToScene(Scenes.Lockscreen, "reason")
+ underTest.showOverlay(Overlays.NotificationsShade, "reason")
+
+ assertThat(topmostContent).isEqualTo(Overlays.NotificationsShade)
+
+ underTest.changeScene(Scenes.Gone, "reason")
+
+ assertThat(topmostContent).isEqualTo(Overlays.NotificationsShade)
+ }
+
+ @Test
+ fun topmostContent_overlayChange_higherZOrder() =
+ kosmos.runTest {
+ kosmos.enableDualShade()
+ runCurrent()
+
+ val topmostContent by collectLastValue(underTest.topmostContent)
+
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+
+ underTest.snapToScene(Scenes.Lockscreen, "reason")
+ underTest.showOverlay(Overlays.NotificationsShade, "reason")
+
+ assertThat(topmostContent).isEqualTo(Overlays.NotificationsShade)
+
+ underTest.showOverlay(Overlays.QuickSettingsShade, "reason")
+
+ assertThat(topmostContent).isEqualTo(Overlays.QuickSettingsShade)
+ }
+
+ @Test
+ fun topmostContent_overlayChange_lowerZOrder() =
+ kosmos.runTest {
+ kosmos.enableDualShade()
+ runCurrent()
+
+ val topmostContent by collectLastValue(underTest.topmostContent)
+
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+
+ underTest.snapToScene(Scenes.Lockscreen, "reason")
+ underTest.showOverlay(Overlays.QuickSettingsShade, "reason")
+
+ assertThat(topmostContent).isEqualTo(Overlays.QuickSettingsShade)
+
+ underTest.showOverlay(Overlays.NotificationsShade, "reason")
+
+ assertThat(topmostContent).isEqualTo(Overlays.QuickSettingsShade)
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt
index ae77ac4..9adf24f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt
@@ -475,17 +475,18 @@
@Test
fun switchFromBouncerToGoneWhenDeviceUnlocked() =
testScope.runTest {
- val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
prepareState(
authenticationMethod = AuthenticationMethodModel.Pin,
isDeviceUnlocked = false,
- initialSceneKey = Scenes.Bouncer,
+ initialSceneKey = Scenes.Lockscreen,
+ initialOverlays = setOf(Overlays.Bouncer),
)
- assertThat(currentSceneKey).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
underTest.start()
updateFingerprintAuthStatus(isSuccess = true)
- assertThat(currentSceneKey).isEqualTo(Scenes.Gone)
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
}
@Test
@@ -548,6 +549,7 @@
fun switchFromBouncerToQuickSettingsWhenDeviceUnlocked_whenLeaveOpenShade() =
testScope.runTest {
val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val backStack by collectLastValue(sceneBackInteractor.backStack)
kosmos.sysuiStatusBarStateController.leaveOpen = true // leave shade open
@@ -566,14 +568,16 @@
runCurrent()
assertThat(currentSceneKey).isEqualTo(Scenes.QuickSettings)
- sceneInteractor.changeScene(Scenes.Bouncer, "switching to bouncer for test")
- transitionState.value = ObservableTransitionState.Idle(Scenes.Bouncer)
+ sceneInteractor.showOverlay(Overlays.Bouncer, "showing bouncer for test")
+ transitionState.value =
+ ObservableTransitionState.Idle(Scenes.QuickSettings, setOf(Overlays.Bouncer))
runCurrent()
- assertThat(currentSceneKey).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(backStack?.asIterable()?.last()).isEqualTo(Scenes.Lockscreen)
updateFingerprintAuthStatus(isSuccess = true)
assertThat(currentSceneKey).isEqualTo(Scenes.QuickSettings)
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
assertThat(backStack?.asIterable()?.last()).isEqualTo(Scenes.Gone)
}
@@ -581,6 +585,7 @@
fun switchFromBouncerToGoneWhenDeviceUnlocked_whenDoNotLeaveOpenShade() =
testScope.runTest {
val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
kosmos.sysuiStatusBarStateController.leaveOpen = false // don't leave shade open
val transitionState =
@@ -598,13 +603,15 @@
runCurrent()
assertThat(currentSceneKey).isEqualTo(Scenes.QuickSettings)
- sceneInteractor.changeScene(Scenes.Bouncer, "switching to bouncer for test")
- transitionState.value = ObservableTransitionState.Idle(Scenes.Bouncer)
+ sceneInteractor.showOverlay(Overlays.Bouncer, "showing bouncer for test")
+ transitionState.value =
+ ObservableTransitionState.Idle(Scenes.QuickSettings, setOf(Overlays.Bouncer))
runCurrent()
- assertThat(currentSceneKey).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
updateFingerprintAuthStatus(isSuccess = true)
assertThat(currentSceneKey).isEqualTo(Scenes.Gone)
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
}
@Test
@@ -664,14 +671,21 @@
fun switchToGoneWhenDeviceIsUnlockedAndUserIsOnBouncerWithBypassDisabled() =
testScope.runTest {
val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
- prepareState(isBypassEnabled = false, initialSceneKey = Scenes.Bouncer)
- assertThat(currentSceneKey).isEqualTo(Scenes.Bouncer)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+ prepareState(
+ isBypassEnabled = false,
+ initialSceneKey = Scenes.Lockscreen,
+ initialOverlays = setOf(Overlays.Bouncer),
+ )
+ assertThat(currentSceneKey).isEqualTo(Scenes.Lockscreen)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
underTest.start()
// Authenticate using a passive auth method like face auth while bypass is disabled.
faceAuthRepository.isAuthenticated.value = true
assertThat(currentSceneKey).isEqualTo(Scenes.Gone)
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
}
@Test
@@ -1192,14 +1206,7 @@
runCurrent()
clearInvocations(sysUiState)
- listOf(
- Scenes.Gone,
- Scenes.Lockscreen,
- Scenes.Bouncer,
- Scenes.Gone,
- Scenes.Shade,
- Scenes.QuickSettings,
- )
+ listOf(Scenes.Gone, Scenes.Lockscreen, Scenes.Gone, Scenes.Shade, Scenes.QuickSettings)
.forEachIndexed { index, sceneKey ->
if (sceneKey == Scenes.Gone) {
updateFingerprintAuthStatus(isSuccess = true)
@@ -1385,19 +1392,13 @@
verify(falsingCollector, never()).onSuccessfulUnlock()
// Move around scenes without unlocking.
- listOf(
- Scenes.Shade,
- Scenes.QuickSettings,
- Scenes.Shade,
- Scenes.Lockscreen,
- Scenes.Bouncer,
- )
- .forEach { sceneKey ->
- sceneInteractor.changeScene(sceneKey, "reason")
- transitionStateFlow.value = ObservableTransitionState.Idle(sceneKey)
- runCurrent()
- verify(falsingCollector, never()).onSuccessfulUnlock()
- }
+ listOf(Scenes.Shade, Scenes.QuickSettings, Scenes.Shade, Scenes.Lockscreen).forEach {
+ sceneKey ->
+ sceneInteractor.changeScene(sceneKey, "reason")
+ transitionStateFlow.value = ObservableTransitionState.Idle(sceneKey)
+ runCurrent()
+ verify(falsingCollector, never()).onSuccessfulUnlock()
+ }
// Changing to the Gone scene should report a successful unlock.
kosmos.authenticationInteractor.authenticate(FakeAuthenticationRepository.DEFAULT_PIN)
@@ -1444,19 +1445,13 @@
verify(falsingCollector, times(1)).onSuccessfulUnlock()
// Move around scenes without unlocking.
- listOf(
- Scenes.Shade,
- Scenes.QuickSettings,
- Scenes.Shade,
- Scenes.Lockscreen,
- Scenes.Bouncer,
- )
- .forEach { sceneKey ->
- sceneInteractor.changeScene(sceneKey, "reason")
- transitionStateFlow.value = ObservableTransitionState.Idle(sceneKey)
- runCurrent()
- verify(falsingCollector, times(1)).onSuccessfulUnlock()
- }
+ listOf(Scenes.Shade, Scenes.QuickSettings, Scenes.Shade, Scenes.Lockscreen).forEach {
+ sceneKey ->
+ sceneInteractor.changeScene(sceneKey, "reason")
+ transitionStateFlow.value = ObservableTransitionState.Idle(sceneKey)
+ runCurrent()
+ verify(falsingCollector, times(1)).onSuccessfulUnlock()
+ }
kosmos.authenticationInteractor.authenticate(FakeAuthenticationRepository.DEFAULT_PIN)
runCurrent()
@@ -1565,13 +1560,13 @@
runCurrent()
verify(falsingCollector).onBouncerHidden()
- sceneInteractor.changeScene(Scenes.Bouncer, "reason")
+ sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
runCurrent()
verify(falsingCollector).onBouncerShown()
updateFingerprintAuthStatus(isSuccess = true)
runCurrent()
- sceneInteractor.changeScene(Scenes.Gone, "reason")
+ sceneInteractor.hideOverlay(Overlays.Bouncer, "reason")
runCurrent()
verify(falsingCollector, times(2)).onBouncerHidden()
}
@@ -1579,7 +1574,7 @@
@Test
fun switchesToBouncer_whenSimBecomesLocked() =
testScope.runTest {
- val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
prepareState(
initialSceneKey = Scenes.Lockscreen,
@@ -1592,17 +1587,18 @@
kosmos.fakeMobileConnectionsRepository.isAnySimSecure.value = true
runCurrent()
- assertThat(currentSceneKey).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
}
@Test
fun switchesToLockscreen_whenSimBecomesUnlocked() =
testScope.runTest {
kosmos.fakeMobileConnectionsRepository.isAnySimSecure.value = true
- val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
prepareState(
- initialSceneKey = Scenes.Bouncer,
+ initialSceneKey = Scenes.Lockscreen,
+ initialOverlays = setOf(Overlays.Bouncer),
authenticationMethod = AuthenticationMethodModel.Pin,
isDeviceUnlocked = false,
)
@@ -1611,7 +1607,7 @@
kosmos.fakeMobileConnectionsRepository.isAnySimSecure.value = false
runCurrent()
- assertThat(currentSceneKey).isEqualTo(Scenes.Lockscreen)
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
}
@Test
@@ -1700,7 +1696,7 @@
assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
verify(notificationShadeWindowController).setKeyguardShowing(true)
- emulateSceneTransition(transitionStateFlow, Scenes.Bouncer)
+ emulateOverlayTransition(transitionStateFlow, Overlays.Bouncer)
verify(notificationShadeWindowController, times(1)).setKeyguardShowing(true)
emulateSceneTransition(transitionStateFlow, Scenes.Lockscreen)
@@ -1748,9 +1744,9 @@
verify(centralSurfaces).setInteracting(StatusBarManager.WINDOW_STATUS_BAR, true)
clearInvocations(centralSurfaces)
- emulateSceneTransition(
+ emulateOverlayTransition(
transitionStateFlow = transitionStateFlow,
- toScene = Scenes.Bouncer,
+ toOverlay = Overlays.Bouncer,
verifyBeforeTransition = {
verify(centralSurfaces, never()).setInteracting(anyInt(), anyBoolean())
},
@@ -1839,9 +1835,9 @@
verify(centralSurfaces, never()).setInteracting(anyInt(), anyBoolean())
clearInvocations(centralSurfaces)
- emulateSceneTransition(
+ emulateOverlayTransition(
transitionStateFlow = transitionStateFlow,
- toScene = Scenes.Bouncer,
+ toOverlay = Overlays.Bouncer,
verifyBeforeTransition = {
verify(centralSurfaces, never()).setInteracting(anyInt(), anyBoolean())
},
@@ -1926,9 +1922,9 @@
assertThat(currentDesiredOverlays).isEmpty()
clearInvocations(centralSurfaces)
- emulateSceneTransition(
+ emulateOverlayTransition(
transitionStateFlow = transitionStateFlow,
- toScene = Scenes.Bouncer,
+ toOverlay = Overlays.Bouncer,
verifyBeforeTransition = {
verify(centralSurfaces, never()).setInteracting(anyInt(), anyBoolean())
},
@@ -2019,9 +2015,9 @@
assertThat(currentDesiredOverlays).isEmpty()
clearInvocations(centralSurfaces)
- emulateSceneTransition(
+ emulateOverlayTransition(
transitionStateFlow = transitionStateFlow,
- toScene = Scenes.Bouncer,
+ toOverlay = Overlays.Bouncer,
verifyBeforeTransition = {
verify(centralSurfaces, never()).setInteracting(anyInt(), anyBoolean())
},
@@ -2098,32 +2094,42 @@
fun respondToFalsingDetections() =
testScope.runTest {
val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val transitionStateFlow = prepareState()
underTest.start()
runCurrent()
- emulateSceneTransition(transitionStateFlow, toScene = Scenes.Bouncer)
- assertThat(currentScene).isNotEqualTo(Scenes.Lockscreen)
+ emulateOverlayTransition(
+ transitionStateFlow = transitionStateFlow,
+ toOverlay = Overlays.Bouncer,
+ )
+ assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
kosmos.falsingManager.sendFalsingBelief()
+ runCurrent()
assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
+ assertThat(currentOverlays).isEmpty()
}
@Test
fun handleBouncerOverscroll() =
testScope.runTest {
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val transitionStateFlow = prepareState()
underTest.start()
runCurrent()
- emulateSceneTransition(transitionStateFlow, toScene = Scenes.Bouncer)
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ emulateOverlayTransition(
+ transitionStateFlow = transitionStateFlow,
+ toOverlay = Overlays.Bouncer,
+ )
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
transitionStateFlow.value =
- ObservableTransitionState.Transition(
- fromScene = Scenes.Bouncer,
+ ObservableTransitionState.Transition.hideOverlay(
+ overlay = Overlays.Bouncer,
toScene = Scenes.Lockscreen,
- currentScene = flowOf(Scenes.Bouncer),
+ currentOverlays = flowOf(setOf(Overlays.Bouncer)),
progress = flowOf(-0.4f),
isInitiatedByUserInput = true,
isUserInputOngoing = flowOf(true),
@@ -2137,16 +2143,17 @@
fun switchToLockscreen_whenShadeBecomesNotTouchable() =
testScope.runTest {
val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val isShadeTouchable by collectLastValue(kosmos.shadeInteractor.isShadeTouchable)
val transitionStateFlow = prepareState()
underTest.start()
assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
// Flung to bouncer, 90% of the way there:
transitionStateFlow.value =
- ObservableTransitionState.Transition(
+ ObservableTransitionState.Transition.showOverlay(
+ overlay = Overlays.Bouncer,
fromScene = Scenes.Lockscreen,
- toScene = Scenes.Bouncer,
- currentScene = flowOf(Scenes.Bouncer),
+ currentOverlays = flowOf(setOf(Overlays.Bouncer)),
progress = flowOf(0.9f),
isInitiatedByUserInput = true,
isUserInputOngoing = flowOf(false),
@@ -2159,22 +2166,27 @@
assertThat(isShadeTouchable).isFalse()
assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
}
@Test
fun switchToGone_extendUnlock() =
testScope.runTest {
val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
prepareState(
- initialSceneKey = Scenes.Bouncer,
+ initialSceneKey = Scenes.Lockscreen,
+ initialOverlays = setOf(Overlays.Bouncer),
authenticationMethod = AuthenticationMethodModel.Pin,
)
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
underTest.start()
fakeTrustRepository.setCurrentUserTrusted(true)
assertThat(currentScene).isEqualTo(Scenes.Gone)
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
assertThat(uiEventLoggerFake[0].eventId)
.isEqualTo(BouncerUiEvent.BOUNCER_DISMISS_EXTENDED_ACCESS.id)
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
@@ -2285,12 +2297,15 @@
fun notifyKeyguardDismissCallbacks_whenUnlockingFromBouncer_onDismissSucceeded() =
testScope.runTest {
val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
prepareState(
authenticationMethod = AuthenticationMethodModel.Pin,
isDeviceUnlocked = false,
- initialSceneKey = Scenes.Bouncer,
+ initialSceneKey = Scenes.Lockscreen,
+ initialOverlays = setOf(Overlays.Bouncer),
)
- assertThat(currentSceneKey).isEqualTo(Scenes.Bouncer)
+ assertThat(currentSceneKey).isEqualTo(Scenes.Lockscreen)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
underTest.start()
// run all pending dismiss succeeded/cancelled calls from setup:
@@ -2311,7 +2326,7 @@
fun notifyKeyguardDismissCallbacks_whenLeavingBouncer_onDismissCancelled() =
testScope.runTest {
val isUnlocked by collectLastValue(kosmos.deviceEntryInteractor.isUnlocked)
- val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
prepareState()
underTest.start()
runCurrent()
@@ -2323,13 +2338,13 @@
kosmos.dismissCallbackRegistry.addCallback(dismissCallback)
// Switch to bouncer:
- sceneInteractor.changeScene(Scenes.Bouncer, "")
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ sceneInteractor.showOverlay(Overlays.Bouncer, "")
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
runCurrent()
// Return to lockscreen when isUnlocked=false:
- sceneInteractor.changeScene(Scenes.Lockscreen, "")
- assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
+ sceneInteractor.hideOverlay(Overlays.Bouncer, "")
+ assertThat(currentOverlays).doesNotContain(Overlays.Bouncer)
assertThat(isUnlocked).isFalse()
runCurrent()
kosmos.fakeExecutor.runAllReady()
@@ -2844,6 +2859,7 @@
isDeviceUnlocked: Boolean = false,
isBypassEnabled: Boolean = false,
initialSceneKey: SceneKey? = null,
+ initialOverlays: Set<OverlayKey> = emptySet(),
authenticationMethod: AuthenticationMethodModel? = null,
isLockscreenEnabled: Boolean = true,
startsAwake: Boolean = true,
@@ -2870,7 +2886,7 @@
runCurrent()
val transitionStateFlow =
MutableStateFlow<ObservableTransitionState>(
- ObservableTransitionState.Idle(Scenes.Lockscreen)
+ ObservableTransitionState.Idle(Scenes.Lockscreen, initialOverlays)
)
sceneInteractor.setTransitionState(transitionStateFlow)
initialSceneKey?.let {
@@ -2881,9 +2897,12 @@
runCurrent()
}
- transitionStateFlow.value = ObservableTransitionState.Idle(it)
+ transitionStateFlow.value = ObservableTransitionState.Idle(it, initialOverlays)
sceneInteractor.changeScene(it, "prepareState, initialSceneKey isn't null")
}
+ for (overlay in initialOverlays) {
+ sceneInteractor.showOverlay(overlay, "prepareState, initialOverlays isn't empty")
+ }
if (startsAwake) {
powerInteractor.setAwakeForTest()
} else {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt
index 572bc4d..46f4970 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt
@@ -18,6 +18,7 @@
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.OverlayKey
import com.android.compose.animation.scene.SceneKey
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
@@ -33,6 +34,7 @@
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.data.repository.setSceneTransition
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.brightness.domain.interactor.brightnessMirrorShowingInteractor
import com.android.systemui.statusbar.domain.interactor.keyguardOcclusionInteractor
@@ -90,34 +92,28 @@
TestSpec(
id = 2,
expectedState = ScrimState.BOUNCER,
- Preconditions(
- isOnKeyguard = true,
- isCurrentSceneBouncer = true,
- ),
+ Preconditions(isOnKeyguard = true, isIdleOnBouncer = true),
),
TestSpec(
id = 3,
expectedState = ScrimState.BOUNCER_SCRIMMED,
Preconditions(
isOnKeyguard = true,
- isCurrentSceneBouncer = true,
+ isIdleOnBouncer = true,
isBouncerScrimmingNeeded = true,
),
),
TestSpec(
id = 4,
expectedState = ScrimState.BRIGHTNESS_MIRROR,
- Preconditions(
- isOnKeyguard = true,
- isBrightnessMirrorVisible = true,
- ),
+ Preconditions(isOnKeyguard = true, isBrightnessMirrorVisible = true),
),
TestSpec(
id = 5,
expectedState = ScrimState.BRIGHTNESS_MIRROR,
Preconditions(
isOnKeyguard = true,
- isCurrentSceneBouncer = true,
+ isIdleOnBouncer = true,
isBiometricWakeAndUnlock = true,
isBrightnessMirrorVisible = true,
),
@@ -125,42 +121,27 @@
TestSpec(
id = 6,
expectedState = ScrimState.SHADE_LOCKED,
- Preconditions(
- isOnKeyguard = true,
- isCurrentSceneShade = true,
- ),
+ Preconditions(isOnKeyguard = true, isCurrentSceneShade = true),
),
TestSpec(
id = 7,
expectedState = ScrimState.PULSING,
- Preconditions(
- isOnKeyguard = true,
- isDozing = true,
- isPulsing = true,
- ),
+ Preconditions(isOnKeyguard = true, isDozing = true, isPulsing = true),
),
TestSpec(
id = 8,
expectedState = ScrimState.OFF,
- Preconditions(
- isOnKeyguard = true,
- hasPendingScreenOffCallback = true,
- ),
+ Preconditions(isOnKeyguard = true, hasPendingScreenOffCallback = true),
),
TestSpec(
id = 9,
expectedState = ScrimState.AOD,
- Preconditions(
- isOnKeyguard = true,
- isDozing = true,
- ),
+ Preconditions(isOnKeyguard = true, isDozing = true),
),
TestSpec(
id = 10,
expectedState = ScrimState.GLANCEABLE_HUB,
- Preconditions(
- isIdleOnCommunal = true,
- ),
+ Preconditions(isIdleOnCommunal = true),
),
TestSpec(
id = 11,
@@ -170,39 +151,23 @@
TestSpec(
id = 12,
expectedState = ScrimState.UNLOCKED,
- Preconditions(
- isDeviceEntered = true,
- ),
+ Preconditions(isDeviceEntered = true),
),
TestSpec(
id = 13,
expectedState = ScrimState.UNLOCKED,
- Preconditions(
- isOnKeyguard = true,
- isBiometricWakeAndUnlock = true,
- ),
+ Preconditions(isOnKeyguard = true, isBiometricWakeAndUnlock = true),
),
- TestSpec(
- id = 14,
- expectedState = ScrimState.KEYGUARD,
- Preconditions(),
- ),
+ TestSpec(id = 14, expectedState = ScrimState.KEYGUARD, Preconditions()),
TestSpec(
id = 15,
expectedState = ScrimState.DREAMING,
- Preconditions(
- isOnKeyguard = true,
- isOccluded = true,
- isDreaming = true,
- ),
+ Preconditions(isOnKeyguard = true, isOccluded = true, isDreaming = true),
),
TestSpec(
id = 16,
expectedState = ScrimState.UNLOCKED,
- Preconditions(
- isOnKeyguard = true,
- isOccluded = true,
- ),
+ Preconditions(isOnKeyguard = true, isOccluded = true),
),
)
}
@@ -253,9 +218,7 @@
}
/** Sets up the state to match what's specified in the given [preconditions]. */
- private fun TestScope.setUpWith(
- preconditions: Preconditions,
- ) {
+ private fun TestScope.setUpWith(preconditions: Preconditions) {
kosmos.fakeKeyguardBouncerRepository.setAlternateVisible(
preconditions.isAlternateBouncerVisible
)
@@ -272,17 +235,12 @@
when {
preconditions.isTransitioningToShade ->
- whenTransitioning(
- from = Scenes.Lockscreen,
- to = Scenes.Shade,
- )
+ whenTransitioning(from = Scenes.Lockscreen, to = Scenes.Shade)
preconditions.isTransitioningAwayFromKeyguard ->
- whenTransitioning(
- from = Scenes.Lockscreen,
- to = Scenes.Gone,
- )
+ whenTransitioning(from = Scenes.Lockscreen, to = Scenes.Gone)
preconditions.isCurrentSceneShade -> whenIdle(on = Scenes.Shade)
- preconditions.isCurrentSceneBouncer -> whenIdle(on = Scenes.Bouncer)
+ preconditions.isIdleOnBouncer ->
+ whenIdle(on = Scenes.Lockscreen, overlays = setOf(Overlays.Bouncer))
preconditions.isIdleOnCommunal -> whenIdle(on = Scenes.Communal)
}
@@ -323,9 +281,12 @@
}
/** Sets up an idle state on the given [on] scene. */
- private fun whenIdle(on: SceneKey) {
- kosmos.setSceneTransition(ObservableTransitionState.Idle(on))
+ private fun whenIdle(on: SceneKey, overlays: Set<OverlayKey> = emptySet()) {
+ kosmos.setSceneTransition(ObservableTransitionState.Idle(on, overlays))
kosmos.sceneInteractor.changeScene(on, "")
+ for (overlay in overlays) {
+ kosmos.sceneInteractor.showOverlay(overlay, "")
+ }
}
/** Sets up a transitioning state between the [given] and [to] scenes. */
@@ -351,7 +312,7 @@
/** Whether any non-shade nor QS scene is transitioning to a shade or QS scene. */
val isTransitioningToShade: Boolean = false,
val isOccluded: Boolean = false,
- val isCurrentSceneBouncer: Boolean = false,
+ val isIdleOnBouncer: Boolean = false,
val isBiometricWakeAndUnlock: Boolean = false,
/** Whether there's an active transition from lockscreen or bouncer to gone. */
val isTransitioningAwayFromKeyguard: Boolean = false,
@@ -388,7 +349,7 @@
assertWithMessage(
"isCurrentSceneBouncer cannot be true without isOnKeyguard also being true"
)
- .that(!isCurrentSceneBouncer || isOnKeyguard)
+ .that(!isIdleOnBouncer || isOnKeyguard)
.isTrue()
assertWithMessage(
@@ -400,13 +361,13 @@
assertWithMessage(
"isCurrentSceneBouncer cannot be true at the same time as isCurrentSceneShade"
)
- .that(!isCurrentSceneBouncer || !isCurrentSceneShade)
+ .that(!isIdleOnBouncer || !isCurrentSceneShade)
.isTrue()
assertWithMessage(
"isCurrentSceneBouncer cannot be true at the same time as isIdleOnCommunal"
)
- .that(!isCurrentSceneBouncer || !isIdleOnCommunal)
+ .that(!isIdleOnBouncer || !isIdleOnCommunal)
.isTrue()
assertWithMessage(
@@ -422,7 +383,7 @@
assertWithMessage(
"isDeviceEntered cannot be true at the same time as isCurrentSceneBouncer"
)
- .that(!isDeviceEntered || !isCurrentSceneBouncer)
+ .that(!isDeviceEntered || !isIdleOnBouncer)
.isTrue()
assertWithMessage(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/StatusBarStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/StatusBarStartableTest.kt
index 99146d8..eebbc84 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/StatusBarStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/StatusBarStartableTest.kt
@@ -21,6 +21,7 @@
import android.view.WindowManagerPolicyConstants
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.OverlayKey
import com.android.compose.animation.scene.SceneKey
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags
import com.android.internal.statusbar.statusBarService
@@ -40,6 +41,7 @@
import com.android.systemui.power.shared.model.WakefulnessState
import com.android.systemui.scene.data.repository.setSceneTransition
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.domain.interactor.keyguardOcclusionInteractor
import com.android.systemui.testKosmos
@@ -246,16 +248,14 @@
}
/** Sets up the state to match what's specified in the given [preconditions]. */
- private fun TestScope.setUpWith(
- preconditions: Preconditions,
- ) {
+ private fun TestScope.setUpWith(preconditions: Preconditions) {
if (!preconditions.isKeyguardShowing) {
kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
SuccessFingerprintAuthenticationStatus(0, true)
)
}
if (preconditions.isForceHideHomeAndRecents) {
- whenIdle(Scenes.Bouncer)
+ whenIdle(Scenes.Lockscreen, setOf(Overlays.Bouncer))
} else if (preconditions.isKeyguardShowing) {
whenIdle(Scenes.Lockscreen)
} else {
@@ -308,9 +308,12 @@
}
/** Sets up an idle state on the given [on] scene. */
- private fun whenIdle(on: SceneKey) {
- kosmos.setSceneTransition(ObservableTransitionState.Idle(on))
+ private fun whenIdle(on: SceneKey, overlays: Set<OverlayKey> = emptySet()) {
+ kosmos.setSceneTransition(ObservableTransitionState.Idle(on, overlays))
kosmos.sceneInteractor.changeScene(on, "")
+ for (overlay in overlays) {
+ kosmos.sceneInteractor.showOverlay(overlay, "")
+ }
}
data class Preconditions(
@@ -350,11 +353,7 @@
}
}
- data class TestSpec(
- val id: Int,
- val expectedFlags: Int,
- val preconditions: Preconditions,
- ) {
+ data class TestSpec(val id: Int, val expectedFlags: Int, val preconditions: Preconditions) {
override fun toString(): String {
return "id=$id, expected=$expectedFlags, preconditions=$preconditions"
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegatorTest.kt
index 2720c57..c9dab34 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegatorTest.kt
@@ -55,9 +55,9 @@
testScope.runTest {
val currentScene by collectLastValue(underTest.currentScene)
underTest.setDelegate(null)
- assertThat(currentScene).isNotEqualTo(Scenes.Bouncer)
+ assertThat(currentScene).isNotEqualTo(Scenes.Gone)
- underTest.changeScene(toScene = Scenes.Bouncer)
+ underTest.changeScene(toScene = Scenes.Gone)
assertThat(currentScene).isEqualTo(initialSceneKey)
}
@@ -73,11 +73,11 @@
fun currentScene_withDelegate_changesScenes() =
testScope.runTest {
val currentScene by collectLastValue(underTest.currentScene)
- assertThat(currentScene).isNotEqualTo(Scenes.Bouncer)
+ assertThat(currentScene).isNotEqualTo(Scenes.Gone)
- underTest.changeScene(toScene = Scenes.Bouncer)
+ underTest.changeScene(toScene = Scenes.Gone)
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentScene).isEqualTo(Scenes.Gone)
}
@Test
@@ -85,8 +85,8 @@
testScope.runTest {
val currentScene by collectLastValue(underTest.currentScene)
- fakeSceneDataSource.changeScene(toScene = Scenes.Bouncer)
+ fakeSceneDataSource.changeScene(toScene = Scenes.Gone)
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentScene).isEqualTo(Scenes.Gone)
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/view/SceneJankMonitorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/view/SceneJankMonitorTest.kt
index 984f8fd..9b00e21 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/view/SceneJankMonitorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/view/SceneJankMonitorTest.kt
@@ -31,6 +31,7 @@
import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
import com.android.systemui.lifecycle.activateIn
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
@@ -158,22 +159,22 @@
underTest.onTransitionStart(
view = mock(),
from = Scenes.Lockscreen,
- to = Scenes.Bouncer,
+ to = Overlays.Bouncer,
cuj = null,
)
verifyCujCounts(beginAppearCount = 1)
- underTest.onTransitionEnd(from = Scenes.Lockscreen, to = Scenes.Bouncer, cuj = null)
+ underTest.onTransitionEnd(from = Scenes.Lockscreen, to = Overlays.Bouncer, cuj = null)
verifyCujCounts(beginAppearCount = 1, endAppearCount = 1)
// Bouncer disappear CUJ but it doesn't log because the device isn't unlocked.
underTest.onTransitionStart(
view = mock(),
- from = Scenes.Bouncer,
+ from = Overlays.Bouncer,
to = Scenes.Lockscreen,
cuj = null,
)
verifyCujCounts(beginAppearCount = 1, endAppearCount = 1)
- underTest.onTransitionEnd(from = Scenes.Bouncer, to = Scenes.Lockscreen, cuj = null)
+ underTest.onTransitionEnd(from = Overlays.Bouncer, to = Scenes.Lockscreen, cuj = null)
verifyCujCounts(beginAppearCount = 1, endAppearCount = 1)
if (!testUnlockedDisappearance) {
@@ -190,12 +191,12 @@
// Bouncer disappear CUJ and it doeslog because the device is unlocked.
underTest.onTransitionStart(
view = mock(),
- from = Scenes.Bouncer,
+ from = Overlays.Bouncer,
to = Scenes.Gone,
cuj = null,
)
verifyCujCounts(beginAppearCount = 1, endAppearCount = 1, beginDisappearCount = 1)
- underTest.onTransitionEnd(from = Scenes.Bouncer, to = Scenes.Gone, cuj = null)
+ underTest.onTransitionEnd(from = Overlays.Bouncer, to = Scenes.Gone, cuj = null)
verifyCujCounts(
beginAppearCount = 1,
endAppearCount = 1,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModelTest.kt
index 7330b51..f04f0a3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModelTest.kt
@@ -164,7 +164,7 @@
kosmos.enableDualShade()
// GIVEN an invalid scene transition to play haptics
val invalidTransition =
- createTransitionState(from = Scenes.Bouncer, to = Overlays.NotificationsShade)
+ createTransitionState(from = Scenes.QuickSettings, to = Scenes.Gone)
// WHEN the transition occurs
sceneInteractor.setTransitionState(MutableStateFlow(invalidTransition))
@@ -199,7 +199,7 @@
kosmos.enableDualShade()
// GIVEN an invalid scene transition to play haptics
val invalidTransition =
- createTransitionState(from = Scenes.Bouncer, to = Overlays.NotificationsShade)
+ createTransitionState(from = Scenes.QuickSettings, to = Scenes.Gone)
// WHEN the transition occurs
sceneInteractor.setTransitionState(MutableStateFlow(invalidTransition))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PanelExpansionInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PanelExpansionInteractorImplTest.kt
index 1859e25..d7b8aff 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PanelExpansionInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PanelExpansionInteractorImplTest.kt
@@ -78,7 +78,7 @@
changeScene(Scenes.Lockscreen) { assertThat(panelExpansion).isEqualTo(1f) }
assertThat(panelExpansion).isEqualTo(1f)
- changeScene(Scenes.Bouncer) { assertThat(panelExpansion).isEqualTo(1f) }
+ showOverlay(Overlays.Bouncer) { assertThat(panelExpansion).isEqualTo(1f) }
assertThat(panelExpansion).isEqualTo(1f)
changeScene(Scenes.Shade) { assertThat(panelExpansion).isEqualTo(1f) }
@@ -133,7 +133,7 @@
changeScene(Scenes.Lockscreen) { assertThat(panelExpansion).isEqualTo(1f) }
assertThat(panelExpansion).isEqualTo(1f)
- changeScene(Scenes.Bouncer) { assertThat(panelExpansion).isEqualTo(1f) }
+ showOverlay(Overlays.Bouncer) { assertThat(panelExpansion).isEqualTo(1f) }
assertThat(panelExpansion).isEqualTo(1f)
showOverlay(Overlays.NotificationsShade) { assertThat(panelExpansion).isEqualTo(1f) }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModelTest.kt
index 2038adc..d5537a6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModelTest.kt
@@ -32,6 +32,7 @@
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
@@ -125,7 +126,7 @@
to = KeyguardState.DREAMING,
value = 1f,
transitionState = TransitionState.FINISHED,
- ),
+ )
)
assertThat(isKeyguardOccluded).isTrue()
@@ -154,7 +155,7 @@
to = KeyguardState.OCCLUDED,
value = 1f,
transitionState = TransitionState.FINISHED,
- ),
+ )
)
assertThat(isKeyguardOccluded).isTrue()
}
@@ -173,7 +174,8 @@
runCurrent()
assertThat(bouncerShowing).isFalse()
- transitionState.value = ObservableTransitionState.Idle(Scenes.Bouncer)
+ transitionState.value =
+ ObservableTransitionState.Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer))
runCurrent()
assertThat(bouncerShowing).isTrue()
}
@@ -204,7 +206,7 @@
val transitionState =
MutableStateFlow<ObservableTransitionState>(
- ObservableTransitionState.Idle(Scenes.Bouncer)
+ ObservableTransitionState.Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer))
)
kosmos.sceneInteractor.setTransitionState(transitionState)
runCurrent()
@@ -219,7 +221,8 @@
AuthenticationMethodModel.Password
)
// go back to bouncer
- transitionState.value = ObservableTransitionState.Idle(Scenes.Bouncer)
+ transitionState.value =
+ ObservableTransitionState.Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer))
runCurrent()
assertThat(bouncerRequiresIme).isTrue()
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
index 83361da..c10fd5e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
@@ -19,6 +19,7 @@
import android.os.IBinder
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
+import android.platform.test.annotations.RequiresFlagsDisabled
import android.testing.TestableLooper.RunWithLooper
import android.view.Choreographer
import android.view.View
@@ -34,7 +35,6 @@
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.res.R
import com.android.systemui.shade.ShadeExpansionChangeEvent
-import com.android.systemui.shared.Flags as SharedFlags
import com.android.systemui.statusbar.phone.BiometricUnlockController
import com.android.systemui.statusbar.phone.DozeParameters
import com.android.systemui.statusbar.phone.ScrimController
@@ -44,11 +44,10 @@
import com.android.systemui.testKosmos
import com.android.systemui.util.WallpaperController
import com.android.systemui.util.mockito.eq
+import com.android.systemui.wallpapers.domain.interactor.WallpaperInteractor
import com.android.systemui.window.domain.interactor.WindowRootViewBlurInteractor
import com.android.wm.shell.appzoomout.AppZoomOut
import com.google.common.truth.Truth.assertThat
-import java.util.Optional
-import java.util.function.Consumer
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -69,6 +68,8 @@
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.junit.MockitoJUnit
+import java.util.Optional
+import java.util.function.Consumer
@RunWith(AndroidJUnit4::class)
@RunWithLooper
@@ -76,6 +77,7 @@
class NotificationShadeDepthControllerTest : SysuiTestCase() {
private val kosmos = testKosmos()
+ private val applicationScope = kosmos.testScope.backgroundScope
@Mock private lateinit var windowRootViewBlurInteractor: WindowRootViewBlurInteractor
@Mock private lateinit var statusBarStateController: StatusBarStateController
@Mock private lateinit var blurUtils: BlurUtils
@@ -84,6 +86,7 @@
@Mock private lateinit var keyguardInteractor: KeyguardInteractor
@Mock private lateinit var choreographer: Choreographer
@Mock private lateinit var wallpaperController: WallpaperController
+ @Mock private lateinit var wallpaperInteractor: WallpaperInteractor
@Mock private lateinit var notificationShadeWindowController: NotificationShadeWindowController
@Mock private lateinit var dumpManager: DumpManager
@Mock private lateinit var appZoomOutOptional: Optional<AppZoomOut>
@@ -128,12 +131,14 @@
keyguardInteractor,
choreographer,
wallpaperController,
+ wallpaperInteractor,
notificationShadeWindowController,
dozeParameters,
context,
ResourcesSplitShadeStateController(),
windowRootViewBlurInteractor,
appZoomOutOptional,
+ applicationScope,
dumpManager,
configurationController,
)
@@ -310,22 +315,24 @@
}
@Test
- @DisableFlags(SharedFlags.FLAG_AMBIENT_AOD)
- fun onDozeAmountChanged_appliesBlur() {
- statusBarStateListener.onDozeAmountChanged(1f, 1f)
- notificationShadeDepthController.updateBlurCallback.doFrame(0)
- verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false))
- }
-
- @Test
- @EnableFlags(SharedFlags.FLAG_AMBIENT_AOD)
fun onDozeAmountChanged_doesNotApplyBlurWithAmbientAod() {
+ notificationShadeDepthController.wallpaperSupportsAmbientMode = false
+
statusBarStateListener.onDozeAmountChanged(1f, 1f)
notificationShadeDepthController.updateBlurCallback.doFrame(0)
verify(blurUtils).applyBlur(any(), eq(0), eq(false))
}
@Test
+ fun onDozeAmountChanged_appliesBlurWithAmbientAod() {
+ notificationShadeDepthController.wallpaperSupportsAmbientMode = true
+
+ statusBarStateListener.onDozeAmountChanged(1f, 1f)
+ notificationShadeDepthController.updateBlurCallback.doFrame(0)
+ verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false))
+ }
+
+ @Test
fun setFullShadeTransition_appliesBlur_onlyIfSupported() {
reset(blurUtils)
`when`(blurUtils.blurRadiusOfRatio(anyFloat())).then { answer ->
@@ -353,6 +360,7 @@
}
@Test
+ @RequiresFlagsDisabled(Flags.FLAG_NOTIFICATION_SHADE_BLUR)
fun updateBlurCallback_setsOpaque_whenScrim() {
scrimVisibilityCaptor.value.accept(ScrimController.OPAQUE)
notificationShadeDepthController.updateBlurCallback.doFrame(0)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
index 7a982a3..6a222c6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
@@ -253,6 +253,7 @@
underTest.addCallback(listener)
val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
val deviceUnlockStatus by
collectLastValue(kosmos.deviceUnlockedInteractor.deviceUnlockStatus)
@@ -269,9 +270,9 @@
// Call start to begin hydrating based on the scene framework:
underTest.start()
- sceneInteractor.changeScene(toScene = Scenes.Bouncer, loggingReason = "reason")
+ sceneInteractor.showOverlay(overlay = Overlays.Bouncer, loggingReason = "reason")
runCurrent()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(statusBarState).isEqualTo(StatusBarState.KEYGUARD)
sceneInteractor.changeScene(toScene = Scenes.Shade, loggingReason = "reason")
@@ -373,13 +374,12 @@
// Call start to begin hydrating based on the scene framework:
underTest.start()
- sceneInteractor.changeScene(Scenes.Bouncer, loggingReason = "reason")
+ sceneInteractor.showOverlay(Overlays.Bouncer, loggingReason = "reason")
runCurrent()
- assertThat(currentScene).isEqualTo(Scenes.Bouncer)
- assertThat(currentOverlays).isEmpty()
+ assertThat(currentOverlays).contains(Overlays.Bouncer)
assertThat(statusBarState).isEqualTo(StatusBarState.KEYGUARD)
- sceneInteractor.changeScene(Scenes.Lockscreen, loggingReason = "reason")
+ sceneInteractor.hideOverlay(Overlays.Bouncer, loggingReason = "reason")
runCurrent()
sceneInteractor.showOverlay(Overlays.NotificationsShade, loggingReason = "reason")
@@ -507,6 +507,11 @@
testScope.runTest {
underTest.start()
underTest.setLeaveOpenOnKeyguardHide(true)
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "")
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+ runCurrent()
keyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.AOD,
@@ -515,6 +520,7 @@
)
assertThat(underTest.leaveOpenOnKeyguardHide()).isEqualTo(true)
+ kosmos.sceneInteractor.changeScene(Scenes.Gone, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Gone),
stateTransition =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt
index 626dcd5..1b5b0d6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt
@@ -22,15 +22,18 @@
import android.graphics.Bitmap
import android.graphics.drawable.BitmapDrawable
import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
import android.view.View
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.Expandable
import com.android.systemui.common.shared.model.Icon
-import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
import com.android.systemui.mediaprojection.data.repository.fakeMediaProjectionRepository
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask
@@ -48,16 +51,13 @@
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
-import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository
-import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
-import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel
+import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.addOngoingCallState
+import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.removeOngoingCallState
import com.android.systemui.testKosmos
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
-import kotlinx.coroutines.test.runCurrent
-import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -74,13 +74,11 @@
@RunWith(AndroidJUnit4::class)
@DisableFlags(StatusBarNotifChips.FLAG_NAME)
class OngoingActivityChipsViewModelTest : SysuiTestCase() {
- private val kosmos = testKosmos()
- private val testScope = kosmos.testScope
+ private val kosmos = testKosmos().useUnconfinedTestDispatcher()
private val systemClock = kosmos.fakeSystemClock
private val screenRecordState = kosmos.screenRecordRepository.screenRecordState
private val mediaProjectionState = kosmos.fakeMediaProjectionRepository.mediaProjectionState
- private val callRepo = kosmos.ongoingCallRepository
private val mockSystemUIDialog = mock<SystemUIDialog>()
private val chipBackgroundView = mock<ChipBackgroundContainer>()
@@ -96,7 +94,7 @@
private val mockExpandable: Expandable =
mock<Expandable>().apply { whenever(dialogTransitionController(any())).thenReturn(mock()) }
- private val underTest = kosmos.ongoingActivityChipsViewModel
+ private val Kosmos.underTest by Kosmos.Fixture { ongoingActivityChipsViewModel }
@Before
fun setUp() {
@@ -111,10 +109,10 @@
@Test
fun primaryChip_allHidden_hidden() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.DoingNothing
mediaProjectionState.value = MediaProjectionState.NotProjecting
- callRepo.setOngoingCallState(OngoingCallModel.NoCall)
+ removeOngoingCallState("testKey")
val latest by collectLastValue(underTest.primaryChip)
@@ -123,10 +121,10 @@
@Test
fun primaryChip_screenRecordShow_restHidden_screenRecordShown() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionState.value = MediaProjectionState.NotProjecting
- callRepo.setOngoingCallState(OngoingCallModel.NoCall)
+ removeOngoingCallState("testKey")
val latest by collectLastValue(underTest.primaryChip)
@@ -135,10 +133,10 @@
@Test
fun primaryChip_screenRecordShowAndCallShow_screenRecordShown() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
- callRepo.setOngoingCallState(inCallModel(startTimeMs = 34))
+ addOngoingCallState()
val latest by collectLastValue(underTest.primaryChip)
@@ -147,11 +145,11 @@
@Test
fun primaryChip_screenRecordShowAndShareToAppShow_screenRecordShown() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
- callRepo.setOngoingCallState(OngoingCallModel.NoCall)
+ removeOngoingCallState("testKey")
val latest by collectLastValue(underTest.primaryChip)
@@ -160,11 +158,11 @@
@Test
fun primaryChip_shareToAppShowAndCallShow_shareToAppShown() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.DoingNothing
mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
- callRepo.setOngoingCallState(inCallModel(startTimeMs = 34))
+ addOngoingCallState()
val latest by collectLastValue(underTest.primaryChip)
@@ -173,15 +171,13 @@
@Test
fun primaryChip_screenRecordAndShareToAppAndCastToOtherHideAndCallShown_callShown() =
- testScope.runTest {
+ kosmos.runTest {
val notificationKey = "call"
screenRecordState.value = ScreenRecordModel.DoingNothing
// MediaProjection covers both share-to-app and cast-to-other-device
mediaProjectionState.value = MediaProjectionState.NotProjecting
- callRepo.setOngoingCallState(
- inCallModel(startTimeMs = 34, notificationKey = notificationKey)
- )
+ addOngoingCallState(key = notificationKey)
val latest by collectLastValue(underTest.primaryChip)
@@ -190,12 +186,10 @@
@Test
fun primaryChip_higherPriorityChipAdded_lowerPriorityChipReplaced() =
- testScope.runTest {
+ kosmos.runTest {
// Start with just the lowest priority chip shown
val callNotificationKey = "call"
- callRepo.setOngoingCallState(
- inCallModel(startTimeMs = 34, notificationKey = callNotificationKey)
- )
+ addOngoingCallState(key = callNotificationKey)
// And everything else hidden
mediaProjectionState.value = MediaProjectionState.NotProjecting
screenRecordState.value = ScreenRecordModel.DoingNothing
@@ -224,15 +218,13 @@
@Test
fun primaryChip_highestPriorityChipRemoved_showsNextPriorityChip() =
- testScope.runTest {
+ kosmos.runTest {
// WHEN all chips are active
screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
val callNotificationKey = "call"
- callRepo.setOngoingCallState(
- inCallModel(startTimeMs = 34, notificationKey = callNotificationKey)
- )
+ addOngoingCallState(key = callNotificationKey)
val latest by collectLastValue(underTest.primaryChip)
@@ -255,17 +247,15 @@
/** Regression test for b/347726238. */
@Test
fun primaryChip_timerDoesNotResetAfterSubscribersRestart() =
- testScope.runTest {
+ kosmos.runTest {
var latest: OngoingActivityChipModel? = null
- val job1 = underTest.primaryChip.onEach { latest = it }.launchIn(this)
+ val job1 = underTest.primaryChip.onEach { latest = it }.launchIn(kosmos.testScope)
// Start a chip with a timer
systemClock.setElapsedRealtime(1234)
screenRecordState.value = ScreenRecordModel.Recording
- runCurrent()
-
assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
.isEqualTo(1234)
@@ -276,9 +266,7 @@
systemClock.setElapsedRealtime(5678)
// WHEN we re-subscribe to the chip flow
- val job2 = underTest.primaryChip.onEach { latest = it }.launchIn(this)
-
- runCurrent()
+ val job2 = underTest.primaryChip.onEach { latest = it }.launchIn(kosmos.testScope)
// THEN the old start time is still used
assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
@@ -289,14 +277,14 @@
@Test
fun primaryChip_screenRecordStoppedViaDialog_chipHiddenWithoutAnimation() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(
NORMAL_PACKAGE,
hostDeviceName = "Recording Display",
)
- callRepo.setOngoingCallState(OngoingCallModel.NoCall)
+ removeOngoingCallState("testKey")
val latest by collectLastValue(underTest.primaryChip)
@@ -319,11 +307,11 @@
@Test
fun primaryChip_projectionStoppedViaDialog_chipHiddenWithoutAnimation() =
- testScope.runTest {
+ kosmos.runTest {
mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
screenRecordState.value = ScreenRecordModel.DoingNothing
- callRepo.setOngoingCallState(OngoingCallModel.NoCall)
+ removeOngoingCallState("testKey")
val latest by collectLastValue(underTest.primaryChip)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorControllerTest.kt
index a1772e3..510167d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorControllerTest.kt
@@ -10,6 +10,7 @@
import com.android.systemui.jank.interactionJankMonitor
import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
+import com.android.systemui.statusbar.notification.collection.GroupEntry
import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
import com.android.systemui.statusbar.notification.data.repository.NotificationLaunchAnimationRepository
@@ -165,7 +166,10 @@
.setSummary(summary)
.addChild(notification.entry)
.build()
- assertSame(summary, notification.entry.parent?.summary)
+
+ val parentSummary = if (notification.entry.parent is GroupEntry)
+ (notification.entry.parent as GroupEntry).summary else null
+ assertSame(summary, parentSummary)
`when`(headsUpManager.isHeadsUpEntry(notificationKey)).thenReturn(false)
`when`(headsUpManager.isHeadsUpEntry(summary.key)).thenReturn(true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt
index 99bd4fc..d9c9177 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt
@@ -26,6 +26,7 @@
import com.android.systemui.statusbar.notification.collection.ListEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.getAttachState
import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
@@ -409,7 +410,7 @@
): NotifSection {
return NotifSection(object : NotifSectioner("Section $index (bucket=$bucket)", bucket) {
- override fun isInSection(entry: ListEntry?): Boolean {
+ override fun isInSection(entry: PipelineEntry?): Boolean {
throw NotImplementedError("This should never be called")
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt
index e6fbc72..4a05804 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt
@@ -24,6 +24,7 @@
import com.android.systemui.statusbar.notification.collection.ListEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.ShadeListBuilder
import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderEntryListener
import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderGroupListener
@@ -40,6 +41,7 @@
import org.mockito.kotlin.times
import org.mockito.kotlin.verify
import org.mockito.kotlin.verifyNoMoreInteractions
+import java.nio.channels.Pipe
@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -198,7 +200,7 @@
)
private class FakeNotifViewRenderer : NotifViewRenderer {
- override fun onRenderList(notifList: List<ListEntry>) {}
+ override fun onRenderList(notifList: List<PipelineEntry>) {}
override fun getGroupController(group: GroupEntry): NotifGroupController = mock()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapperTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapperTest.kt
index 081f52c..bf6ee92 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapperTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapperTest.kt
@@ -75,9 +75,10 @@
// Creates a mocked out NotificationEntry of ConversationLayout type,
// with a mock imageMessage.drawable embedded in its MessagingImageMessages
// (both top level, and in a group).
- val mockDrawable = mock<AnimatedImageDrawable>()
- val mockDrawable2 = mock<AnimatedImageDrawable>()
- val mockLayoutView: View = fakeConversationLayout(mockDrawable, mockDrawable2)
+ val mockDrawableGroupMessage = mock<AnimatedImageDrawable>()
+ val mockDrawableImageMessage = mock<AnimatedImageDrawable>()
+ val mockLayoutView: View =
+ fakeConversationLayout(mockDrawableGroupMessage, mockDrawableImageMessage)
val wrapper: NotificationViewWrapper =
NotificationConversationTemplateViewWrapper(mContext, mockLayoutView, mRow)
@@ -85,8 +86,8 @@
wrapper.setAnimationsRunning(false)
// Verifies that each AnimatedImageDrawable is started animating.
- verify(mockDrawable).stop()
- verify(mockDrawable2).stop()
+ verify(mockDrawableGroupMessage).stop()
+ verify(mockDrawableImageMessage).stop()
}
private fun fakeConversationLayout(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt
index 67415de..e7be20e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt
@@ -88,6 +88,7 @@
/* delay= */ 0L,
/* duration= */ ANIMATION_DURATION_HEADS_UP_APPEAR.toLong(),
/* isHeadsUpAppear= */ true,
+ /* isHeadsUpCycling= */ false,
/* onEndRunnable= */ null,
)
}
@@ -111,6 +112,7 @@
/* delay= */ 0L,
/* duration= */ ANIMATION_DURATION_HEADS_UP_APPEAR.toLong(),
/* isHeadsUpAppear= */ true,
+ /* isHeadsUpCycling= */ false,
/* onEndRunnable= */ null,
)
}
@@ -128,6 +130,7 @@
/* delay= */ eq(0L),
/* translationDirection= */ eq(0f),
/* isHeadsUpAnimation= */ eq(true),
+ /* isHeadsUpCycling= */ eq(false),
/* onStartedRunnable= */ any(),
/* onFinishedRunnable= */ runnableCaptor.capture(),
/* animationListener= */ any(),
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
index c630a1c..e7c571d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
@@ -62,6 +62,8 @@
import com.android.systemui.scene.data.repository.Idle
import com.android.systemui.scene.data.repository.Transition
import com.android.systemui.scene.data.repository.setTransition
+import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.enableDualShade
@@ -363,6 +365,8 @@
assertThat(alpha).isEqualTo(1f)
// Start transitioning to glanceable hub
+ kosmos.sceneInteractor.changeScene(Scenes.Lockscreen, "")
+
val progress = 0.6f
kosmos.setTransition(
sceneTransition = Transition(from = Scenes.Lockscreen, to = Scenes.Communal),
@@ -396,6 +400,7 @@
assertThat(alpha).isIn(Range.closed(0f, 1f))
// Finish transition to glanceable hub
+ kosmos.sceneInteractor.changeScene(Scenes.Communal, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Communal),
stateTransition =
@@ -432,6 +437,8 @@
assertThat(alpha).isEqualTo(1f)
// Start transitioning to glanceable hub
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "")
+
val progress = 0.6f
kosmos.setTransition(
sceneTransition = Transition(from = Scenes.Lockscreen, to = Scenes.Communal),
@@ -464,6 +471,7 @@
assertThat(alpha).isEqualTo(0)
// Finish transition to glanceable hub
+ kosmos.sceneInteractor.changeScene(Scenes.Communal, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Communal),
stateTransition =
@@ -492,6 +500,8 @@
assertThat(alpha).isEqualTo(0f)
// Start transitioning to glanceable hub
+ kosmos.sceneInteractor.changeScene(Scenes.Lockscreen, "")
+
val progress = 0.6f
kosmos.setTransition(
sceneTransition = Transition(from = Scenes.Lockscreen, to = Scenes.Communal),
@@ -524,6 +534,7 @@
assertThat(alpha).isEqualTo(0)
// Finish transition to glanceable hub
+ kosmos.sceneInteractor.changeScene(Scenes.Communal, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Communal),
stateTransition =
@@ -587,7 +598,7 @@
assertThat(isOnLockscreen).isTrue()
kosmos.setTransition(
- sceneTransition = Idle(Scenes.Bouncer),
+ sceneTransition = Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer)),
stateTransition = TransitionStep(from = LOCKSCREEN, to = PRIMARY_BOUNCER),
)
assertThat(isOnLockscreen).isTrue()
@@ -601,7 +612,7 @@
val isOnLockscreen by collectLastValue(underTest.isOnLockscreen)
setTransition(
- sceneTransition = Idle(Scenes.Bouncer),
+ sceneTransition = Idle(Scenes.Lockscreen, setOf(Overlays.Bouncer)),
stateTransition = TransitionStep(from = LOCKSCREEN, to = PRIMARY_BOUNCER),
)
assertThat(isOnLockscreen).isTrue()
@@ -659,6 +670,7 @@
assertThat(isOnGlanceableHubWithoutShade).isFalse()
// Move to glanceable hub
+ kosmos.sceneInteractor.changeScene(Scenes.Communal, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Communal),
stateTransition = TransitionStep(from = LOCKSCREEN, to = GLANCEABLE_HUB),
@@ -681,6 +693,7 @@
shadeTestUtil.setQsExpansion(0f)
shadeTestUtil.setLockscreenShadeExpansion(0f)
+ kosmos.sceneInteractor.changeScene(Scenes.Communal, "")
kosmos.setTransition(
sceneTransition = Idle(Scenes.Communal),
stateTransition = TransitionStep(from = LOCKSCREEN, to = GLANCEABLE_HUB),
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/KeyguardBypassInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/KeyguardBypassInteractorTest.kt
index 091fbb6..c966f52 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/KeyguardBypassInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/KeyguardBypassInteractorTest.kt
@@ -29,6 +29,7 @@
import com.android.systemui.keyguard.domain.interactor.pulseExpansionInteractor
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
@@ -147,10 +148,11 @@
}
private fun setScene(bouncerShowing: Boolean, onLockscreenScene: Boolean) {
- if (bouncerShowing) {
- kosmos.sceneInteractor.changeScene(Scenes.Bouncer, "reason")
- } else if (onLockscreenScene) {
+ if (onLockscreenScene) {
kosmos.sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
+ if (bouncerShowing) {
+ kosmos.sceneInteractor.showOverlay(Overlays.Bouncer, "reason")
+ }
} else {
kosmos.sceneInteractor.changeScene(Scenes.Shade, "reason")
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt
index 8ea888e..1c530f1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt
@@ -252,6 +252,21 @@
}
@Test
+ fun isVisible_satellite_respectsAirplaneMode() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.isVisible)
+
+ repository.isNonTerrestrial.value = true
+ airplaneModeInteractor.setIsAirplaneMode(false)
+
+ assertThat(latest).isTrue()
+
+ airplaneModeInteractor.setIsAirplaneMode(true)
+
+ assertThat(latest).isFalse()
+ }
+
+ @Test
fun contentDescription_notInService_usesNoPhone() =
testScope.runTest {
val latest by collectLastValue(underTest.contentDescription)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt
index 8a796fc..7e8ee1b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt
@@ -522,11 +522,12 @@
}
@Test
- fun isHomeStatusBarAllowedByScene_sceneBouncer_false() =
+ fun isHomeStatusBarAllowedByScene_overlayBouncer_false() =
kosmos.runTest {
val latest by collectLastValue(underTest.isHomeStatusBarAllowedByScene)
- kosmos.sceneContainerRepository.snapToScene(Scenes.Bouncer)
+ kosmos.sceneContainerRepository.snapToScene(Scenes.Lockscreen)
+ kosmos.sceneContainerRepository.showOverlay(Overlays.Bouncer)
assertThat(latest).isFalse()
}
@@ -1052,7 +1053,8 @@
val notifIconsVisible by collectLastValue(underTest.isNotificationIconContainerVisible)
val systemInfoVisible by collectLastValue(underTest.systemInfoCombinedVis)
- kosmos.sceneContainerRepository.snapToScene(Scenes.Bouncer)
+ kosmos.sceneContainerRepository.snapToScene(Scenes.Lockscreen)
+ kosmos.sceneContainerRepository.showOverlay(Overlays.Bouncer)
assertThat(clockVisible!!.visibility).isEqualTo(View.INVISIBLE)
assertThat(notifIconsVisible!!.visibility).isEqualTo(View.GONE)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
index 4ab1c0b..fea0320 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
@@ -154,7 +154,8 @@
testScope.runTest {
val latest by collectLastValue(underTest.isVisible)
- kosmos.sceneContainerRepository.snapToScene(Scenes.Bouncer)
+ kosmos.sceneContainerRepository.snapToScene(Scenes.Lockscreen)
+ kosmos.sceneContainerRepository.showOverlay(Overlays.Bouncer)
assertThat(latest).isFalse()
}
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java
index a0bf7f0..d3218ad 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java
@@ -203,8 +203,6 @@
*/
void setIsNotificationPanelFullWidth(boolean isFullWidth);
- default void setQSExpandingOrCollapsing(boolean isQSExpandingOrCollapsing) {}
-
/**
* Callback for when QSPanel container is scrolled
*/
diff --git a/packages/SystemUI/pods/Android.bp b/packages/SystemUI/pods/Android.bp
index e45f317..588a074 100644
--- a/packages/SystemUI/pods/Android.bp
+++ b/packages/SystemUI/pods/Android.bp
@@ -20,3 +20,14 @@
// specify default_visibility:
default_visibility: ["//visibility:private"],
}
+
+java_defaults {
+ name: "SystemUI_pod_defaults",
+ libs: [
+ "jsr330",
+ ],
+ kotlincflags: [
+ "-Xjvm-default=all",
+ ],
+ defaults_visibility: [":__subpackages__"],
+}
diff --git a/packages/SystemUI/pods/com/android/systemui/dagger/Android.bp b/packages/SystemUI/pods/com/android/systemui/dagger/Android.bp
index df90be8..72c41bb 100644
--- a/packages/SystemUI/pods/com/android/systemui/dagger/Android.bp
+++ b/packages/SystemUI/pods/com/android/systemui/dagger/Android.bp
@@ -14,21 +14,18 @@
// limitations under the License.
//
-soong_namespace {
-}
-
package {
default_applicable_licenses: ["frameworks_base_packages_SystemUI_license"],
}
java_library {
- name: "api",
+ name: "com.android.systemui.dagger-api",
srcs: [
"**/*.java",
"**/*.kt",
],
- libs: [
- "jsr330",
+ defaults: [
+ "SystemUI_pod_defaults",
],
visibility: ["//frameworks/base/packages/SystemUI:__subpackages__"],
}
diff --git a/packages/SystemUI/pods/com/android/systemui/retail/Android.bp b/packages/SystemUI/pods/com/android/systemui/retail/Android.bp
index f047848..639eae9 100644
--- a/packages/SystemUI/pods/com/android/systemui/retail/Android.bp
+++ b/packages/SystemUI/pods/com/android/systemui/retail/Android.bp
@@ -14,25 +14,24 @@
// limitations under the License.
//
-soong_namespace {
-}
-
package {
default_applicable_licenses: ["frameworks_base_packages_SystemUI_license"],
}
java_library {
- name: "impl",
+ name: "com.android.systemui.retail-impl",
srcs: ["*.kt"],
libs: [
- "jsr330",
"dagger2",
"SystemUICommon",
"kotlinx_coroutines",
],
- static_libs: [
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/data:impl",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/domain:impl",
+ defaults: [
+ "SystemUI_pod_defaults",
],
- visibility: ["//frameworks/base/packages/SystemUI"],
+ static_libs: [
+ "com.android.systemui.retail.data-impl",
+ "com.android.systemui.retail.domain-impl",
+ ],
+ visibility: ["//frameworks/base/packages/SystemUI:__pkg__"],
}
diff --git a/packages/SystemUI/pods/com/android/systemui/retail/data/Android.bp b/packages/SystemUI/pods/com/android/systemui/retail/data/Android.bp
index f148a7c..1aa41e4 100644
--- a/packages/SystemUI/pods/com/android/systemui/retail/data/Android.bp
+++ b/packages/SystemUI/pods/com/android/systemui/retail/data/Android.bp
@@ -14,42 +14,44 @@
// limitations under the License.
//
-soong_namespace {
-}
-
package {
default_applicable_licenses: ["frameworks_base_packages_SystemUI_license"],
}
java_library {
- name: "api",
+ name: "com.android.systemui.retail.data-api",
srcs: ["repository/*.kt"],
libs: [
"kotlinx_coroutines",
],
+ defaults: [
+ "SystemUI_pod_defaults",
+ ],
visibility: [
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/dagger",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/domain",
+ "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail:__pkg__",
+ "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/dagger:__pkg__",
+ "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/domain:__pkg__",
],
}
java_library {
- name: "impl",
+ name: "com.android.systemui.retail.data-impl",
srcs: ["repository/impl/*.kt"],
libs: [
- "jsr330",
"kotlinx_coroutines",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/dagger:api",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/util/settings:api",
+ "com.android.systemui.dagger-api",
+ "com.android.systemui.util.settings-api",
"SystemUICommon",
],
static_libs: [
- "api",
+ "com.android.systemui.retail.data-api",
+ ],
+ defaults: [
+ "SystemUI_pod_defaults",
],
visibility: [
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/dagger",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/domain",
+ "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail:__pkg__",
+ "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/dagger:__pkg__",
+ "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/domain:__pkg__",
],
}
diff --git a/packages/SystemUI/pods/com/android/systemui/retail/domain/Android.bp b/packages/SystemUI/pods/com/android/systemui/retail/domain/Android.bp
index 787861c..64b0e22 100644
--- a/packages/SystemUI/pods/com/android/systemui/retail/domain/Android.bp
+++ b/packages/SystemUI/pods/com/android/systemui/retail/domain/Android.bp
@@ -14,33 +14,35 @@
// limitations under the License.
//
-soong_namespace {
-}
-
package {
default_applicable_licenses: ["frameworks_base_packages_SystemUI_license"],
}
java_library {
- name: "api",
+ name: "com.android.systemui.retail.domain-api",
srcs: ["interactor/*.kt"],
+ defaults: [
+ "SystemUI_pod_defaults",
+ ],
visibility: [
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail",
+ "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail:__pkg__",
],
}
java_library {
- name: "impl",
+ name: "com.android.systemui.retail.domain-impl",
srcs: ["interactor/impl/*.kt"],
libs: [
- "jsr330",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/dagger:api",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail/data:api",
+ "com.android.systemui.dagger-api",
+ "com.android.systemui.retail.data-api",
],
static_libs: [
- "api",
+ "com.android.systemui.retail.domain-api",
+ ],
+ defaults: [
+ "SystemUI_pod_defaults",
],
visibility: [
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail",
+ "//frameworks/base/packages/SystemUI/pods/com/android/systemui/retail:__pkg__",
],
}
diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/Android.bp b/packages/SystemUI/pods/com/android/systemui/util/settings/Android.bp
index 1aa7729..d97ff13 100644
--- a/packages/SystemUI/pods/com/android/systemui/util/settings/Android.bp
+++ b/packages/SystemUI/pods/com/android/systemui/util/settings/Android.bp
@@ -14,27 +14,25 @@
// limitations under the License.
//
-soong_namespace {
-}
-
package {
default_applicable_licenses: ["frameworks_base_packages_SystemUI_license"],
}
java_library {
- name: "api",
+ name: "com.android.systemui.util.settings-api",
srcs: [
"*.java",
"*.kt",
],
libs: [
"//frameworks/libs/systemui:tracinglib-platform",
- "//frameworks/base/packages/SystemUI/pods/com/android/systemui/dagger:api",
+ "com.android.systemui.dagger-api",
"SystemUICommon",
"androidx.annotation_annotation",
"kotlinx_coroutines_android",
- "jsr330",
],
- kotlincflags: ["-Xjvm-default=all"],
+ defaults: [
+ "SystemUI_pod_defaults",
+ ],
visibility: ["//frameworks/base/packages/SystemUI:__subpackages__"],
}
diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
index e7116d6..7e5ff8c 100644
--- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
@@ -21,11 +21,11 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="keyguard_enter_your_pin" msgid="5429932527814874032">"Ingresa tu PIN"</string>
- <string name="keyguard_enter_pin" msgid="8114529922480276834">"Ingresar PIN"</string>
+ <string name="keyguard_enter_pin" msgid="8114529922480276834">"Ingresa el PIN"</string>
<string name="keyguard_enter_your_pattern" msgid="351503370332324745">"Ingresa tu patrón"</string>
- <string name="keyguard_enter_pattern" msgid="7616595160901084119">"Dibujar patrón"</string>
+ <string name="keyguard_enter_pattern" msgid="7616595160901084119">"Dibuja el patrón"</string>
<string name="keyguard_enter_your_password" msgid="7225626204122735501">"Ingresa tu contraseña"</string>
- <string name="keyguard_enter_password" msgid="6483623792371009758">"Ingresar contraseña"</string>
+ <string name="keyguard_enter_password" msgid="6483623792371009758">"Ingresa la contraseña"</string>
<string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Tarjeta no válida"</string>
<string name="keyguard_charged" msgid="5478247181205188995">"Cargada"</string>
<string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando de manera inalámbrica"</string>
@@ -62,9 +62,9 @@
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Vuelve a intentarlo o ingresa el PIN"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Vuelve a intentarlo o ingresa la contraseña"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Vuelve a intentarlo o dibuja el patrón"</string>
- <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Se requiere PIN luego de demasiados intentos"</string>
- <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Se requiere contraseña luego de demasiados intentos"</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Se requiere patrón luego de demasiados intentos"</string>
+ <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Debes ingresar un PIN luego de demasiados intentos"</string>
+ <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Debes ingresar una contraseña luego de demasiados intentos"</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Debes ingresar un patrón luego de demasiados intentos"</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"Desbloquear con PIN o huella dactilar"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Desbloq. contraseña/huella"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Desbloq. patrón/huella"</string>
@@ -104,7 +104,7 @@
<string name="kg_password_pin_failed" msgid="5136259126330604009">"Se produjo un error al desbloquear la tarjeta SIM con el PIN."</string>
<string name="kg_password_puk_failed" msgid="6778867411556937118">"Se produjo un error al desbloquear la tarjeta SIM con el PUK."</string>
<string name="accessibility_ime_switch_button" msgid="9082358310194861329">"Cambiar método de entrada"</string>
- <string name="airplane_mode" msgid="2528005343938497866">"Modo de avión"</string>
+ <string name="airplane_mode" msgid="2528005343938497866">"Modo avión"</string>
<string name="kg_prompt_reason_restart_pattern" msgid="3321211830602827742">"Se requiere patrón tras reiniciar dispositivo"</string>
<string name="kg_prompt_reason_restart_pin" msgid="2672166323886110512">"Se requiere PIN tras reiniciar dispositivo"</string>
<string name="kg_prompt_reason_restart_password" msgid="3967993994418885887">"Se requiere contraseña tras reiniciar dispositivo"</string>
diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml
index 33a7346..0e0f9eb 100644
--- a/packages/SystemUI/res-keyguard/values-es/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es/strings.xml
@@ -62,9 +62,9 @@
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Vuelve a intentarlo o introduce el PIN"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Vuelve a intentarlo o escribe la contraseña"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Vuelve a intentarlo o dibuja el patrón"</string>
- <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Demasiados intentos, se necesita el PIN"</string>
- <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Demasiados intentos, se necesita la contraseña"</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Demasiados intentos, se necesita el patrón"</string>
+ <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Tras demasiados intentos, es necesario introducir el PIN"</string>
+ <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Tras demasiados intentos, es necesario introducir la contraseña"</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Tras demasiados intentos, es necesario dibujar el patrón"</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"Desbloquea con PIN o huella digital"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Desbloquea con contraseña o huella digital"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Desbloquea con tu patrón o huella digital"</string>
diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
index 82a553c..cb6f5b4 100644
--- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
@@ -62,9 +62,9 @@
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Réessayez ou entrez le NIP"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Réessayez ou entrez le mot de passe"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Réessayez ou dessinez le schéma"</string>
- <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Le NIP est requis (trop de tentatives)"</string>
- <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Le mot de passe est requis (trop de tentatives)"</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Le schéma est requis (trop de tentatives)"</string>
+ <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Le NIP est requis après trop de tentatives"</string>
+ <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Le mot de passe est requis après trop de tentatives"</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Le schéma est requis après trop de tentatives"</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"Déverr. par NIP ou empr. dig."</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Déverr. par MDP ou empr. dig."</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Déverr. par schéma ou empr. dig."</string>
diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml
index d905581..9eb89b6 100644
--- a/packages/SystemUI/res-keyguard/values-hi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml
@@ -62,9 +62,9 @@
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"फिर से कोशिश करें या पिन डालें"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"फिर से कोशिश करें या पासवर्ड डालें"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"फिर से कोशिश करें या पैटर्न ड्रॉ करें"</string>
- <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"कई बार कोशिश की जा चुकी है, इसलिए पिन डालें"</string>
- <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"कई बार कोशिश की जा चुकी है, इसलिए पासवर्ड डालें"</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"कई बार कोशिश की जा चुकी है, इसलिए पैटर्न ड्रा करें"</string>
+ <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"कई बार कोशिश करने के बाद पिन डालना ज़रूरी है"</string>
+ <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"कई बार कोशिश करने के बाद पासवर्ड डालना ज़रूरी है"</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"कई बार कोशिश करने के बाद पैटर्न ड्रा करना ज़रूरी है"</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"पिन/फ़िंगरप्रिंट से अनलॉक करें"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"पासवर्ड/फ़िंगरप्रिंट से अनलॉक करें"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"पैटर्न/फ़िंगरप्रिंट से अनलॉक करें"</string>
diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml
index 733e29c..5f2bffb 100644
--- a/packages/SystemUI/res-keyguard/values-km/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-km/strings.xml
@@ -62,9 +62,9 @@
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"ព្យាយាមម្ដងទៀត ឬបញ្ចូលកូដ PIN"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"ព្យាយាមម្ដងទៀត ឬបញ្ចូលពាក្យសម្ងាត់"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"ព្យាយាមម្ដងទៀត ឬគូរលំនាំ"</string>
- <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"ត្រូវការកូដ PIN បន្ទាប់ពីព្យាយាមច្រើនដងពេក"</string>
+ <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"តម្រូវឱ្យមាន PIN បន្ទាប់ពីព្យាយាមច្រើនដងពេក"</string>
<string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"ត្រូវការពាក្យសម្ងាត់ បន្ទាប់ពីព្យាយាមច្រើនដងពេក"</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"ត្រូវការលំនាំ បន្ទាប់ពីព្យាយាមច្រើនដងពេក"</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"តម្រូវឱ្យមានលំនាំ បន្ទាប់ពីព្យាយាមច្រើនដងពេក"</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"ដោះសោដោយប្រើកូដ PIN ឬស្នាមម្រាមដៃ"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"ដោះសោដោយប្រើពាក្យសម្ងាត់ ឬស្នាមម្រាមដៃ"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"ដោះសោដោយប្រើលំនាំ ឬស្នាមម្រាមដៃ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml
index 544adee..addb01e 100644
--- a/packages/SystemUI/res-keyguard/values-ky/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml
@@ -62,9 +62,9 @@
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Кайталап көрүңүз же PIN кодду киргизиңиз"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Кайра аракет кылыңыз же сырсөздү киргизиңиз"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Кайра аракет кылыңыз же графикалык ачкычты тартыңыз"</string>
- <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Өтө көп аракеттен кийин PIN код талап кылынат"</string>
- <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Өтө көп аракеттен кийин сырсөз талап кылынат"</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Өтө көп аракеттен кийин графикалык ачкыч талап клынт"</string>
+ <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Өтө көп жолу аракет кылдыңыз. PIN кодду киргизиңиз."</string>
+ <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Өтө көп жолу аракет кылдыңыз. Сырсөздү киргизиңиз."</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Өтө көп жолу аракет кылдыңыз. Графикалык ачкычты киргизиңиз."</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"PIN кд же мнжа изи мнен клпусн ачңыз"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Срсөз же мнжа изи мнен клпусн ачңз"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Грфиклык ачкч же мнжа изи менн клпусн ачңз"</string>
diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml
index 83ce698..cd187bc 100644
--- a/packages/SystemUI/res-keyguard/values-mn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml
@@ -62,9 +62,9 @@
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Дахин оролдох эсвэл ПИН оруулна уу"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Дахин оролдох эсвэл нууц үг оруулна уу"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Дахин оролдох эсвэл хээ зурна уу"</string>
- <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Хэт олон оролдлогын дараа ПИН шаардлагатай"</string>
- <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Хэт олон оролдлогын дараа нууц үг шаардлагатай"</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Хэт олон оролдлогын дараа хээ шаардлагатай"</string>
+ <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Хэт олон оролдлогын дараа ПИН оруулахыг шаардана"</string>
+ <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Хэт олон оролдлогын дараа нууц үг оруулахыг шаардана"</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Хэт олон оролдлогын дараа хээ оруулахыг шаардана"</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"ПИН эсвэл хурууны хээгээр түгжээ тайл"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Нууц үг эсвэл хурууны хээгээр түгжээ тайл"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Хээ эсвэл хурууны хээгээр түгжээ тайл"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml
index 2fd42f4..502c42d 100644
--- a/packages/SystemUI/res-keyguard/values-ne/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml
@@ -23,7 +23,7 @@
<string name="keyguard_enter_your_pin" msgid="5429932527814874032">"आफ्नो PIN हाल्नुहोस्"</string>
<string name="keyguard_enter_pin" msgid="8114529922480276834">"PIN हाल्नुहोस्"</string>
<string name="keyguard_enter_your_pattern" msgid="351503370332324745">"प्याटर्न हाल्नुहोस्"</string>
- <string name="keyguard_enter_pattern" msgid="7616595160901084119">"प्याटर्न हाल्नुहोस्"</string>
+ <string name="keyguard_enter_pattern" msgid="7616595160901084119">"प्याटर्न कोर्नुहोस्"</string>
<string name="keyguard_enter_your_password" msgid="7225626204122735501">"पासवर्ड हाल्नुहोस्"</string>
<string name="keyguard_enter_password" msgid="6483623792371009758">"पासवर्ड हाल्नुहोस्"</string>
<string name="keyguard_sim_error_message_short" msgid="633630844240494070">"अमान्य कार्ड।"</string>
diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml
index 3411571..ea958e5 100644
--- a/packages/SystemUI/res-keyguard/values-pa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml
@@ -64,7 +64,7 @@
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਪੈਟਰਨ ਬਣਾਓ"</string>
<string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"ਬਹੁਤ ਸਾਰੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਅਦ ਪਿੰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ"</string>
<string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"ਬਹੁਤ ਸਾਰੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਅਦ ਪਾਸਵਰਡ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ"</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"ਬਹੁਤ ਸਾਰੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਅਦ ਪੈਟਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ"</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"ਬਹੁਤ ਸਾਰੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਤੋਂ ਬਾਅਦ ਪੈਟਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ"</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"ਪਿੰਨ ਜਾਂ ਫਿੰਗਰਪ੍ਰਿੰਟ ਨਾਲ ਅਣਲਾਕ ਕਰੋ"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"ਪਾਸਵਰਡ ਜਾਂ ਫਿੰਗਰਪ੍ਰਿੰਟ ਨਾਲ ਅਣਲਾਕ ਕਰੋ"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"ਪੈਟਰਨ ਜਾਂ ਫਿੰਗਰਪ੍ਰਿੰਟ ਨਾਲ ਅਣਲਾਕ ਕਰੋ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml
index cab9cb9..d066292 100644
--- a/packages/SystemUI/res-keyguard/values-ru/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml
@@ -64,7 +64,7 @@
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Повторите попытку или введите графический ключ."</string>
<string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Слишком много попыток. Необходимо ввести PIN-код."</string>
<string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Слишком много попыток. Необходимо ввести пароль."</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Слишком много попыток. Необходимо ввести граф. ключ."</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Слишком много попыток. Необходимо ввести графический ключ."</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"Используйте PIN-код или отпечаток пальца"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Используйте пароль или отпечаток пальца"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Используйте граф. ключ или отпечаток пальца"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml
index 4dffd97..3cccb9c 100644
--- a/packages/SystemUI/res-keyguard/values-sk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml
@@ -62,9 +62,9 @@
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Skúste to znova alebo zadajte PIN"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Skúste to znova alebo zadajte heslo"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Skúste to znova alebo nakreslite vzor"</string>
- <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Príliš veľký počet pokusov. Vyžaduje sa PIN."</string>
- <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Príliš veľký počet pokusov. Vyžaduje sa heslo."</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Príliš veľký počet pokusov. Vyžaduje sa vzor."</string>
+ <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Príliš veľa pokusov. Vyžaduje sa PIN."</string>
+ <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Príliš veľa pokusov. Vyžaduje sa heslo."</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Príliš veľa pokusov. Vyžaduje sa vzor."</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"Odomknúť kódom PIN/odtlačkom"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Odomknúť heslom/odtlačkom"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Odomknúť vzorom/odtlačkom"</string>
diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml
index 0a6476fc..b0beca6 100644
--- a/packages/SystemUI/res-keyguard/values-te/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-te/strings.xml
@@ -57,14 +57,14 @@
<string name="kg_wrong_pin" msgid="4160978845968732624">"PIN తప్పు"</string>
<string name="kg_wrong_pin_try_again" msgid="3129729383303430190">"PIN తప్పు. రీట్రై చేయండి."</string>
<string name="kg_wrong_input_try_fp_suggestion" msgid="3143861542242024833">"లేదా వేలిముద్రతో అన్లాక్ చేయండి"</string>
- <string name="kg_fp_not_recognized" msgid="5183108260932029241">"వేలిముద్ర గుర్తించబడలేదు"</string>
+ <string name="kg_fp_not_recognized" msgid="5183108260932029241">"వేలిముద్ర (ఫింగర్-ప్రింట్) మ్యాచ్ కాలేదు"</string>
<string name="bouncer_face_not_recognized" msgid="1666128054475597485">"ముఖం గుర్తించబడలేదు"</string>
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"మళ్లీ ట్రై చేయండి లేదా PINని ఎంటర్ చేయండి"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"మళ్లీ ట్రై చేయండి లేదా పాస్వర్డ్ను ఎంటర్ చేయండి"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"మళ్లీ ట్రై చేయండి లేదా ఆకృతిని గీయండి"</string>
<string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"చాలా సార్లు ట్రై చేసిన తర్వాత PIN అవసరం అవుతుంది"</string>
<string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"చాలా సార్లు ట్రై చేసిన తర్వాత పాస్వర్డ్ అవసరం"</string>
- <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"చాలా సార్లు ట్రై చేసిన తర్వాత ఆకృతి అవసరం అవుతుంది"</string>
+ <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"చాలా సార్లు ట్రై చేసిన తర్వాత ఆకృతి (ప్యాటర్న్) అవసరం అవుతుంది"</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"PIN/వేలిముద్రతో తెరవండి"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"పాస్వర్డ్/వేలిముద్రతో తెరవండి"</string>
<string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"ఆకృతి/వేలిముద్రతో తెరవండి"</string>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
index 196df28..6b08a3a4 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
@@ -63,7 +63,7 @@
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"请重试,或输入密码"</string>
<string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"请重试,或绘制解锁图案"</string>
<string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"如果出错的尝试次数太多,必须输入 PIN 码才能解锁"</string>
- <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"如果出错的尝试次数太多,必须输入密码才能解锁"</string>
+ <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"如果多次尝试失败,必须输入密码才能解锁"</string>
<string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"如果出错的尝试次数太多,必须绘制图案才能解锁"</string>
<string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"请使用 PIN 码或指纹解锁"</string>
<string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"请使用密码或指纹解锁"</string>
diff --git a/packages/SystemUI/res/anim/volume_dialog_ringer_close.xml b/packages/SystemUI/res/anim/volume_dialog_ringer_close.xml
new file mode 100644
index 0000000..e7ba52c
--- /dev/null
+++ b/packages/SystemUI/res/anim/volume_dialog_ringer_close.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2025 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.
+ -->
+
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:controlX1="0.20"
+ android:controlY1="0.00"
+ android:controlX2="0.00"
+ android:controlY2="1.00" />
\ No newline at end of file
diff --git a/packages/SystemUI/res/anim/volume_dialog_ringer_open.xml b/packages/SystemUI/res/anim/volume_dialog_ringer_open.xml
new file mode 100644
index 0000000..3b18eef
--- /dev/null
+++ b/packages/SystemUI/res/anim/volume_dialog_ringer_open.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2025 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.
+ -->
+
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:controlX1="0.05"
+ android:controlY1="0.70"
+ android:controlX2="0.10"
+ android:controlY2="1.00" />
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/media_output_list_group_divider.xml b/packages/SystemUI/res/layout/media_output_list_group_divider.xml
index c351912..fa5ad0d 100644
--- a/packages/SystemUI/res/layout/media_output_list_group_divider.xml
+++ b/packages/SystemUI/res/layout/media_output_list_group_divider.xml
@@ -20,14 +20,14 @@
android:id="@+id/device_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/media_output_dialog_margin_horizontal"
+ android:layout_marginEnd="56dp"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_gravity="center_vertical|start"
- android:layout_marginStart="@dimen/media_output_dialog_margin_horizontal"
- android:layout_marginEnd="56dp"
android:ellipsize="end"
android:maxLines="1"
android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
diff --git a/packages/SystemUI/res/layout/media_output_list_item_advanced.xml b/packages/SystemUI/res/layout/media_output_list_item_advanced.xml
index d297ec4..6b868b3 100644
--- a/packages/SystemUI/res/layout/media_output_list_item_advanced.xml
+++ b/packages/SystemUI/res/layout/media_output_list_item_advanced.xml
@@ -20,7 +20,8 @@
android:id="@+id/device_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingHorizontal="@dimen/media_output_dialog_margin_horizontal"
+ android:layout_marginHorizontal="@dimen/media_output_dialog_margin_horizontal"
+ android:focusable="true"
android:baselineAligned="false">
<FrameLayout
android:layout_weight="1"
@@ -77,6 +78,7 @@
</FrameLayout>
<LinearLayout
+ android:id="@+id/text_content"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical|start"
@@ -86,7 +88,7 @@
android:layout_marginStart="72dp">
<TextView
android:id="@+id/title"
- android:importantForAccessibility="no"
+ android:focusable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
@@ -96,6 +98,7 @@
android:textSize="16sp"/>
<TextView
android:id="@+id/subtitle"
+ android:focusable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:marqueeRepeatLimit="marquee_forever"
@@ -124,7 +127,6 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="16dp"
- android:indeterminate="true"
android:layout_gravity="end|center"
android:indeterminateOnly="true"
android:importantForAccessibility="no"
@@ -135,30 +137,23 @@
android:layout_width="@dimen/media_output_dialog_item_height"
android:layout_height="@dimen/media_output_dialog_item_height"
android:visibility="gone"
- android:layout_marginBottom="6dp"
android:layout_marginStart="7dp"
- android:layout_gravity="end|center"
- android:gravity="center"
android:background="@drawable/media_output_item_background_active">
<CheckBox
android:id="@+id/check_box"
- android:focusable="false"
- android:importantForAccessibility="no"
- android:layout_gravity="center"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:button="@drawable/media_output_item_check_box"
+ android:foreground="@drawable/media_output_item_check_box"
+ android:foregroundGravity="center"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:button="@null"
android:visibility="gone"
/>
- <ImageView
- android:id="@+id/media_output_item_end_click_icon"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:focusable="false"
- android:importantForAccessibility="no"
- android:layout_gravity="center"
- android:indeterminate="true"
- android:indeterminateOnly="true"
+ <ImageButton
+ android:id="@+id/end_area_image_button"
+ android:background="@android:color/transparent"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:contentDescription="@null"
android:visibility="gone"/>
</FrameLayout>
</LinearLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 538d9e2..d9a28a6 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth gekoppel."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth-toestelikoon"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik om toestelbesonderhede op te stel."</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Klik om alle toestelle te sien"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Klik om met nuwe toestel te koppel"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batterypersentasie is onbekend."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Gekoppel aan <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Gekoppel aan <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Invoer"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Gehoortoestelle"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Skakel tans aan …"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kan nie helderheid verstel nie omdat dit\n deur die topapp beheer word"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kan nie helderheid verstel nie omdat dit deur die topapp beheer word"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Outodraai"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Outodraai skerm"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Ligging"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> steun nie gesprekskenmerke nie"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Terugvoer"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Maak toe"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Moenie as vasgespeld wys nie"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Wys tans regstreekse opdaterings"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Vasgespelde kennisgewings wys regstreekse inligting vanaf apps en verskyn altyd op die statusbalk en sluitskerm"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Hierdie kennisgewings kan nie gewysig word nie."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Oproepkennisgewings kan nie gewysig word nie."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Hierdie groep kennisgewings kan nie hier opgestel word nie"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Verrigting van veelvuldige take"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Gebruik verdeelde skerm met app aan die regterkant"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Gebruik verdeelde skerm met app aan die linkerkant"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Skakel oor na volskerm"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Skakel oor na app regs of onder terwyl jy verdeelde skerm gebruik"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Skakel oor na app links of bo terwyl jy verdeelde skerm gebruik"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Tydens verdeelde skerm: verplaas ’n app van een skerm na ’n ander"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Wys laeprioriteit-kennisgewingikone"</string>
<string name="other" msgid="429768510980739978">"Ander"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"verwyder teël"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"voeg teël by die laaste posisie"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Skuif teël"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Bekyk onlangse apps"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Wissel apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klaar"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Swiep op en hou met drie vingers op die raakpaneel om onlangse apps te bekyk"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Druk die handelingsleutel op jou sleutelbord om al jou apps te bekyk"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Gewysig"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Ontsluit om te kyk"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstuele opvoeding"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Gebruik jou raakpaneel om terug te gaan"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Swiep links of regs met drie vingers. Tik om meer gebare te leer."</string>
diff --git a/packages/SystemUI/res/values-af/tiles_states_strings.xml b/packages/SystemUI/res/values-af/tiles_states_strings.xml
index 3d0dbb5..fde914f 100644
--- a/packages/SystemUI/res/values-af/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-af/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Af"</item>
<item msgid="5908720590832378783">"Aan"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Onbeskikbaar"</item>
+ <item msgid="6641673879029894995">"Af"</item>
+ <item msgid="5806682401126108403">"Aan"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index f1b9fca..ba1c3ed 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ብሉቱዝ ተያይዟል።"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"የብሉቱዝ መሣሪያ አዶ"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"የመሣሪያ ዝርዝርን ለማዋቀር ጠቅ ያድርጉ"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"ሁሉንም መሣሪያዎች ለማየት ጠቅ ያድርጉ"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"ከአዲስ መሣሪያ ጋር ለማጣመር ጠቅ ያድርጉ"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"የባትሪ መቶኛ አይታወቅም።"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"ከ<xliff:g id="BLUETOOTH">%s</xliff:g> ጋር ተገናኝቷል።"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"ከ<xliff:g id="CAST">%s</xliff:g> ጋር ተገናኝቷል።"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ግቤት"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"መስሚያ አጋዥ መሣሪያዎች"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"በማብራት ላይ..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ከላይ ባለው መተግበሪያ ቁጥጥር ላይ ስለሆነ\n ብሩህነትን ማስተካከል አልተቻለም"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ከላይ ባለው መተግበሪያ ቁጥጥር ላይ ስለሆነ ብሩህነትን ማስተካከል አልተቻለም"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"በራስ ሰር አሽከርክር"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ማያ ገጽን በራስ-አሽከርክር"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"አካባቢ"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> የውይይት ባህሪያትን አይደግፍም"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ግብረመልስ"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"አሰናብት"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"ፒን እንደተደረገ አታሳይ"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"የቀጥታ ዝማኔዎችን በማሳየት ላይ"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"ፒን የተደረጉ ማሳወቂያዎች ከመተግበሪያዎች ላይ Live መረጃ ያሳያሉ እና በሁኔታ አሞሌ እና ማያ ገፅ ቁልፍ ላይ ሁልጊዜ ይታያሉ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"እነዚህ ማሳወቂያዎች ሊሻሻሉ አይችሉም።"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"የጥሪ ማሳወቂያዎች ሊቀየሩ አይችሉም።"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"የማሳወቂያዎች ይህ ቡድን እዚህ ላይ ሊዋቀር አይችልም"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"አነስተኛ ቅድሚያ ያላቸው የማሳወቂያ አዶዎችን አሳይ"</string>
<string name="other" msgid="429768510980739978">"ሌላ"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ሰቅ አስወግድ"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"በመጨረሻው ቦታ ላይ ሰቅ ያክሉ"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ሰቁን ውሰድ"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"የቅርብ ጊዜ መተግበሪያዎችን አሳይ"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"መተግበሪያዎችን ይቀያይሩ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ተከናውኗል"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"የቅርብ ጊዜ መተግበሪያዎችን ለማየት የመዳሰሻ ሰሌዳው ላይ በሦስት ጣቶች ወደላይ ያንሸራትቱ እና ይያዙ"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ሁሉንም መተግበሪያዎችዎን ለማየት በቁልፍ ሰሌዳዎ ላይ ያለውን የተግባር ቁልፍ ይጫኑ"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"ጽሁፍ ተቀይሯል"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"ለመመልከት ይክፈቱ"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"የዓውድ ትምህርት"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"ለመመለስ የመዳሰሻ ሰሌዳዎን ይጠቀሙ"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"ሦስት ጣቶችን በመጠቀም ወደ ግራ ወይም ወደ ቀኝ ያንሸራትቱ። ምልክቶችን የበለጠ ለማወቅ መታ ያድርጉ።"</string>
diff --git a/packages/SystemUI/res/values-am/tiles_states_strings.xml b/packages/SystemUI/res/values-am/tiles_states_strings.xml
index 31a7d96..f8e7a43 100644
--- a/packages/SystemUI/res/values-am/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-am/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ጠፍቷል"</item>
<item msgid="5908720590832378783">"በርቷል"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"አይገኝም"</item>
+ <item msgid="6641673879029894995">"ጠፍቷል"</item>
+ <item msgid="5806682401126108403">"በርቷል"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 7d55b85..905183c 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"تم توصيل البلوتوث."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"رمز الجهاز الذي يتضمّن بلوتوث"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"انقر هنا لضبط إعدادات الجهاز."</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"انقر لعرض جميع الأجهزة."</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"انقر لإقران جهاز جديد."</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"نسبة شحن البطارية غير معروفة."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"متصل بـ <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"تم الاتصال بـ <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"الإدخال"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"سماعات الأذن الطبية"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"جارٍ التفعيل…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"لا يمكن ضبط مستوى السطوع لأنّ\n التطبيق الأول يتحكّم فيه"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"لا يمكن ضبط مستوى السطوع لأنّ التطبيق الأول يتحكّم فيه"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"التدوير التلقائي"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"التدوير التلقائي للشاشة"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"الموقع الجغرافي"</string>
@@ -471,7 +475,7 @@
<string name="zen_silence_introduction" msgid="6117517737057344014">"سيؤدي هذا إلى حظر جميع الأصوات والاهتزازات، بما في ذلك ما يرد من التنبيهات والموسيقى والفيديو والألعاب."</string>
<string name="notification_tap_again" msgid="4477318164947497249">"انقر مرة أخرى للفتح"</string>
<string name="tap_again" msgid="1315420114387908655">"انقر مرة أخرى"</string>
- <string name="keyguard_unlock" msgid="8031975796351361601">"التمرير إلى الأعلى لفتح القفل"</string>
+ <string name="keyguard_unlock" msgid="8031975796351361601">"مرِّر إلى الأعلى لفتح القفل"</string>
<string name="keyguard_unlock_press" msgid="9140109453735019209">"اضغط على رمز فتح القفل لفتح قفل الشاشة."</string>
<string name="keyguard_face_successful_unlock_swipe" msgid="6180997591385846073">"تم فتح قفل جهازك عند تقريبه من وجهك. مرِّر سريعًا للأعلى لفتح الجهاز."</string>
<string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"تم فتح القفل ببصمة وجهك. لفتح الجهاز، اضغط على رمز فتح القفل."</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"لا يدعم تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> ميزات المحادثات."</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"الملاحظات"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"إغلاق"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"عدم العرض كإشعار مثبَّت"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"عرض تغطية مباشرة للأخبار"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"تعرِض الإشعارات المثبَّتة معلومات مباشرة من التطبيقات، وتظهر دائمًا في شريط الحالة وعلى شاشة القفل"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"يتعذّر تعديل هذه الإشعارات."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"لا يمكن تعديل إشعارات المكالمات."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"يتعذّر ضبط مجموعة الإشعارات هذه هنا."</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"إظهار رموز الإشعارات ذات الأولوية المنخفضة"</string>
<string name="other" msgid="429768510980739978">"غير ذلك"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"إزالة بطاقة"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"إضافة مربّع إلى الموضع الأخير"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"نقل بطاقة"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"عرض التطبيقات المستخدَمة مؤخرًا"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"التبديل بين التطبيقات"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"تم"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"لعرض التطبيقات المستخدَمة مؤخرًا، مرِّر سريعًا للأعلى مع استمرار الضغط على لوحة اللمس باستخدام 3 أصابع"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"لعرض جميع التطبيقات، اضغط على مفتاح الإجراء في لوحة المفاتيح"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"إشعار مخفي"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"افتح القفل لعرض المعلومات"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"التعليم السياقي"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"استخدِم لوحة اللمس للرجوع"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"مرِّر سريعًا لليمين أو لليسار باستخدام 3 أصابع. انقر للتعرّف على المزيد من الإيماءات."</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 74c4e3e..784dfee 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ব্লুটুথ সংযোগ হ’ল।"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ব্লুটুথ ডিভাইচৰ চিহ্ন"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ডিভাইচৰ সবিশেষ কনফিগাৰ কৰিবলৈ ক্লিক কৰক"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"আটাইবোৰ ডিভাইচ চাবলৈ ক্লিক কৰক"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"নতুন ডিভাইচ পেয়াৰ কৰিবলৈ ক্লিক কৰক"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"বেটাৰীৰ চাৰ্জৰ শতাংশ অজ্ঞাত।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>ৰ লগত সংযোগ কৰা হ’ল।"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>ত সংযোগ হ’ল।"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ বাৰ্তালাপৰ সুবিধাসমূহ সমৰ্থন নকৰে"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"মতামত"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"অগ্ৰাহ্য কৰক"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"পিন কৰা হিচাপে নেদেখুৱাব"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"লাইভ আপডে’ট দেখুওৱা"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"পিন কৰি থোৱা জাননীসমূহে এপৰ পৰা লাইভ তথ্য দেখুৱায় আৰু সেয়া সদায় স্থিতি দণ্ড আৰু লক স্ক্ৰীনত ওলায়"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"এই জাননীসমূহ সংশোধন কৰিব নোৱাৰি।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"কলৰ জাননীসমূহ সংশোধন কৰিব নোৱাৰি।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"এই ধৰণৰ জাননীবোৰ ইয়াত কনফিগাৰ কৰিব পৰা নাযায়"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"কম গুৰুত্বপূৰ্ণ জাননীৰ আইকনসমূহ দেখুৱাওক"</string>
<string name="other" msgid="429768510980739978">"অন্যান্য"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"টাইল আঁতৰাবলৈ"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"অন্তিম স্থানত টাইল যোগ দিয়ক"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"টাইল স্থানান্তৰ কৰক"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"শেহতীয়া এপ্সমূহ চাওক"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"এপ্সমূহ সলনি কৰক"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"হ’ল"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"শেহতীয়া এপ্সমূহ চাবলৈ টাচ্চপেডখনত তিনিটা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"আপোনাৰ আটাইবোৰ এপ্ চাবলৈ আপোনাৰ কীব’ৰ্ডৰ কাৰ্য কীটোত টিপক"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"সম্পাদনা কৰা হৈছে"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"চাবলৈ আনলক কৰক"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"প্ৰাসংগিক শিক্ষা"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"উভতি যাবলৈ আপোনাৰ টাচ্চপেড ব্যৱহাৰ কৰক"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"তিনিটা আঙুলি ব্যৱহাৰ কৰি বাওঁফাললৈ বা সোঁফাললৈ ছোৱাইপ কৰক। অধিক নিৰ্দেশ শিকিবলৈ টিপক।"</string>
diff --git a/packages/SystemUI/res/values-as/tiles_states_strings.xml b/packages/SystemUI/res/values-as/tiles_states_strings.xml
index 68212e0..ba30c1e 100644
--- a/packages/SystemUI/res/values-as/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-as/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"অফ আছে"</item>
<item msgid="5908720590832378783">"অন আছে"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"উপলব্ধ নহয়"</item>
+ <item msgid="6641673879029894995">"অফ আছে"</item>
+ <item msgid="5806682401126108403">"অন আছে"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 4b316b6..20f3e37 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth qoşulub."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth cihazı ikonası"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Cihaz təfərrüatlarını konfiqurasiya etmək üçün klikləyin"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Bütün cihazları görmək üçün klikləyin"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Yeni cihazı birləşdirmək üçün klikləyin"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batareyanın faizi naməlumdur."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> üzərindən qoşuldu."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> cihazına qoşulub."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Giriş"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Eşitmə aparatları"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aktiv edilir..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Yuxarıdakı tətbiq tərəfindən idarə olunduğu üçün\n parlaqlığı tənzimləmək mümkün deyil"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Yuxarıdakı tətbiq tərəfindən idarə olunduğu üçün parlaqlığı tənzimləmək mümkün deyil"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Avtodönüş"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Ekranın avtomatik dönməsi"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Məkan"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> söhbət funksiyalarını dəstəkləmir"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Rəy"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Rədd edin"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Bərkidilmiş kimi göstərməyin"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Canlı güncəlləmələr göstərilir"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Bərkidilmiş bildirişlər tətbiqlərdəki canlı məlumatları göstərir, həmişə status panelində və kilidli ekranda görünür"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirişlər dəyişdirilə bilməz."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Zəng bildirişləri dəyişdirilə bilməz."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildiriş qrupunu burada konfiqurasiya etmək olmaz"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Çoxsaylı tapşırıq icrası"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Tətbiq sağda olmaqla bölünmüş ekranı istifadə edin"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Tətbiq solda olmaqla bölünmüş ekranı istifadə edin"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Tam ekran rejiminə keçin"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Bölünmüş ekran istifadə edərkən sağda və ya aşağıda tətbiqə keçin"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Bölünmüş ekran istifadə edərkən solda və ya yuxarıda tətbiqə keçin"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Bölünmüş ekran rejimində: tətbiqi birindən digərinə dəyişin"</string>
@@ -987,6 +991,8 @@
</string-array>
<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>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"lövhəni silin"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"son mövqeyə mozaik əlavə edin"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Lövhəni köçürün"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Son tətbiqlərə baxın"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Başqa tətbiqə keçin"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hazırdır"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Son tətbiqlərə baxmaq üçün taçpeddə üç barmağınızla yuxarı çəkib saxlayın"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Bütün tətbiqlərə baxmaq üçün klaviaturada fəaliyyət açarını basın"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Çıxarılıb"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Baxmaq üçün kiliddən çıxarın"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstual təhsil"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Geri qayıtmaq üçün taçped istifadə edin"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Üç barmaqla sola və ya sağa çəkin. Daha çox jest öyrənmək üçün toxunun."</string>
diff --git a/packages/SystemUI/res/values-az/tiles_states_strings.xml b/packages/SystemUI/res/values-az/tiles_states_strings.xml
index 696fad2..74b95e2 100644
--- a/packages/SystemUI/res/values-az/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-az/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Deaktiv"</item>
<item msgid="5908720590832378783">"Aktiv"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Əlçatan deyil"</item>
+ <item msgid="6641673879029894995">"Sönülü"</item>
+ <item msgid="5806682401126108403">"Yanılı"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 9a5bc49..69ebc70 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth je priključen."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona Bluetooth uređaja"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknite da biste konfigurisali detalje o uređaju"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Kliknite da biste videli sve uređaje"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Kliknite da biste uparili nov uređaj"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurišite detalje o uređaju"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Pogledajte sve uređaje"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Uparite novi uređaj"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Procenat napunjenosti baterije nije poznat."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Povezani ste sa <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Povezani smo sa uređajem <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Unos"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Slušni aparati"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Uključuje se..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ne možete da prilagodite osvetljenost jer je\n kontroliše aplikacija u vrhu"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ne možete da prilagodite osvetljenost jer je kontroliše aplikacija u vrhu"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatska rotacija"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatsko rotiranje ekrana"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Lokacija"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava funkcije konverzacije"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Povratne informacije"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Odbaci"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ne prikazuj kao zakačeno"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Prikazuju se novosti uživo"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Zakačena obaveštenja prikazuju informacije uživo iz aplikacija i uvek se pojavljuju na statusnoj traci i zaključanom ekranu"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ova obaveštenja ne mogu da se menjaju."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Obaveštenja o pozivima ne mogu da se menjaju."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ova grupa obaveštenja ne može da se konfiguriše ovde"</string>
@@ -900,7 +898,8 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Obavljanje više zadataka istovremeno"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Koristi podeljeni ekran sa aplikacijom s desne strane"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Koristi podeljeni ekran sa aplikacijom s leve strane"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Pređi na režim preko celog ekrana"</string>
+ <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Koristi prikaz preko celog ekrana"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Koristi prikaz za računare"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Pređi u aplikaciju zdesna ili ispod dok je podeljen ekran"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Pređite u aplikaciju sleva ili iznad dok koristite podeljeni ekran"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"U režimu podeljenog ekrana: zamena jedne aplikacije drugom"</string>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obaveštenja niskog prioriteta"</string>
<string name="other" msgid="429768510980739978">"Drugo"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklonili pločicu"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"dodali pločicu na poslednju poziciju"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premestite pločicu"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Prikaži nedavno korišćene aplikacije"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Pređi na drugu aplikaciju"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Dalje"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Da biste pregledali nedavne aplikacije, prevucite nagore i zadržite sa tri prsta na tačpedu"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Da biste pogledali sve aplikacije, pritisnite taster radnji na tastaturi"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redigovano"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Otključajte za prikaz"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstualno obrazovanje"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Koristite tačped za vraćanje nazad"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Prevucite ulevo ili udesno sa tri prsta. Dodirnite da biste videli više pokreta."</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml b/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml
index 3b99019..51b667c 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Isključeno"</item>
<item msgid="5908720590832378783">"Uključeno"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Nedostupno"</item>
+ <item msgid="6641673879029894995">"Isključeno"</item>
+ <item msgid="5806682401126108403">"Uključeno"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 5fc56bc..7c7c364 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth-сувязь."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Значок прылады з Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Націсніце, каб задаць падрабязныя налады прылады"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Націсніце, каб пабачыць усе прылады"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Націсніце, каб спалучыць новую прыладу"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Наладзіць звесткі пра прыладу"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Паглядзець усе прылады"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Спалучыць новую прыладу"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Працэнт зараду акумулятара невядомы."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Падлучаны да <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ёсць падключэнне да <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Увод"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слыхавыя апараты"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Уключэнне…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не ўдаецца адрэгуляваць яркасць, бо яна\nкантралюецца асноўнай праграмай"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не ўдаецца адрэгуляваць яркасць, бо янакантралюецца асноўнай праграмай"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Аўтапаварот"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Аўтаматычны паварот экрана"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Месцазнаходжанне"</string>
@@ -471,7 +472,7 @@
<string name="zen_silence_introduction" msgid="6117517737057344014">"Гэта заблакіруе ЎСЕ гукі і вібрацыі, у тым ліку ад будзільнікаў, музыкі, відэа і гульняў."</string>
<string name="notification_tap_again" msgid="4477318164947497249">"Дакраніцеся яшчэ раз, каб адкрыць"</string>
<string name="tap_again" msgid="1315420114387908655">"Націсніце яшчэ раз"</string>
- <string name="keyguard_unlock" msgid="8031975796351361601">"Каб адкрыць, прагарніце ўверх"</string>
+ <string name="keyguard_unlock" msgid="8031975796351361601">"Каб адкрыць, правядзіце пальцам уверх"</string>
<string name="keyguard_unlock_press" msgid="9140109453735019209">"Каб адкрыць, націсніце значок разблакіроўкі"</string>
<string name="keyguard_face_successful_unlock_swipe" msgid="6180997591385846073">"Твар распазнаны. Каб адкрыць, прагарніце ўверх."</string>
<string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Твар распазнаны. Для адкрыцця націсніце значок разблакіроўкі"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не падтрымлівае функцыі размовы"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Водгук"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Закрыць"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Не паказваць як замацаванае"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Паказ навін у рэальным часе"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Замацаваныя апавяшчэнні паказваюць актуальную інфармацыю з праграм і заўсёды з’яўляюцца на панэлі стану і экране блакіроўкі"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Гэтыя апавяшчэнні нельга змяніць."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Апавяшчэнні пра выклікі нельга змяніць."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Тут канфігурыраваць гэту групу апавяшчэнняў забаронена"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"Выкарыстоўваць поўнаэкранны рэжым"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Выкарыстоўваць версію для камп’ютараў"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Паказваць значкі апавяшчэнняў з нізкім прыярытэтам"</string>
<string name="other" msgid="429768510980739978">"Іншае"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"выдаліць плітку"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"дадаць плітку ў апошнюю пазіцыю"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Перамясціць плітку"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Прагляд нядаўніх праграм"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Пераключэнне праграм"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Гатова"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Далей"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Для прагляду нядаўніх праграм правядзіце па сэнсарнай панэлі трыма пальцамі ўверх і затрымайцеся"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Каб праглядзець усе праграмы, націсніце на клавішу дзеяння на клавіятуры"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Схавана"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Разблакіруйце экран, каб праглядзець"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Кантэкстнае навучанне"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Выкарыстайце сэнсарную панэль для вяртання"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Правядзіце ўлева ці ўправа трыма пальцамі. Націсніце, каб азнаёміцца з іншымі жэстамі."</string>
diff --git a/packages/SystemUI/res/values-be/tiles_states_strings.xml b/packages/SystemUI/res/values-be/tiles_states_strings.xml
index 9f520da9..cbbfe92 100644
--- a/packages/SystemUI/res/values-be/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-be/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Выключана"</item>
<item msgid="5908720590832378783">"Уключана"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Недаступна"</item>
+ <item msgid="6641673879029894995">"Выключана"</item>
+ <item msgid="5806682401126108403">"Уключана"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 339d751..0f2ab17 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth е включен."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Икона за устройство с Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Кликнете, за да конфигурирате подробностите за устройството"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Кликнете, за да видите всички устройства"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Кликнете за сдвояване на ново устройство"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Процентът на батерията е неизвестен."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Има връзка с <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Установена е връзка с/ъс <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Вход"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слухови апарати"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Включва се..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Яркостта не може да се коригира, защото се контролира\n от приложението на екрана"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Яркостта не може да се коригира, защото се контролира от приложението на екрана"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Авт. ориентация"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоматично завъртане на екрана"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Местоположение"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддържа функциите за разговор"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Отзиви"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Отхвърляне"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Без показване като фиксирано"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Показване на актуализации на живо"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Фиксираните известия показват информация в реално време от приложенията и винаги се показват в лентата на състоянието и на заключения екран"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Тези известия не могат да бъдат променяни."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Известията за обаждания не могат да бъдат променяни."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Тази група от известия не може да бъде конфигурирана тук"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Показване на иконите за известията с нисък приоритет"</string>
<string name="other" msgid="429768510980739978">"Друго"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"премахване на панел"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"добавяне на панела на последната позиция"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместване на панел"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Преглед на скорошните приложения"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Превключване на приложенията"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"За да прегледате скорошните приложения, плъзнете нагоре по сензорния панел с три пръста и задръжте"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"За да прегледате всичките си приложения, натиснете клавиша за действия на клавиатурата си"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Скрито"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Отключете за преглед"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контекстуално обучение"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Използвайте сензорния панел, за да се върнете назад"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Плъзнете три пръста наляво или надясно. Докоснете, за да научите повече жестове."</string>
diff --git a/packages/SystemUI/res/values-bg/tiles_states_strings.xml b/packages/SystemUI/res/values-bg/tiles_states_strings.xml
index e598f928..636585d 100644
--- a/packages/SystemUI/res/values-bg/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-bg/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Изкл."</item>
<item msgid="5908720590832378783">"Вкл."</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Не е налице"</item>
+ <item msgid="6641673879029894995">"Изкл."</item>
+ <item msgid="5806682401126108403">"Вкл."</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index ef1253b..10a1fd6 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ব্লুটুথ সংযুক্ত হয়েছে৷"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ব্লুটুথ ডিভাইসের আইকন"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ডিভাইসের বিবরণ কনফিগার করতে ক্লিক করুন"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"সব ডিভাইস দেখতে ক্লিক করুন"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"নতুন ডিভাইস পেয়ার করতে ক্লিক করুন"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ব্যাটারি কত শতাংশ আছে তা জানা যায়নি।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>এ সংযুক্ত হয়ে আছে।"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> এর সাথে সংযুক্ত৷"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ইনপুট"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"হিয়ারিং এড"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"চালু করা হচ্ছে…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"উজ্জ্বলতা টপ অ্যাপ নিয়ন্ত্রণ করায়\n এটিকে অ্যাডজাস্ট করা যাচ্ছে না"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"উজ্জ্বলতা টপ অ্যাপ নিয়ন্ত্রণ করায় এটিকে অ্যাডজাস্ট করা যাচ্ছে না"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"নিজে থেকে ঘুরবে"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"অটো-রোটেট স্ক্রিন"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"লোকেশন"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এ কথোপকথন ফিচার কাজ করে না"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"মতামত"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"বাতিল করুন"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"পিন করা হিসেবে দেখতে চাই না"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"লাইভ আপডেট দেখানো হচ্ছে"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"পিন করা বিজ্ঞপ্তিগুলি অ্যাপ থেকে লাইভ তথ্য দেখায় এবং তা সর্বদা স্ট্যাটাস বার ও লক স্ক্রিনে দেখানো হয়"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"এই বিজ্ঞপ্তিগুলি পরিবর্তন করা যাবে না।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"কল বিজ্ঞপ্তি পরিবর্তন করা যাবে না।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"এই সমস্ত বিজ্ঞপ্তিকে এখানে কনফিগার করা যাবে না"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"কম-গুরুত্বপূর্ণ বিজ্ঞপ্তির আইকন দেখুন"</string>
<string name="other" msgid="429768510980739978">"অন্যান্য"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"টাইল সরান"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"শেষ জায়গাতে টাইল যোগ করুন"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"টাইল সরান"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"সম্প্রতি ব্যবহার করা হয়েছে এমন অ্যাপ দেখুন"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"অ্যাপ পরিবর্তন করুন"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"হয়ে গেছে"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"সম্প্রতি ব্যবহার করা অ্যাপ দেখতে, টাচপ্যাডে তিনটি আঙুল ব্যবহার করে উপরের দিকে সোয়াইপ করে ধরে রাখুন"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"আপনার সব অ্যাপ দেখতে, কীবোর্ডে অ্যাকশন কী প্রেস করুন"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"রিড্যাক্ট করা হয়েছে"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"দেখার জন্য আনলক করুন"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"প্রাসঙ্গিক শিক্ষা"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"ফিরে যেতে টাচপ্যাড ব্যবহার করুন"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"তিনটি আঙুলের ব্যবহার করে ডান বা বাঁদিকে সোয়াইপ করুন। আরও জেসচার সম্পর্কে জানতে ট্যাপ করুন।"</string>
diff --git a/packages/SystemUI/res/values-bn/tiles_states_strings.xml b/packages/SystemUI/res/values-bn/tiles_states_strings.xml
index 38d9ee7..08231e4 100644
--- a/packages/SystemUI/res/values-bn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-bn/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"বন্ধ আছে"</item>
<item msgid="5908720590832378783">"চালু আছে"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"উপলভ্য নেই"</item>
+ <item msgid="6641673879029894995">"বন্ধ আছে"</item>
+ <item msgid="5806682401126108403">"চালু আছে"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index aa036d4..8eadd4d 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth je povezan."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona Bluetooth uređaja"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknite da konfigurirate detalje uređaja"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Pregled svih uređaja klikom"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Uparivanje novog uređaja klikom"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurirajte pojedinosti o uređaju"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Pogledajte sve uređaje"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Upari novi uređaj"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Postotak napunjenosti baterije nije poznat"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Povezan na <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Povezan na <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Ulaz"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Slušni aparati"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Uključivanje…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nije moguće podesiti osvijetljenost\n jer njome upravlja aplikacija pri vrhu"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nije moguće podesiti osvijetljenost jer njome upravlja aplikacija pri vrhu"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatsko rotiranje"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatsko rotiranje ekrana"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Lokacija"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava funkcije razgovora"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Povratne informacije"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Odbaci"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ne prikazuj kao zakačeno"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Prikazivanje novosti uživo"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Zakačena obavještenja prikazuju informacije uživo iz aplikacija i uvijek se prikazuju na statusnoj traci i zaključanom ekranu"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ta obavještenja se ne mogu izmijeniti."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Nije moguće izmijeniti obavještenja o pozivima."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ovu grupu obavještenja nije moguće konfigurirati ovdje"</string>
@@ -900,7 +898,8 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Korištenje podijeljenog ekrana s aplikacijom na desnoj strani"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Korištenje podijeljenog ekrana s aplikacijom na lijevoj strani"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Prelazak na prikaz preko cijelog ekrana"</string>
+ <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Upotreba prikaza na cijelom zaslonu"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Upotreba prikaza na računalu"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Prelazak u aplikaciju desno ili ispod uz podijeljeni ekran"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Pređite u aplikaciju lijevo ili iznad dok koristite podijeljeni ekran"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Za vrijeme podijeljenog ekrana: zamjena jedne aplikacije drugom"</string>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obavještenja niskog prioriteta"</string>
<string name="other" msgid="429768510980739978">"Ostalo"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklanjanje kartice"</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>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Prikaži nedavne aplikacije"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Promijenite aplikaciju"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Dalje"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Da pregledate nedavne aplikacije, prevucite nagore i zadržite s tri prsta na dodirnoj podlozi"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Da pregledate sve aplikacije, pritisnite tipku radnji na tastaturi"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redigovano"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Otključajte da pregledate"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstualno obrazovanje"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Koristite dodirnu podlogu da se vratite"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Prevucite ulijevo ili udesno s tri prsta. Dodirnite da naučite više pokreta."</string>
diff --git a/packages/SystemUI/res/values-bs/tiles_states_strings.xml b/packages/SystemUI/res/values-bs/tiles_states_strings.xml
index 3b99019..51b667c 100644
--- a/packages/SystemUI/res/values-bs/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-bs/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Isključeno"</item>
<item msgid="5908720590832378783">"Uključeno"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Nedostupno"</item>
+ <item msgid="6641673879029894995">"Isključeno"</item>
+ <item msgid="5806682401126108403">"Uključeno"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 15d9283..8e4da1d 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connectat."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icona de dispositiu Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Fes clic per configurar els detalls del dispositiu"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Fes clic per veure tots els dispositius"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Fes clic per vincular un dispositiu nou"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Es desconeix el percentatge de bateria."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"S\'ha connectat a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Està connectat amb <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audiòfons"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"S\'està activant…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"No es pot ajustar la brillantor perquè\n està controlada per l\'aplicació superior"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"No es pot ajustar la brillantor perquè està controlada per l\'aplicació superior"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Gira automàticament"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Gira la pantalla automàticament"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Ubicació"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admet les funcions de converses"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Suggeriments"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Ignora"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"No mostris com a fixat"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"S\'estan mostrant les actualitzacions en temps real"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Les notificacions fixades mostren informació en temps real de les aplicacions i sempre es mostren a la barra d\'estat i a la pantalla de bloqueig"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Aquestes notificacions no es poden modificar."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Les notificacions de trucades no es poden modificar."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquest grup de notificacions no es pot configurar aquí"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasca"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Utilitzar la pantalla dividida amb l\'aplicació a la dreta"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Utilitzar la pantalla dividida amb l\'aplicació a l\'esquerra"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Canviar a pantalla completa"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Canvia a l\'aplicació de la dreta o de sota amb la pantalla dividida"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Canvia a l\'aplicació de l\'esquerra o de dalt amb la pantalla dividida"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Durant el mode de pantalla dividida: substitueix una app per una altra"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostra les icones de notificació amb prioritat baixa"</string>
<string name="other" msgid="429768510980739978">"Altres"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"suprimir el mosaic"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"afegir una icona a la darrera posició"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mou el mosaic"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Mostra les aplicacions recents"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Canviar d\'aplicació"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fet"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Per veure les aplicacions recents, llisca cap amunt amb tres dits i mantén premut al ratolí tàctil"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Per veure totes les aplicacions, prem la tecla d\'acció al teclat"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Emmascarat"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Desbloqueja per veure"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educació contextual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Utilitza el ratolí tàctil per tornar enrere"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Fes lliscar tres dits cap a l\'esquerra o cap a la dreta. Toca per aprendre més gestos."</string>
diff --git a/packages/SystemUI/res/values-ca/tiles_states_strings.xml b/packages/SystemUI/res/values-ca/tiles_states_strings.xml
index e0c3fb9..3b0b9d7 100644
--- a/packages/SystemUI/res/values-ca/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ca/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Desactivat"</item>
<item msgid="5908720590832378783">"Activat"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"No disponible"</item>
+ <item msgid="6641673879029894995">"Desactivat"</item>
+ <item msgid="5806682401126108403">"Activat"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 031e59d..6d38055 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Rozhraní Bluetooth je připojeno."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona zařízení Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknutím nakonfigurujete podrobnosti o zařízení"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Kliknutím zobrazíte všechna zařízení"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Kliknutím spárujete nové zařízení"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Procento baterie není známé."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Připojeno k zařízení <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Jste připojeni k zařízení <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Vstup"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Naslouchátka"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Zapínání…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Jas nelze upravit, protože ho\n řídí hlavní aplikace"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Jas nelze upravit, protože ho řídí hlavní aplikace"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autom. otáčení"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatické otáčení obrazovky"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Poloha"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> funkce konverzace nepodporuje"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Zpětná vazba"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Zavřít"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Zobrazovat připnuté"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Zobrazování aktualit živě"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Připnutá oznámení zobrazují živé informace z aplikací a vždy se zobrazují na stavovém řádku a obrazovce uzamčení"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Tato oznámení nelze upravit."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Upozornění na hovor nelze upravit."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Tuto skupinu oznámení tady nelze nakonfigurovat"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Použít rozdělenou obrazovku s aplikací vpravo"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Použít rozdělenou obrazovku s aplikací vlevo"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Přepnout na celou obrazovku"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Přepnout na aplikaci vpravo nebo dole v režimu rozdělené obrazovky"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Přepnout na aplikaci vlevo nebo nahoře v režimu rozdělené obrazovky"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"V režimu rozdělené obrazovky: nahradit jednu aplikaci druhou"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Zobrazit ikony oznámení s nízkou prioritou"</string>
<string name="other" msgid="429768510980739978">"Jiné"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"odstranit dlaždici"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"přidat dlaždici na poslední pozici"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Přesunout dlaždici"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Zobrazit nedávné aplikace"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Přepnout aplikace"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hotovo"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Pokud chcete zobrazit poslední aplikace, přejeďte na touchpadu třemi prsty nahoru a podržte je"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Pokud chcete zobrazit všechny aplikace, stiskněte na klávesnici akční klávesu"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Odstraněno"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"K zobrazení je potřeba zařízení odemknout"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontextová výuka"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Návrat zpět pomocí touchpadu"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Přejeďte třemi prsty doleva nebo doprava. Další gesta zjistíte klepnutím."</string>
diff --git a/packages/SystemUI/res/values-cs/tiles_states_strings.xml b/packages/SystemUI/res/values-cs/tiles_states_strings.xml
index ea62773..4977032 100644
--- a/packages/SystemUI/res/values-cs/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-cs/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Vypnuto"</item>
<item msgid="5908720590832378783">"Zapnuto"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Nedostupné"</item>
+ <item msgid="6641673879029894995">"Vypnuto"</item>
+ <item msgid="5806682401126108403">"Zapnuto"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 1ddaf8c..a5801cb 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth tilsluttet."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikon for Bluetooth-enhed"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik for at konfigurere enhedsoplysninger"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Klik for at se alle enheder"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Klik for at parre en ny enhed"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batteriniveauet er ukendt."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Forbundet med <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Forbundet til <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Høreapparater"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aktiverer…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Lysstyrken kan ikke justeres, fordi den\n styres af den øverste app"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Lysstyrken kan ikke justeres, fordi den styres af den øverste app"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Roter automatisk"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Roter skærmen automatisk"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Lokation"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> understøtter ikke samtalefunktioner"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Luk"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Vis ikke som fastgjort"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Viser liveopdateringer"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Fastgjorte notifikationer viser liveoplysninger fra apps og vises altid på statusbjælken og låseskærmen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse notifikationer kan ikke redigeres."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Opkaldsnotifikationer kan ikke redigeres."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Du kan ikke konfigurere denne gruppe notifikationer her"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Brug opdelt skærm med appen til højre"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Brug opdelt skærm med appen til venstre"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Skift til fuld skærm"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Skift til en app til højre eller nedenfor, når du bruger opdelt skærm"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Skift til en app til venstre eller ovenfor, når du bruger opdelt skærm"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Ved opdelt skærm: Udskift én app med en anden"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Vis ikoner for notifikationer med lav prioritet"</string>
<string name="other" msgid="429768510980739978">"Andet"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjern felt"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"føj handlingsfeltet til den sidste position"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Flyt felt"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Se seneste apps"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Skift mellem apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Udfør"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Du kan se nyligt brugte apps ved at stryge opad og holde tre fingre nede på touchpladen"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Du kan se alle dine apps ved at trykke på handlingstasten på dit tastatur"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Skjult"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Lås op for at se"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstbaseret uddannelse"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Brug din touchplade til at gå tilbage"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Stryg til venstre eller højre med tre fingre. Tryk for at lære flere bevægelser."</string>
diff --git a/packages/SystemUI/res/values-da/tiles_states_strings.xml b/packages/SystemUI/res/values-da/tiles_states_strings.xml
index 2b1dbcf..af6dafb 100644
--- a/packages/SystemUI/res/values-da/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-da/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Fra"</item>
<item msgid="5908720590832378783">"Til"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Ikke tilgængelig"</item>
+ <item msgid="6641673879029894995">"Fra"</item>
+ <item msgid="5806682401126108403">"Til"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 16bbea1..132de74 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Mit Bluetooth verbunden"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Symbol des Bluetooth-Geräts"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klicke, um das Gerätedetail zu konfigurieren"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Klicken, um alle Geräte anzeigen zu lassen"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Klicken, um neues Gerät zu koppeln"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akkustand unbekannt."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Mit <xliff:g id="BLUETOOTH">%s</xliff:g> verbunden"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Verbunden mit <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Eingabe"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hörgerät"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Wird aktiviert…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Die Helligkeit kann nicht angepasst werden, weil sie\n von der obersten App gesteuert wird"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Die Helligkeit kann nicht angepasst werden, weil sie von der obersten App gesteuert wird"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autom. drehen"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Bildschirm automatisch drehen"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Standort"</string>
@@ -506,7 +510,7 @@
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Wische nach links, um das gemeinsame Tutorial zu starten"</string>
<string name="cta_tile_button_to_open_widget_editor" msgid="3871562362382963878">"Anpassen"</string>
<string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"Schließen"</string>
- <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Hier kannst du Widgets hinzufügen, entfernen und neu anordnen"</string>
+ <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Widgets hinzufügen, entfernen und neu anordnen"</string>
<string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"Weitere Widgets hinzufügen"</string>
<string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"Lange drücken, um Widgets anzupassen"</string>
<string name="button_to_configure_widgets_text" msgid="4191862850185256901">"Widgets anpassen"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> unterstützt keine Funktionen für Unterhaltungen"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Schließen"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Nicht als angepinnt anzeigen"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Livemeldungen werden angezeigt"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Aktuelle Informationen aus Apps werden als angeheftete Benachrichtigungen angezeigt, die immer in der Statusleiste und auf dem Sperrbildschirm erscheinen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Diese Benachrichtigungen können nicht geändert werden."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Anrufbenachrichtigungen können nicht geändert werden."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Die Benachrichtigungsgruppe kann hier nicht konfiguriert werden"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Splitscreen mit der App auf der rechten Seite nutzen"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Splitscreen mit der App auf der linken Seite nutzen"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"In den Vollbildmodus wechseln"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Im Splitscreen-Modus zu einer App rechts oder unten wechseln"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Im Splitscreen-Modus zu einer App links oder oben wechseln"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Im Splitscreen: eine App durch eine andere ersetzen"</string>
@@ -987,6 +991,8 @@
</string-array>
<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>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"Entfernen der Kachel"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"Kachel an letzter Position hinzufügen"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Kachel verschieben"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Letzte Apps aufrufen"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Zwischen Apps wechseln"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fertig"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Um zuletzt verwendete Apps aufzurufen, wische mit 3 Fingern nach oben und halte das Touchpad gedrückt"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Wenn du alle deine Apps aufrufen möchtest, drücke auf der Tastatur die Aktionstaste"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Entfernt"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Zum Ansehen entsperren"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontextbezogene Informationen"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Zum Zurückgehen Touchpad verwenden"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Wische mit drei Fingern nach links oder rechts. Tippe für mehr Infos zu Touch-Gesten."</string>
diff --git a/packages/SystemUI/res/values-de/tiles_states_strings.xml b/packages/SystemUI/res/values-de/tiles_states_strings.xml
index ded7efd..44734ae 100644
--- a/packages/SystemUI/res/values-de/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-de/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Aus"</item>
<item msgid="5908720590832378783">"An"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Nicht verfügbar"</item>
+ <item msgid="6641673879029894995">"Aus"</item>
+ <item msgid="5806682401126108403">"An"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 89c2cd2..a628e21 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Το Bluetooth είναι συνδεδεμένο."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Εικονίδιο συσκευής Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Κάντε κλικ για να διαμορφώσετε τις λεπτομέρειες συσκευής"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Κάντε κλικ για εμφάνιση όλων των συσκευών"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Κάντε κλικ για σύζευξη νέας συσκευής"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Άγνωστο ποσοστό μπαταρίας."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Συνδέθηκε στο <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Συνδέθηκε σε <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Είσοδος"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Βοηθήματα ακοής"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Ενεργοποίηση…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Δεν είναι δυνατή η προσαρμογή της φωτεινότητας, επειδή\n ελέγχεται από την εφαρμογή στην κορυφή"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Δεν είναι δυνατή η προσαρμογή της φωτεινότητας, επειδή ελέγχεται από την εφαρμογή στην κορυφή"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Αυτόματη περιστροφή"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Αυτόματη περιστροφή οθόνης"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Τοποθεσία"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν υποστηρίζει τις λειτουργίες συζήτησης"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Σχόλια"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Παράβλεψη"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Να μην φαίνεται καρφιτσωμένο"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Εμφανίζονται οι ενημερώσεις σε πραγματικό χρόνο"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Οι καρφιτσωμένες ειδοποιήσεις προβάλλουν ζωντανές πληροφορίες από εφαρμογές και εμφανίζονται πάντα στη γραμμή κατάστασης και στην οθόνη κλειδώματος"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Δεν είναι δυνατή η τροποποίηση αυτών των ειδοποιήσεων"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Δεν είναι δυνατή η τροποποίηση των ειδοποιήσεων κλήσεων."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Δεν είναι δυνατή η διαμόρφωση αυτής της ομάδας ειδοποιήσεων εδώ"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Εμφάνιση εικονιδίων ειδοποιήσεων χαμηλής προτεραιότητας"</string>
<string name="other" msgid="429768510980739978">"Άλλο"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"κατάργηση πλακιδίου"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"προσθήκη πλακιδίου στην τελευταία θέση"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Μετακίνηση πλακιδίου"</string>
@@ -1377,7 +1383,7 @@
<string name="bt_le_audio_broadcast_dialog_different_output" msgid="7885102097302562674">"Αλλαγή εξόδου"</string>
<string name="bt_le_audio_broadcast_dialog_unknown_name" msgid="3791472237793443044">"Άγνωστο"</string>
<string name="dream_time_complication_12_hr_time_format" msgid="4691197486690291529">"ώ:λλ"</string>
- <string name="dream_time_complication_24_hr_time_format" msgid="6248280719733640813">"kk:λλ"</string>
+ <string name="dream_time_complication_24_hr_time_format" msgid="6248280719733640813">"kk:mm"</string>
<string name="log_access_confirmation_title" msgid="4843557604739943395">"Να επιτρέπεται στο <xliff:g id="LOG_ACCESS_APP_NAME">%s</xliff:g> η πρόσβαση σε όλα τα αρχεία καταγραφής συσκευής;"</string>
<string name="log_access_confirmation_allow" msgid="752147861593202968">"Να επιτρέπεται η πρόσβαση για μία φορά"</string>
<string name="log_access_confirmation_deny" msgid="2389461495803585795">"Να μην επιτρέπεται"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Προβολή πρόσφατων εφαρμογών"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Εναλλαγή μεταξύ εφαρμογών"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Τέλος"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Για πρόσφατες εφαρμογές, σαρώστε προς τα πάνω με τρία δάχτυλα και κρατήστε τα στην επιφάνεια αφής"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Για να δείτε όλες τις εφαρμογές, πιέστε το πλήκτρο ενέργειας στο πληκτρολόγιό σας"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Αποκρύφτηκε"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Ξεκλείδωμα για προβολή"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Εκπαίδευση με βάση τα συμφραζόμενα"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Χρήση της επιφάνειας αφής για επιστροφή"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Σύρετε προς τα αριστερά ή τα δεξιά με τρία δάχτυλα. Πατήστε για να μάθετε περισσότερες κινήσεις."</string>
diff --git a/packages/SystemUI/res/values-el/tiles_states_strings.xml b/packages/SystemUI/res/values-el/tiles_states_strings.xml
index 398bf13..b649db4 100644
--- a/packages/SystemUI/res/values-el/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-el/tiles_states_strings.xml
@@ -47,7 +47,7 @@
<item msgid="287997784730044767">"Ενεργό"</item>
</string-array>
<string-array name="tile_states_battery">
- <item msgid="6311253873330062961">"Μη διαθέσιμο"</item>
+ <item msgid="6311253873330062961">"Μη διαθέσιμη"</item>
<item msgid="7838121007534579872">"Ανενεργό"</item>
<item msgid="1578872232501319194">"Ενεργό"</item>
</string-array>
@@ -118,7 +118,7 @@
</string-array>
<string-array name="tile_states_night">
<item msgid="7857498964264855466">"Μη διαθέσιμο"</item>
- <item msgid="2744885441164350155">"Ανενεργό"</item>
+ <item msgid="2744885441164350155">"Ανενεργός"</item>
<item msgid="151121227514952197">"Ενεργό"</item>
</string-array>
<string-array name="tile_states_screenrecord">
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Ανενεργό"</item>
<item msgid="5908720590832378783">"Ενεργό"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Μη διαθέσιμο"</item>
+ <item msgid="6641673879029894995">"Ανενεργό"</item>
+ <item msgid="5806682401126108403">"Ενεργό"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index af0703c..1b36a7c 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connected."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth device icon"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Click to configure device detail"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Click to see all devices"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Click to pair new device"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hearing aids"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Turning on…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being\n controlled by the top app"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being controlled by the top app"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Auto-rotate"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Auto-rotate screen"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Location"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Don\'t show as pinned"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Showing live updates"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Pinned notifications display live info from apps and always appear on the status bar and lock screen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multi-tasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Use split screen with app on the right"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Use split screen with app on the left"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Switch to full screen"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Switch to the app on the right or below while using split screen"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Switch to the app on the left or above while using split screen"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"During split screen: Replace an app from one to another"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Show low-priority notification icons"</string>
<string name="other" msgid="429768510980739978">"Other"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remove tile"</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>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Switch apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"To view recent apps, swipe up and hold with three fingers on the touchpad"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"To view all your apps, press the action key on your keyboard"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redacted"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Unlock to view"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Contextual education"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Use your touchpad to go back"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Swipe left or right using three fingers. Tap to learn more gestures."</string>
diff --git a/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml
index d62f2e5..e17eeb2 100644
--- a/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Off"</item>
<item msgid="5908720590832378783">"On"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Unavailable"</item>
+ <item msgid="6641673879029894995">"Off"</item>
+ <item msgid="5806682401126108403">"On"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index f171a78..c6ba039 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connected."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth device icon"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Click to configure device detail"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Click to see all devices"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Click to pair new device"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configure device detail"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"See all devices"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Pair new device"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hearing aids"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Turning on…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being\n controlled by the top app"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being controlled by the top app"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Auto-rotate"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Auto-rotate screen"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Location"</string>
@@ -897,7 +898,8 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Use split screen with app on the right"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Use split screen with app on the left"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Switch to full screen"</string>
+ <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Use full screen"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Use desktop view"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Switch to app on right or below while using split screen"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Switch to app on left or above while using split screen"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"During split screen: replace an app from one to another"</string>
@@ -984,6 +986,7 @@
</string-array>
<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_toggle_tile_size_action" msgid="1485194410119733586">"toggle the tile\'s size"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remove tile"</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>
@@ -1498,6 +1501,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Switch apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Next"</string>
<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>
@@ -1535,7 +1539,8 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"To view recent apps, swipe up and hold with three fingers on the touchpad"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"To view all your apps, press the action key on your keyboard"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redacted"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Unlock to view"</string>
+ <string name="public_notification_single_line_text" msgid="3576190291791654933">"Unlock to view"</string>
+ <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Unlock to view code"</string>
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Contextual education"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Use your touchpad to go back"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Swipe left or right using three fingers. Tap to learn more gestures."</string>
diff --git a/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml
index d62f2e5..e17eeb2 100644
--- a/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Off"</item>
<item msgid="5908720590832378783">"On"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Unavailable"</item>
+ <item msgid="6641673879029894995">"Off"</item>
+ <item msgid="5806682401126108403">"On"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index af0703c..1b36a7c 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connected."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth device icon"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Click to configure device detail"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Click to see all devices"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Click to pair new device"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hearing aids"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Turning on…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being\n controlled by the top app"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being controlled by the top app"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Auto-rotate"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Auto-rotate screen"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Location"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Don\'t show as pinned"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Showing live updates"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Pinned notifications display live info from apps and always appear on the status bar and lock screen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multi-tasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Use split screen with app on the right"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Use split screen with app on the left"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Switch to full screen"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Switch to the app on the right or below while using split screen"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Switch to the app on the left or above while using split screen"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"During split screen: Replace an app from one to another"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Show low-priority notification icons"</string>
<string name="other" msgid="429768510980739978">"Other"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remove tile"</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>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Switch apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"To view recent apps, swipe up and hold with three fingers on the touchpad"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"To view all your apps, press the action key on your keyboard"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redacted"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Unlock to view"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Contextual education"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Use your touchpad to go back"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Swipe left or right using three fingers. Tap to learn more gestures."</string>
diff --git a/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml
index d62f2e5..e17eeb2 100644
--- a/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Off"</item>
<item msgid="5908720590832378783">"On"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Unavailable"</item>
+ <item msgid="6641673879029894995">"Off"</item>
+ <item msgid="5806682401126108403">"On"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index af0703c..1b36a7c 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connected."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth device icon"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Click to configure device detail"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Click to see all devices"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Click to pair new device"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hearing aids"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Turning on…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being\n controlled by the top app"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being controlled by the top app"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Auto-rotate"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Auto-rotate screen"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Location"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Don\'t show as pinned"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Showing live updates"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Pinned notifications display live info from apps and always appear on the status bar and lock screen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multi-tasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Use split screen with app on the right"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Use split screen with app on the left"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Switch to full screen"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Switch to the app on the right or below while using split screen"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Switch to the app on the left or above while using split screen"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"During split screen: Replace an app from one to another"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Show low-priority notification icons"</string>
<string name="other" msgid="429768510980739978">"Other"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remove tile"</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>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Switch apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"To view recent apps, swipe up and hold with three fingers on the touchpad"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"To view all your apps, press the action key on your keyboard"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redacted"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Unlock to view"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Contextual education"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Use your touchpad to go back"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Swipe left or right using three fingers. Tap to learn more gestures."</string>
diff --git a/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml
index d62f2e5..e17eeb2 100644
--- a/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Off"</item>
<item msgid="5908720590832378783">"On"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Unavailable"</item>
+ <item msgid="6641673879029894995">"Off"</item>
+ <item msgid="5806682401126108403">"On"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 0e15e45..fbf01b8 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ícono de dispositivo Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Haz clic para configurar los detalles del dispositivo"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Haz clic para ver todos los dispositivos"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Haz clic para vincular un dispositivo nuevo"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Se desconoce el porcentaje de la batería."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -255,7 +259,7 @@
<string name="accessibility_not_connected" msgid="4061305616351042142">"No conectado"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desactivados"</string>
- <string name="accessibility_airplane_mode" msgid="1899529214045998505">"Modo de avión"</string>
+ <string name="accessibility_airplane_mode" msgid="1899529214045998505">"Modo avión."</string>
<string name="accessibility_vpn_on" msgid="8037549696057288731">"VPN activada"</string>
<string name="accessibility_battery_level" msgid="5143715405241138822">"Batería <xliff:g id="NUMBER">%d</xliff:g> por ciento"</string>
<string name="accessibility_battery_level_with_estimate" msgid="6548654589315074529">"Batería: <xliff:g id="PERCENTAGE">%1$d</xliff:g> por ciento; <xliff:g id="TIME">%2$s</xliff:g>"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audífonos"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activando…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"La app superior controla el brillo,\npor lo que no se puede ajustar"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"La app superior controla el brillo,por lo que no se puede ajustar"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Giro automático"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Girar la pantalla automáticamente"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Ubicación"</string>
@@ -754,7 +758,7 @@
<string name="qr_code_scanner_title" msgid="1938155688725760702">"Escáner de código QR"</string>
<string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Actualizando"</string>
<string name="status_bar_work" msgid="5238641949837091056">"Perfil de trabajo"</string>
- <string name="status_bar_airplane" msgid="4848702508684541009">"Modo de avión"</string>
+ <string name="status_bar_airplane" msgid="4848702508684541009">"Modo avión"</string>
<string name="status_bar_supervision" msgid="6735015942701134125">"Controles parentales"</string>
<string name="zen_alarm_warning" msgid="7844303238486849503">"No oirás la próxima alarma a la(s) <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template" msgid="2234991538018805736">"a la(s) <xliff:g id="WHEN">%1$s</xliff:g>"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Comentarios"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Descartar"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"No mostrar como fijado"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Se muestran las novedades en tiempo real"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Las notificaciones fijadas muestran información en tiempo real de las apps y siempre aparecen en la barra de estado y la pantalla de bloqueo"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"No se pueden modificar estas notificaciones."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"No se pueden modificar las notificaciones de llamada."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"No se puede configurar aquí este grupo de notificaciones"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Tareas múltiples"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar la pantalla dividida con la app a la derecha"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar la pantalla dividida con la app a la izquierda"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Cambiar a pantalla completa"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Ubicar la app a la derecha o abajo cuando usas la pantalla dividida"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Ubicar la app a la izquierda o arriba cuando usas la pantalla dividida"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Durante pantalla dividida: Reemplaza una app con otra"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar íconos de notificaciones con prioridad baja"</string>
<string name="other" msgid="429768510980739978">"Otros"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar tarjeta"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"agregar tarjeta a la última posición"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover la tarjeta"</string>
@@ -1329,7 +1335,7 @@
<string name="see_all_networks" msgid="3773666844913168122">"Ver todo"</string>
<string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"Para cambiar de red, desconéctate de Ethernet"</string>
<string name="wifi_scan_notify_message" msgid="3753839537448621794">"Para mejorar la experiencia con el dispositivo, las apps y los servicios pueden seguir buscando redes Wi-Fi en cualquier momento, incluso cuando la conexión Wi-Fi esté desactivada. Puedes cambiar este parámetro en la configuración de búsqueda de Wi-Fi. "<annotation id="link">"Cambiar"</annotation></string>
- <string name="turn_off_airplane_mode" msgid="8425587763226548579">"Desactivar el modo de avión"</string>
+ <string name="turn_off_airplane_mode" msgid="8425587763226548579">"Desactivar el modo avión"</string>
<string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> quiere agregar la siguiente tarjeta a la Configuración rápida"</string>
<string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Agregar tarjeta"</string>
<string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"No agregar tarjeta"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver apps recientes"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Cambiar de app"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Listo"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Para ver las apps recientes, desliza hacia arriba con tres dedos y mantén presionado el panel táctil"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para ver todas las apps, presiona la tecla de acción en el teclado"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Oculto"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Desbloquea el dispositivo para ver"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educación contextual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Usa el panel táctil para ir hacia atrás"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Desliza hacia la izquierda o la derecha con tres dedos. Presiona para aprender más gestos."</string>
diff --git a/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml b/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml
index d835483..91f5f88 100644
--- a/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Desactivado"</item>
<item msgid="5908720590832378783">"Activado"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"No disponible"</item>
+ <item msgid="6641673879029894995">"No"</item>
+ <item msgid="5806682401126108403">"Sí"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 1670ce6..0af9fbf 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icono de dispositivo Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Haz clic para configurar la información del dispositivo"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Haz clic para ver todos los dispositivos"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Haz clic para emparejar un nuevo dispositivo"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Porcentaje de batería desconocido."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audífonos"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activando…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"No se puede ajustar el brillo porque la aplicación superior lo está\n controlando"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"No se puede ajustar el brillo porque la aplicación superior lo está controlando"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Giro automático"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Girar pantalla automáticamente"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Ubicación"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Comentarios"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Cerrar"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"No mostrar como fijadas"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Se mostrarán las novedades en directo"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Las notificaciones fijadas muestran información en tiempo real de las aplicaciones y aparecen siempre en la barra de estado y en la pantalla de bloqueo"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificaciones no se pueden modificar."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Las notificaciones de llamada no se pueden modificar."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Este grupo de notificaciones no se puede configurar aquí"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitarea"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar la pantalla dividida con la aplicación a la derecha"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar la pantalla dividida con la aplicación a la izquierda"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Cambiar a pantalla completa"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Cambiar a la aplicación de la derecha o de abajo en pantalla dividida"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Cambiar a la app de la izquierda o de arriba en pantalla dividida"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Con pantalla dividida: reemplazar una aplicación por otra"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar iconos de notificaciones con prioridad baja"</string>
<string name="other" msgid="429768510980739978">"Otros"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar recuadro"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"añadir el recuadro a la última posición"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover recuadro"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver aplicaciones recientes"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Cambiar de aplicación"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hecho"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Para ver las aplicaciones recientes, desliza hacia arriba y mantén pulsado el panel táctil con tres dedos"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para ver todas tus aplicaciones, pulsa la tecla de acción de tu teclado"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Oculta"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Desbloquea para ver"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educación contextual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Usa el panel táctil para volver atrás"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Desliza hacia la izquierda o hacia la derecha con tres dedos. Toca para aprender a usar más gestos."</string>
diff --git a/packages/SystemUI/res/values-es/tiles_states_strings.xml b/packages/SystemUI/res/values-es/tiles_states_strings.xml
index ea75e52..c5b6c2e 100644
--- a/packages/SystemUI/res/values-es/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-es/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Desactivado"</item>
<item msgid="5908720590832378783">"Activado"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"No disponible"</item>
+ <item msgid="6641673879029894995">"Desactivado"</item>
+ <item msgid="5806682401126108403">"Activado"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 445b540..bb77e96 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth on ühendatud."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth-seadme ikoon"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klõpsake seadme üksikasjade konfigureerimiseks"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Kõigi seadmete kuvamiseks klõpsake"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Uue seadme sidumiseks klõpsake"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Aku laetuse protsent on teadmata."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ühendatud: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ühendatud ülekandega <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Sisend"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Kuuldeaparaadid"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Sisselülitamine …"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Heledust ei saa reguleerida, kuna seda\n juhib ülemine rakendus"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Heledust ei saa reguleerida, kuna seda juhib ülemine rakendus"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autom. pööramine"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Kuva automaatne pööramine"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Asukoht"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei toeta vestlusfunktsioone"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Tagasiside"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Loobu"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ära kuva kinnitatuna"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Kuvatakse reaalajas värskendusi"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Kinnitatud märguanded näitavad rakendustest pärinevat reaalajas teavet ning kuvatakse alati olekuribal ja lukustuskuval"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Neid märguandeid ei saa muuta."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Kõnemärguandeid ei saa muuta."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Seda märguannete rühma ei saa siin seadistada"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitegumtöö"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Jagatud ekraanikuva kasutamine, rakendus kuvatakse paremal"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Jagatud ekraanikuva kasutamine, rakendus kuvatakse vasakul"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Täisekraanile lülitamine"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Paremale või alumisele rakendusele lülitamine jagatud ekraani ajal"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Vasakule või ülemisele rakendusele lülitamine jagatud ekraani ajal"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Ekraanikuva jagamise ajal: ühe rakenduse asendamine teisega"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Kuva madala prioriteediga märguande ikoonid"</string>
<string name="other" msgid="429768510980739978">"Muu"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"paani eemaldamiseks"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"lisage paan viimasesse asukohta"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Teisalda paan"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Hiljutiste rakenduste vaatamine"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Rakenduste vahetamine"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Valmis"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Hiljutiste rakenduste kuvamiseks pühkige puuteplaadil kolme sõrmega üles ja hoidke sõrmi puuteplaadil."</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Kõigi oma rakenduste kuvamiseks vajutage klaviatuuril toiminguklahvi"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Peidetud"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Vaatamiseks avage"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstipõhised õpetused"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Puuteplaadi kasutamine tagasiliikumiseks"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Pühkige kolme sõrmega vasakule või paremale. Puudutage liigutuste kohta lisateabe saamiseks."</string>
diff --git a/packages/SystemUI/res/values-et/tiles_states_strings.xml b/packages/SystemUI/res/values-et/tiles_states_strings.xml
index a9f0880..e9949bf 100644
--- a/packages/SystemUI/res/values-et/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-et/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Väljas"</item>
<item msgid="5908720590832378783">"Sees"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Pole saadaval"</item>
+ <item msgid="6641673879029894995">"Väljas"</item>
+ <item msgid="5806682401126108403">"Sees"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 1f7d697..cb8e034 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetootha konektatuta."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth bidezko gailuaren ikonoa"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Gailuaren xehetasuna konfiguratzeko, sakatu hau"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Egin klik gailu guztiak ikusteko"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Egin klik beste gailu bat parekatzeko"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Bateriaren ehunekoa ezezaguna da."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> gailura konektatuta."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Hona konektatuta: <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Sarrera"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audifonoak"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aktibatzen…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ezin da doitu argitasuna,\ngaineko aplikazioak kontrolatzen duelako"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ezin da doitu argitasuna,gaineko aplikazioak kontrolatzen duelako"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Biratze automatikoa"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Biratu pantaila automatikoki"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Kokapena"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak ez ditu onartzen elkarrizketetarako eginbideak"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Iritzia"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Baztertu"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ez erakutsi ainguratutako gisa"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Zuzeneko informazioa dago ikusgai"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Ainguratutako jakinarazpenek istantean bistaratzen dute aplikazioetako informazioa, eta egoera-barran nahiz pantaila blokeatuan agertzen dira beti"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Jakinarazpen horiek ezin dira aldatu."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Deien jakinarazpenak ezin dira aldatu."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Jakinarazpen talde hau ezin da konfiguratu hemen"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Zeregin bat baino gehiago aldi berean exekutatzea"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Erabili pantaila zatitua eta ezarri aplikazio hau eskuinean"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Erabili pantaila zatitua eta ezarri aplikazio hau ezkerrean"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Aldatu pantaila osora"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Aldatu eskuineko edo beheko aplikaziora pantaila zatitua erabiltzean"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Aldatu ezkerreko edo goiko aplikaziora pantaila zatitua erabiltzean"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Pantaila zatituan zaudela, ordeztu aplikazio bat beste batekin"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Erakutsi lehentasun txikiko jakinarazpenen ikonoak"</string>
<string name="other" msgid="429768510980739978">"Beste bat"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"kendu lauza"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"gehitu lauza azken posizioan"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mugitu lauza"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ikusi azkenaldiko aplikazioak"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Aldatu aplikazioa"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Eginda"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Azkenaldiko aplikazioak ikusteko, pasatu 3 hatz ukipen-panelean gora eta eduki sakatuta"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Aplikazio guztiak ikusteko, sakatu teklatuko ekintza-tekla"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Desitxuratuta"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Desblokeatu ikusteko"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Testuinguruaren araberako hezkuntza"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Erabili ukipen-panela atzera egiteko"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Pasatu 3 hatz ezkerrera edo eskuinera. Sakatu keinu gehiago ikasteko."</string>
diff --git a/packages/SystemUI/res/values-eu/tiles_states_strings.xml b/packages/SystemUI/res/values-eu/tiles_states_strings.xml
index 62bbc27..e47b658 100644
--- a/packages/SystemUI/res/values-eu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-eu/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Desaktibatuta"</item>
<item msgid="5908720590832378783">"Aktibatuta"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Ez dago erabilgarri"</item>
+ <item msgid="6641673879029894995">"Desaktibatuta"</item>
+ <item msgid="5806682401126108403">"Aktibatuta"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index c9392e3..7fd5551 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"بلوتوث متصل است."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"نماد دستگاه بلوتوث"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"برای پیکربندی جزئیات دستگاه کلیک کنید"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"برای دیدن همه دستگاهها، کلیک کنید"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"برای جفت کردن دستگاه جدید، کلیک کنید"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"درصد شارژ باتری مشخص نیست."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"به <xliff:g id="BLUETOOTH">%s</xliff:g> متصل شد."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"به <xliff:g id="CAST">%s</xliff:g> متصل شد."</string>
@@ -306,7 +310,7 @@
<string name="pair_new_bluetooth_devices" msgid="4601767620843349645">"جفت کردن دستگاه جدید"</string>
<string name="see_all_bluetooth_devices" msgid="1761596816620200433">"دیدن همه"</string>
<string name="turn_on_bluetooth" msgid="5681370462180289071">"استفاده از بلوتوث"</string>
- <string name="quick_settings_bluetooth_device_connected" msgid="7884777006729260996">"متصل"</string>
+ <string name="quick_settings_bluetooth_device_connected" msgid="7884777006729260996">"وصلشده"</string>
<string name="quick_settings_bluetooth_device_audio_sharing" msgid="1496358082943301670">"اشتراک صدا"</string>
<string name="quick_settings_bluetooth_device_audio_sharing_or_switch_active" msgid="8680997711431098238">"از اشتراک صدا پشتیبانی میکند"</string>
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"ذخیرهشده"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ورودی"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"سمعک"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"روشن کردن…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"نمیتوان روشنایی را تنظیم کرد زیرا\n برنامه بالایی آن را کنترل میکند"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"نمیتوان روشنایی را تنظیم کرد زیرا برنامه بالایی آن را کنترل میکند"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"چرخش خودکار"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"چرخش خودکار صفحهنمایش"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"مکان"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> از ویژگیهای مکالمه پشتیبانی نمیکند"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"بازخورد"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"بستن"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"سنجاقشده نشان داده نشود"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"نمایش «بهروزرسانیهای زنده»"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"اعلانهای سنجاقشده اطلاعات زنده را از برنامهها نمایش میدهند، و همیشه در نوار وضعیت و صفحه قفل نشان داده میشوند"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"این اعلانها قابل اصلاح نیستند."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"این اعلانها قابلاصلاح نیستند."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"نمیتوانید این گروه اعلانها را در اینجا پیکربندی کنید"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"نمایش نمادهای اعلان کماهمیت"</string>
<string name="other" msgid="429768510980739978">"موارد دیگر"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"برداشتن کاشی"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"افزودن کاشی به آخرین جایگاه"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"انتقال کاشی"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"مشاهده برنامههای اخیر"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"جابهجایی بین برنامهها"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"تمام"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"برای مشاهده برنامههای اخیر، در صفحه لمسی با سه انگشت تند بهبالا بکشید و نگه دارید"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"برای مشاهده همه برنامهها، دکمه کنش در صفحهکلید را فشار دهید"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"محوشده"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"برای مشاهده، قفل را باز کنید"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"آموزش زمینهای"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"برای برگشتن از صفحه لمسی استفاده کنید"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"با سه انگشت تند بهچپ یا راست بکشید. برای آشنایی با اشارههای بیشتر، تکضرب بزنید."</string>
diff --git a/packages/SystemUI/res/values-fa/tiles_states_strings.xml b/packages/SystemUI/res/values-fa/tiles_states_strings.xml
index edc2d41..1025f3d 100644
--- a/packages/SystemUI/res/values-fa/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fa/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"خاموش"</item>
<item msgid="5908720590832378783">"روشن"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"دردسترس نیست"</item>
+ <item msgid="6641673879029894995">"خاموش"</item>
+ <item msgid="5806682401126108403">"روشن"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 96162b2..647134f 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -247,8 +247,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth yhdistetty."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth-laitekuvake"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Määritä laitteen asetukset klikkaamalla"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Katso kaikki laitteet klikkaamalla"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Muodosta uusi laitepari klikkaamalla"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akun varaustaso ei tiedossa."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Yhteys: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Yhdistetty kohteeseen <xliff:g id="CAST">%s</xliff:g>"</string>
@@ -330,7 +334,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Syöttölaite"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Kuulolaitteet"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Otetaan käyttöön…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kirkkautta ei voi säätää, koska \n ensisijainen sovellus ohjaa sitä"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kirkkautta ei voi säätää, koska ensisijainen sovellus ohjaa sitä"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automaattinen kääntö"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Käännä näyttöä automaattisesti."</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Sijainti"</string>
@@ -810,12 +814,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei tue keskusteluominaisuuksia"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Palaute"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Hylkää"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Älä näytä kiinnitettynä"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Näytetään livepäivitykset"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Kiinnitetyissä ilmoituksissa näytetään livetietoja sovelluksista, ja ilmoitukset näkyvät aina tilapalkissa ja lukitusnäytöllä"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Näitä ilmoituksia ei voi muokata"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Puheluilmoituksia ei voi muokata."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Tätä ilmoitusryhmää ei voi määrittää tässä"</string>
@@ -902,7 +903,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitaskaus"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Käytä jaettua näyttöä niin, että sovellus on oikealla"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Käytä jaettua näyttöä niin, että sovellus on vasemmalla"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Koko näytölle siirtyminen"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Vaihda sovellukseen oikealla tai alapuolella jaetussa näytössä"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Vaihda sovellukseen vasemmalla tai yläpuolella jaetussa näytössä"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Jaetun näytön aikana: korvaa sovellus toisella"</string>
@@ -989,6 +993,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Näytä vähemmän tärkeät ilmoituskuvakkeet"</string>
<string name="other" msgid="429768510980739978">"Muu"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"poista kiekko"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"lisää laatta viimeiseen kohtaan"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Siirrä kiekkoa"</string>
@@ -1331,7 +1337,7 @@
<string name="see_all_networks" msgid="3773666844913168122">"Näytä kaikki"</string>
<string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"Irrota Ethernet-johto, jos haluat vaihtaa verkkoa"</string>
<string name="wifi_scan_notify_message" msgid="3753839537448621794">"Laitteen käyttökokemuksen parantamiseksi sovellukset ja palvelut voivat hakea Wi-Fi-verkkoja myös silloin, kun Wi-Fi on pois päältä. Voit muuttaa asetusta Wi-Fi-haun asetuksissa. "<annotation id="link">"Muuta"</annotation></string>
- <string name="turn_off_airplane_mode" msgid="8425587763226548579">"Laita lentokonetila pois päältä"</string>
+ <string name="turn_off_airplane_mode" msgid="8425587763226548579">"Lentokonetila pois"</string>
<string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> haluaa lisätä seuraavan laatan pika-asetuksiin"</string>
<string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Lisää laatta"</string>
<string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"Älä lisää laattaa"</string>
@@ -1503,6 +1509,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Katso viimeisimmät sovellukset"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Vaihda sovellusta"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Valmis"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1540,7 +1548,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Näet äskeiset sovellukset, kun pyyhkäiset ylös ja pidät kosketuslevyä painettuna kolmella sormella."</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Jos haluat nähdä kaikki sovellukset, paina näppäimistön toimintonäppäintä"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Sensuroitu"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Avaa lukitus ja katso tiedot"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstuaalinen koulutus"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Takaisin siirtyminen kosketuslevyn avulla"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Pyyhkäise vasemmalle tai oikealle kolmella sormella. Lue lisää eleistä napauttamalla."</string>
diff --git a/packages/SystemUI/res/values-fi/tiles_states_strings.xml b/packages/SystemUI/res/values-fi/tiles_states_strings.xml
index 6b1a8ed..5452f26 100644
--- a/packages/SystemUI/res/values-fi/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fi/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Pois päältä"</item>
<item msgid="5908720590832378783">"Päällä"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Ei saatavilla"</item>
+ <item msgid="6641673879029894995">"Pois päältä"</item>
+ <item msgid="5806682401126108403">"Päällä"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 8fd2ed2..299f5a5 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connecté"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icône de l\'appareil Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Cliquez pour configurer les détails de l\'appareil"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Cliquez ici pour voir tous les appareils"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Cliquez ici pour associer un nouvel appareil"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Pourcentage de la pile inconnu."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connecté à : <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connecté à <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrée"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Prothèses auditives"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activation en cours…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Impossible de régler la luminosité, car elle est\n contrôlée par l\'appli principale"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Impossible de régler la luminosité, car elle est contrôlée par l\'appli principale"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotation auto"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotation automatique de l\'écran"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Localisation"</string>
@@ -506,7 +510,7 @@
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Balayer l\'écran vers la gauche pour démarrer le tutoriel communautaire"</string>
<string name="cta_tile_button_to_open_widget_editor" msgid="3871562362382963878">"Personnaliser"</string>
<string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"Fermer"</string>
- <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Ajouter, retirer et réorganiser vos widgets dans cet espace"</string>
+ <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Ajouter, retirer et réorganiser vos widgets dans cet espace"</string>
<string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"Ajouter plus de widgets"</string>
<string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"Appuyez longuement pour personnaliser les widgets"</string>
<string name="button_to_configure_widgets_text" msgid="4191862850185256901">"Personnaliser les widgets"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ne prend pas en charge les fonctionnalités de conversation"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Commentaires"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Fermer"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ne pas afficher comme épinglé"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Affichage des mises à jour en direct"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Les notifications épinglées affichent des informations en direct des applis et apparaissent toujours sur la barre d\'état et l\'écran de verrouillage"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ces notifications ne peuvent pas être modifiées"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Les notifications d\'appel ne peuvent pas être modifiées."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ce groupe de notifications ne peut pas être configuré ici"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitâche"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Utiliser l\'Écran divisé avec l\'appli à droite"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Utiliser l\'Écran divisé avec l\'appli à gauche"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Passer au mode plein écran"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Passer à l\'appli à droite ou en dessous avec l\'Écran divisé"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Passer à l\'appli à gauche ou au-dessus avec l\'Écran divisé"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"En mode d\'écran divisé : remplacer une appli par une autre"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Afficher les icônes de notification de faible priorité"</string>
<string name="other" msgid="429768510980739978">"Autre"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"retirer la tuile"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"Ajouter une tuile à la dernière position"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Déplacer la tuile"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Afficher les applis récentes"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Changer d\'appli"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"OK"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Pour afficher les applis récentes, balayez l\'écran vers le haut avec trois doigts sur le pavé tactile et maintenez-les en place"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Pour afficher toutes vos applis, appuyez sur la touche d\'action de votre clavier"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Supprimé"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Déverrouiller pour afficher"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Enseignement contextuel"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Utiliser votre pavé tactile pour revenir en arrière"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Balayez vers la gauche ou vers la droite avec trois doigts. Touchez pour apprendre d\'autres gestes."</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 4734d86..e9d3c48 100644
--- a/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Désactivée"</item>
<item msgid="5908720590832378783">"Activée"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Non accessible"</item>
+ <item msgid="6641673879029894995">"Désactivé"</item>
+ <item msgid="5806682401126108403">"Activé"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 89002d4..a4fa4d0 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connecté"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icône de l\'appareil Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Cliquer pour configurer les détails de l\'appareil"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Cliquer pour afficher tous les appareils"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Cliquer pour associer un nouvel appareil"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configurez les détails de l\'appareil"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Voir tous les appareils"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Associer un nouvel appareil"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Pourcentage de la batterie inconnu."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connecté à : <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connecté à <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrée"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Appareils auditifs"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activation…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Impossible d\'ajuster la luminosité, car celle-ci\n est contrôlée par l\'appli principale"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Impossible d\'ajuster la luminosité, car celle-ci est contrôlée par l\'appli principale"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotation auto"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotation automatique de l\'écran"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Localisation"</string>
@@ -354,7 +355,7 @@
<string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversion des couleurs"</string>
<string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Correction des couleurs"</string>
<string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Taille de la police"</string>
- <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gérer utilisateurs"</string>
+ <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gérer les utilisateurs"</string>
<string name="quick_settings_done" msgid="2163641301648855793">"OK"</string>
<string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Fermer"</string>
<string name="quick_settings_connected" msgid="3873605509184830379">"Connecté"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas compatible avec les fonctionnalités de conversation"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Commentaires"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Ignorer"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ne pas afficher comme épinglé"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Affichage des infos en direct"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Les notifications épinglées affichent des informations en direct provenant d\'applis et apparaissent toujours dans la barre d\'état et sur l\'écran de verrouillage"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossible de modifier ces notifications."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Impossible de modifier les notifications d\'appel."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Vous ne pouvez pas configurer ce groupe de notifications ici"</string>
@@ -900,7 +898,8 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitâche"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Utiliser l\'écran partagé avec l\'appli sur la droite"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Utiliser l\'écran partagé avec l\'appli sur la gauche"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Passer en plein écran"</string>
+ <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Utiliser le mode plein écran"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Utiliser l\'affichage sur ordinateur"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Passer à l\'appli à droite ou en dessous avec l\'écran partagé"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Passez à l\'appli à gauche ou au-dessus avec l\'écran partagé"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"En mode écran partagé : Remplacer une appli par une autre"</string>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Afficher les icônes de notification à faible priorité"</string>
<string name="other" msgid="429768510980739978">"Autre"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"supprimer le bloc"</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>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Afficher les applis récentes"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Passer d\'une application à l\'autre"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"OK"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Suivant"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Pour afficher les applis récentes, balayez vers le haut avec trois doigts sur le pavé tactile et maintenez-les."</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Pour afficher toutes vos applis, appuyez sur la touche d\'action de votre clavier"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Masqué"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Déverrouiller pour afficher"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Éducation contextuelle"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Utilisez votre pavé tactile pour revenir en arrière"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Balayez vers la gauche ou la droite en utilisant trois doigts. Appuyez pour apprendre d\'autres gestes."</string>
diff --git a/packages/SystemUI/res/values-fr/tiles_states_strings.xml b/packages/SystemUI/res/values-fr/tiles_states_strings.xml
index cefc9a2..52c7c0c 100644
--- a/packages/SystemUI/res/values-fr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fr/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Désactivé"</item>
<item msgid="5908720590832378783">"Activé"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Indisponible"</item>
+ <item msgid="6641673879029894995">"Désactivé"</item>
+ <item msgid="5806682401126108403">"Activé"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 4e801ee..82ba5dc 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icona do dispositivo Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Facer clic para configurar os detalles do dispositivo"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Facer clic para ver todos os dispositivos"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Facer clic para vincular un novo dispositivo"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Descoñécese a porcentaxe da batería."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Dispositivo conectado: <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audiófonos"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activando…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Non se pode axustar o brillo\n porque o controla a aplicación principal"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Non se pode axustar o brillo porque o controla a aplicación principal"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Xirar automaticamente"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Xirar pantalla automaticamente"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Localización"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non admite funcións de conversa"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Comentarios"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Pechar"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Non mostrar como fixadas"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Mostrando novidades en tempo real"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"As notificacións fixadas mostrarán a información en tempo real das aplicacións e aparecerán sempre na barra de estado e na pantalla de bloqueo"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificacións non se poden modificar."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"As notificacións de chamadas non se poden modificar."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquí non se pode configurar este grupo de notificacións"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitarefa"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar pantalla dividida coa aplicación na dereita"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar pantalla dividida coa aplicación na esquerda"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Cambiar a pantalla completa"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Cambiar á aplicación da dereita ou de abaixo coa pantalla dividida"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Cambiar á aplicación da esquerda ou de arriba coa pantalla dividida"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"En modo de pantalla dividida: Substituír unha aplicación por outra"</string>
@@ -987,6 +991,8 @@
</string-array>
<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>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar tarxeta"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"engadir o atallo á última posición"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover tarxeta"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Consultar aplicacións recentes"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Cambiar de aplicación"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Feito"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Para ver as aplicacións recentes, pasa tres dedos cara arriba no panel táctil e mantenos premidos"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para ver todas as aplicacións, preme a tecla de acción do teclado"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Contido ocultado"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Desbloquea o dispositivo para ver o contido"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Información contextual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Usa o panel táctil para volver"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Pasa tres dedos cara á esquerda ou cara á dereita. Toca para obter máis información sobre os xestos."</string>
diff --git a/packages/SystemUI/res/values-gl/tiles_states_strings.xml b/packages/SystemUI/res/values-gl/tiles_states_strings.xml
index bfd6a12..7cf5f82 100644
--- a/packages/SystemUI/res/values-gl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-gl/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Opción desactivada"</item>
<item msgid="5908720590832378783">"Opción activada"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Non dispoñible"</item>
+ <item msgid="6641673879029894995">"Desactivado"</item>
+ <item msgid="5806682401126108403">"Activado"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 08e1398..1fa46e6 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"બ્લૂટૂથ કનેક્ટ થયું."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"બ્લૂટૂથ ડિવાઇસનું આઇકન"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ડિવાઇસની વિગત ગોઠવવા માટે ક્લિક કરો"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"બધા ડિવાઇસ જોવા માટે ક્લિક કરો"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"નવું ડિવાઇસ જોડવા માટે ક્લિક કરો"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"બૅટરીની ટકાવારી અજાણ છે."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> થી કનેક્ટ થયાં."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> થી કનેક્ટ કરેલ."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ઇનપુટ"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"સાંભળવામાં મદદ આપતા યંત્રો"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ચાલુ કરી રહ્યાં છીએ…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"બ્રાઇટનેસ ગોઠવી શકતા નથી કારણ કે તે\n લોકપ્રિય ઍપ દ્વારા નિયંત્રિત કરવામાં આવી રહી છે"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"બ્રાઇટનેસ ગોઠવી શકતા નથી કારણ કે તે લોકપ્રિય ઍપ દ્વારા નિયંત્રિત કરવામાં આવી રહી છે"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ઑટો રોટેટ"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ઑટો રોટેટ સ્ક્રીન"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"લોકેશન"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> વાતચીતની સુવિધાઓને સપોર્ટ આપતી નથી"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"પ્રતિસાદ"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"છોડી દો"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"પિન કરેલા તરીકે બતાવશો નહીં"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"લાઇવ અપડેટ બતાવી રહ્યાં છીએ"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"પિન કરેલા નોટિફિકેશન ઍપમાંથી લાઇવ નોટિફિકેશન બતાવે છે અને હંમેશાં સ્ટેટસ બાર અને લૉક સ્ક્રીન પર દેખાય છે"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"આ નોટિફિકેશનમાં કોઈ ફેરફાર થઈ શકશે નહીં."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"કૉલના નોટિફિકેશનમાં કોઈ ફેરફાર કરી શકાતો નથી."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"નોટિફિકેશનના આ ગ્રૂપની ગોઠવણી અહીં કરી શકાશે નહીં"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"ઓછી પ્રાધાન્યતાનું નોટિફિકેશન આઇકન બતાવો"</string>
<string name="other" msgid="429768510980739978">"અન્ય"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ટાઇલ કાઢી નાખો"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"છેલ્લા સ્થાનમાં ટાઇલ ઉમેરો"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ટાઇલ ખસેડો"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"તાજેતરની ઍપ જુઓ"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ઍપ સ્વિચ કરો"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"થઈ ગયું"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"તાજેતરની ઍપ જોવા માટે, ટચપૅડ પર ત્રણ આંગળીઓ વડે ઉપર સ્વાઇપ કરો અને દબાવી રાખો"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"તમારી બધી ઍપ જોવા માટે, તમારા કીબોર્ડ પર ઍક્શન કી દબાવો"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"બદલાવેલું"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"જોવા માટે અનલૉક કરો"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"સંદર્ભાત્મક શિક્ષણ"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"પાછા જવા માટે તમારા ટચપૅડનો ઉપયોગ કરો"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"ત્રણ આંગળીનો ઉપયોગ કરીને ડાબે અથવા જમણે સ્વાઇપ કરો. સંકેતો વિશે વધુ જાણવા માટે ટૅપ કરો."</string>
diff --git a/packages/SystemUI/res/values-gu/tiles_states_strings.xml b/packages/SystemUI/res/values-gu/tiles_states_strings.xml
index c6e204d..a003106 100644
--- a/packages/SystemUI/res/values-gu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-gu/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"બંધ છે"</item>
<item msgid="5908720590832378783">"ચાલુ"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"અનુપલબ્ધ"</item>
+ <item msgid="6641673879029894995">"બંધ"</item>
+ <item msgid="5806682401126108403">"ચાલુ"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index d781585..be1ca7d 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ब्लूटूथ कनेक्ट किया गया."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ब्लूटूथ डिवाइस का आइकॉन"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"डिवाइस की जानकारी कॉन्फ़िगर करने के लिए क्लिक करें"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"\'सभी डिवाइस देखें\' पर क्लिक करें"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"\'नया डिवाइस जोड़ें\' पर क्लिक करें"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. डिवाइस की जानकारी कॉन्फ़िगर करें"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"सभी डिवाइस देखें"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"नया डिवाइस जोड़ें"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"इस बारे में जानकारी नहीं है कि अभी बैटरी कितने प्रतिशत चार्ज है."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> से कनेक्ट किया गया."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> से कनेक्ट है."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"इनपुट"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"कान की मशीनें"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ब्लूटूथ चालू हो रहा है…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"स्क्रीन की रोशनी को एडजस्ट नहीं किया जा सकता, क्योंकि\n इसे टॉप ऐप्लिकेशन कंट्रोल कर रहा है"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"स्क्रीन की रोशनी को एडजस्ट नहीं किया जा सकता, क्योंकि इसे टॉप ऐप्लिकेशन कंट्रोल कर रहा है"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ऑटो-रोटेट"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"स्क्रीन का अपने-आप दिशा बदलना (ऑटो-रोटेट)"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"जगह की जानकारी"</string>
@@ -536,7 +537,7 @@
<string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ऊंचाई बढ़ाएं"</string>
<string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"अगला दिखाएं"</string>
<string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"पिछला दिखाएं"</string>
- <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"लॉक स्क्रीन विजेट"</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"लॉक स्क्रीन के विजेट"</string>
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"किसी विजेट से कोई ऐप्लिकेशन खोलने के लिए, आपको अपनी पहचान की पुष्टि करनी होगी. ध्यान रखें कि आपके टैबलेट के लॉक होने पर भी, कोई व्यक्ति विजेट देख सकता है. ऐसा हो सकता है कि कुछ विजेट, लॉक स्क्रीन पर दिखाने के लिए न बने हों. इन्हें लॉक स्क्रीन पर जोड़ना असुरक्षित हो सकता है."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ठीक है"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"स्क्रीन सेवर दिखाने का बटन"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> पर बातचीत की सुविधाएं काम नहीं करतीं"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"सुझाव/राय दें या शिकायत करें"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"खारिज करें"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"पिन किए गए लाइव अपडेट न दिखाएं"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"लाइव अपडेट दिखाए जा रहे हैं"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"पिन की गई सूचनाएं, ऐप्लिकेशन से मिलने वाली जानकारी रीयल-टाइम में दिखाती हैं. ये सूचनाएं, स्टेटस बार और लॉक स्क्रीन पर दिखती हैं"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ये सूचनाएं नहीं बदली जा सकती हैं."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"कॉल से जुड़ी सूचनाओं को ब्लॉक नहीं किया जा सकता."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"सूचनाओं के इस समूह को यहां कॉन्फ़िगर नहीं किया जा सकता"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"फ़ुल स्क्रीन मोड का इस्तेमाल करें"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"डेस्कटॉप व्यू मोड का इस्तेमाल करें"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"कम प्राथमिकता वाली सूचना के आइकॉन दिखाएं"</string>
<string name="other" msgid="429768510980739978">"अन्य"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"टाइल हटाएं"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"आखिरी जगह पर टाइल जोड़ें"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"टाइल को किसी और पोज़िशन पर ले जाएं"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन देखें"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ऐप्लिकेशन के बीच स्विच करें"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"हो गया"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"आगे बढ़ें"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"हाल ही में इस्तेमाल हुए ऐप देखने के लिए, टचपैड पर तीन उंगलियों से ऊपर की ओर स्वाइप करके दबाकर रखें"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"सभी ऐप्लिकेशन देखने के लिए, कीबोर्ड पर ऐक्शन बटन दबाएं"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"जानकारी छिपाने के लिए सूचना में बदलाव किया गया"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"देखने के लिए डिवाइस अनलॉक करें"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"कॉन्टेक्स्ट के हिसाब से जानकारी"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"वापस जाने के लिए, अपने डिवाइस के टचपैड का इस्तेमाल करें"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"तीन उंगलियों से बाईं या दाईं ओर स्वाइप करें. ज़्यादा जेस्चर के बारे में जानने के लिए टैप करें."</string>
diff --git a/packages/SystemUI/res/values-hi/tiles_states_strings.xml b/packages/SystemUI/res/values-hi/tiles_states_strings.xml
index 65046cc..ae08316 100644
--- a/packages/SystemUI/res/values-hi/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hi/tiles_states_strings.xml
@@ -152,7 +152,7 @@
<item msgid="8998632451221157987">"चालू है"</item>
</string-array>
<string-array name="tile_states_controls">
- <item msgid="8199009425335668294">"उपलब्ध नहीं है"</item>
+ <item msgid="8199009425335668294">"उपलब्ध नहीं हैं"</item>
<item msgid="4544919905196727508">"बंद है"</item>
<item msgid="3422023746567004609">"चालू है"</item>
</string-array>
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"बंद है"</item>
<item msgid="5908720590832378783">"चालू है"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"उपलब्ध नहीं है"</item>
+ <item msgid="6641673879029894995">"बंद है"</item>
+ <item msgid="5806682401126108403">"चालू है"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 3a985a9..5c7ee24 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth povezan."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona Bluetooth uređaja"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknite da biste konfigurirali pojedinosti o uređaju"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Kliknite za prikaz svih uređaja"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Kliknite da biste uparili novi uređaj"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurirajte pojedinosti o uređaju"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Pogledajte sve uređaje"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Upari novi uređaj"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Postotak baterije nije poznat."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Spojen na <xliff:g id="BLUETOOTH">%s</xliff:g> ."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Povezani ste sa sljedećim uređajem: <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Unos"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Slušna pomagala"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Uključivanje…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Svjetlina se ne može prilagoditi jer njome\n upravlja aplikacija pri vrhu"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Svjetlina se ne može prilagoditi jer njome upravlja aplikacija pri vrhu"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatsko zakretanje"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatsko zakretanje zaslona"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Lokacija"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava značajke razgovora"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Povratne informacije"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Odbaci"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ne prikazuj kao prikvačeno"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Prikazivanje obavijesti uživo"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Prikvačene obavijesti prikazuju informacije uživo iz aplikacija i uvijek se prikazuju na traci statusa i zaključanom zaslonu"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Te se obavijesti ne mogu izmijeniti."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Obavijesti o pozivima ne mogu se izmijeniti."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ta se grupa obavijesti ne može konfigurirati ovdje"</string>
@@ -900,7 +898,8 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Obavljanje više zadataka"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Upotreba podijeljenog zaslona s aplikacijom s desne strane"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Upotreba podijeljenog zaslona s aplikacijom s lijeve strane"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Prebacivanje na cijeli zaslon"</string>
+ <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Upotreba prikaza na cijelom zaslonu"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Upotreba prikaza na računalu"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Prelazak na aplikaciju zdesna ili ispod uz podijeljeni zaslon"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Prelazak na aplikaciju slijeva ili iznad uz podijeljeni zaslon"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Tijekom podijeljenog zaslona: zamijeni aplikaciju drugom"</string>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obavijesti niskog prioriteta"</string>
<string name="other" msgid="429768510980739978">"Ostalo"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklanjanje kartice"</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>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Pregled nedavnih aplikacija"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Promjena aplikacije"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Dalje"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Za prikaz nedavnih aplikacija prijeđite prema gore trima prstima i zadržite pritisak na dodirnoj podlozi"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Za prikaz svojih svih aplikacija pritisnite tipku za radnju na tipkovnici"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redaktirano"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Otključajte za prikaz"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstualno obrazovanje"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Upotrijebite dodirnu podlogu za povratak"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Prijeđite ulijevo ili udesno trima prstima. Dodirnite da biste naučili više pokreta."</string>
diff --git a/packages/SystemUI/res/values-hr/tiles_states_strings.xml b/packages/SystemUI/res/values-hr/tiles_states_strings.xml
index 3b99019..51b667c 100644
--- a/packages/SystemUI/res/values-hr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hr/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Isključeno"</item>
<item msgid="5908720590832378783">"Uključeno"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Nedostupno"</item>
+ <item msgid="6641673879029894995">"Isključeno"</item>
+ <item msgid="5806682401126108403">"Uključeno"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 9b17567..421570c 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth csatlakoztatva."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth-eszköz ikon"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kattintson az eszköz beállításainak megadásához"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Kattintson az összes eszköz megtekintéséhez"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Kattintson új eszköz párosításához"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Az akkumulátor töltöttségi szintje ismeretlen."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Csatlakoztatva a következőhöz: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Csatlakozva a következőhöz: <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Bevitel"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hallókészülék"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Bekapcsolás…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nem lehet módosítani a fényerőt, mert a felső alkalmazás\n vezérli"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nem lehet módosítani a fényerőt, mert a felső alkalmazás vezérli"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatikus elforgatás"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatikus képernyőforgatás"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Tartózkodási hely"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> nem támogatja a beszélgetési funkciókat"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Visszajelzés"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Elvetés"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ne jelenjen meg kitűzöttként"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Friss hírek megjelenítése…"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"A kitűzött értesítések alkalmazásokból származó élő információkat jelenítenek meg, és mindig az állapotsoron és a lezárási képernyőn jelennek meg"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ezeket az értesítéseket nem lehet módosítani."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"A hívásértesítéseket nem lehet módosítani."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Az értesítések jelen csoportját itt nem lehet beállítani"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Osztott képernyő használata, az alkalmazás a jobb oldalon van"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Osztott képernyő használata, az alkalmazás a bal oldalon van"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Váltás teljes képernyőre"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Váltás a jobb oldalt, illetve lent lévő appra osztott képernyő esetén"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Váltás a bal oldalt, illetve fent lévő appra osztott képernyő esetén"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Osztott képernyőn: az egyik alkalmazás lecserélése egy másikra"</string>
@@ -987,6 +991,8 @@
</string-array>
<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>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<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="8311378984458545661">"mozaik hozzáadása az utolsó pozícióhoz"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mozaik áthelyezése"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Legutóbbi alkalmazások megtekintése"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Váltás az alkalmazások között"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Kész"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"A legutóbbi appokért csúsztasson lefelé három ujjal az érintőpadon, és tartsa lenyomva ujjait."</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Az összes alkalmazás megtekintéséhez nyomja meg a billentyűzet műveletbillentyűjét."</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Törölve"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Oldja fel a megtekintéshez"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontextusfüggő tájékoztató párbeszédpanel"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"A visszalépéshez használja az érintőpadot"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Csúsztatasson gyorsan három ujjal balra vagy jobbra. Koppintson a további kézmozdulatokért."</string>
diff --git a/packages/SystemUI/res/values-hu/tiles_states_strings.xml b/packages/SystemUI/res/values-hu/tiles_states_strings.xml
index 06bf4f2..c8f7b0f 100644
--- a/packages/SystemUI/res/values-hu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hu/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Ki"</item>
<item msgid="5908720590832378783">"Be"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Nem áll rendelkezésre"</item>
+ <item msgid="6641673879029894995">"Ki"</item>
+ <item msgid="5806682401126108403">"Be"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 2aa72cc..aaedf56 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth-ը միացված է:"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth սարքի պատկերակ"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Սեղմեք՝ սարքի մանրամասները կազմաձևելու համար"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Սեղմեք՝ բոլոր սարքերը տեսնելու համար"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Սեղմեք՝ նոր սարք զուգակցելու համար"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Մարտկոցի լիցքի մակարդակն անհայտ է։"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Միացված է <xliff:g id="BLUETOOTH">%s</xliff:g>-ին:"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Միացված է <xliff:g id="CAST">%s</xliff:g>-ին:"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Մուտքագրում"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Լսողական սարք"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Միացում…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Հնարավոր չէ կարգավորել պայծառությունը, քանի որ այն\n կառավարվում է գլխավոր հավելվածի կողմից"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Հնարավոր չէ կարգավորել պայծառությունը, քանի որ այն կառավարվում է գլխավոր հավելվածի կողմից"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Ինքնապտտում"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Ավտոմատ պտտել էկրանը"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Տեղորոշում"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը զրույցի գործառույթներ չի աջակցում"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Կարծիք հայտնել"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Փակել"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ցույց չտալ որպես ամրացված"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Ցուցադրվում են թարմացումներ իրական ժամանակում"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Ամրացված ծանուցումները ցուցադրում են հավելվածների ընթացիկ տեղեկությունները և միշտ հայտնվում են կարգավիճակի գոտում և կողպէկրանին"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Այս ծանուցումները չեն կարող փոփոխվել:"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Զանգերի մասին ծանուցումները հնարավոր չէ փոփոխել։"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ծանուցումների տվյալ խումբը հնարավոր չէ կարգավորել այստեղ"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Ցուցադրել ցածր առաջնահերթության ծանուցումների պատկերակները"</string>
<string name="other" msgid="429768510980739978">"Այլ"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"հեռացնել սալիկը"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ավելացնել սալիկը վերջին դիրքում"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Տեղափոխել սալիկը"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Դիտել վերջին հավելվածները"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Անցում մեկ հավելվածից մյուսին"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Պատրաստ է"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Վերջերս օգտագործված հավելվածները դիտելու համար երեք մատը սահեցրեք վերև և սեղմած պահեք"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Բոլոր հավելվածները դիտելու համար սեղմեք գործողության ստեղնը ստեղնաշարի վրա"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Կոդավորված"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Ապակողպել դիտելու համար"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Համատեքստային ուսուցում"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Օգտագործեք ձեր հպահարթակը՝ վերադառնալու համար"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Երեք մատը սահեցրեք ձախ կամ աջ։ Հպեք՝ ավելի շատ ժեստերի ծանոթանալու համար։"</string>
diff --git a/packages/SystemUI/res/values-hy/tiles_states_strings.xml b/packages/SystemUI/res/values-hy/tiles_states_strings.xml
index dc8bbb1..e7eee79 100644
--- a/packages/SystemUI/res/values-hy/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hy/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Անջատված է"</item>
<item msgid="5908720590832378783">"Միացված է"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Հասանելի չէ"</item>
+ <item msgid="6641673879029894995">"Անջատված է"</item>
+ <item msgid="5806682401126108403">"Միացված է"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index c57f40f..4990774 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth terhubung."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikon perangkat Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik untuk mengonfigurasi detail perangkat"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Klik untuk melihat semua perangkat"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Klik untuk menyambungkan perangkat baru"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Persentase baterai tidak diketahui."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Terhubung ke <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Terhubung ke <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Alat bantu dengar"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Mengaktifkan…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Tidak dapat menyesuaikan kecerahan karena sedang\n dikontrol oleh aplikasi atas"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Tidak dapat menyesuaikan kecerahan karena sedang dikontrol oleh aplikasi atas"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Putar Otomatis"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Putar layar otomatis"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Lokasi"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak mendukung fitur percakapan"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Masukan"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Tutup"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Jangan tampilkan sebagai tersemat"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Menampilkan Info Terbaru Langsung"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Notifikasi yang disematkan menampilkan info terbaru dari aplikasi, serta selalu muncul di status bar dan layar kunci"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Notifikasi ini tidak dapat diubah."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Notifikasi panggilan tidak dapat diubah."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Grup notifikasi ini tidak dapat dikonfigurasi di sini"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Gunakan layar terpisah dengan aplikasi di sebelah kanan"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Gunakan layar terpisah dengan aplikasi di sebelah kiri"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Beralih ke layar penuh"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Beralih ke aplikasi di bagian kanan atau bawah saat menggunakan layar terpisah"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Beralih ke aplikasi di bagian kiri atau atas saat menggunakan layar terpisah"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Dalam layar terpisah: ganti salah satu aplikasi dengan yang lain"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Tampilkan ikon notifikasi prioritas rendah"</string>
<string name="other" msgid="429768510980739978">"Lainnya"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"menghapus kartu"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"menambahkan kartu ke posisi terakhir"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pindahkan kartu"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Lihat aplikasi terbaru"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Beralih aplikasi"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Selesai"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Untuk melihat aplikasi terkini, geser ke atas dan tahan menggunakan tiga jari di touchpad"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Untuk melihat semua aplikasi, tekan tombol tindakan di keyboard"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Disamarkan"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Buka kunci untuk melihat"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Pendidikan kontekstual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Gunakan touchpad untuk kembali"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Geser ke kiri atau kanan menggunakan tiga jari. Ketuk untuk mempelajari gestur lainnya."</string>
diff --git a/packages/SystemUI/res/values-in/tiles_states_strings.xml b/packages/SystemUI/res/values-in/tiles_states_strings.xml
index b48a587..182924d 100644
--- a/packages/SystemUI/res/values-in/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-in/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Nonaktif"</item>
<item msgid="5908720590832378783">"Aktif"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Tidak tersedia"</item>
+ <item msgid="6641673879029894995">"Nonaktif"</item>
+ <item msgid="5806682401126108403">"Aktif"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index ec284c2..3f8492a 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth tengt."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Tákn Bluetooth-tækis"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Smelltu til að stilla tækjaupplýsingar"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Smelltu til að sjá öll tæki"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Smelltu til að para nýtt tæki"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Staða rafhlöðu óþekkt."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Tengt við <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Tengt við <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Inntak"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Heyrnartæki"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Kveikir…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ekki er hægt að breyta birtustiginu vegna þess að \n efsta forritið stjórnar því"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ekki er hægt að breyta birtustiginu vegna þess að efsta forritið stjórnar því"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Sjálfvirkur snúningur"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Snúa skjá sjálfkrafa"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Staðsetning"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> styður ekki samtalseiginleika"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Ábendingar"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Loka"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ekki sýna sem fest"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Sýna uppfærslur í beinni"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Festar tilkynningar sýna upplýsingar frá forritum í rauntíma og birtast ávallt á stöðustikunni og lásskjánum"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ekki er hægt að breyta þessum tilkynningum."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Ekki er hægt að breyta tilkynningum um símtöl."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ekki er hægt að stilla þessar tilkynningar hér"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Fjölvinnsla"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Notaðu skjáskiptingu fyrir forritið til hægri"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Notaðu skjáskiptingu fyrir forritið til vinstri"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Skipta yfir í allan skjáinn"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Skiptu í forrit til hægri eða fyrir neðan þegar skjáskipting er notuð"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Skiptu í forrit til vinstri eða fyrir ofan þegar skjáskipting er notuð"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Í skjáskiptingu: Skipta forriti út fyrir annað forrit"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Sýna tákn fyrir tilkynningar með litlum forgangi"</string>
<string name="other" msgid="429768510980739978">"Annað"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjarlægja flís"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"bæta reit við síðustu stöðu"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Færa flís"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Sjá nýleg forrit"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Að skipta á milli forrita"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Lokið"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Strjúktu upp og haltu með þremur fingrum á snertifletinum til að sjá nýleg forrit"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Ýttu á aðgerðalykilinn á lyklaborðinu til að sjá öll forritin þín"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Ritskoðað"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Taktu úr lás til að skoða"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Samhengismiðuð menntun"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Notaðu snertiflötinn til að fara til baka"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Strjúktu til vinstri eða hægri með þremur fingrum. Ýttu til að læra fleiri bendingar."</string>
diff --git a/packages/SystemUI/res/values-is/tiles_states_strings.xml b/packages/SystemUI/res/values-is/tiles_states_strings.xml
index 92f07b6..58ce0ae 100644
--- a/packages/SystemUI/res/values-is/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-is/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Slökkt"</item>
<item msgid="5908720590832378783">"Kveikt"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Ekki tiltækt"</item>
+ <item msgid="6641673879029894995">"Slökkt"</item>
+ <item msgid="5806682401126108403">"Kveikt"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 2391fe2..bb7202b 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth collegato."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icona del dispositivo Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Fai clic per configurare i dettagli del dispositivo"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Fai clic per vedere tutti i dispositivi"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Fai clic per accoppiare un nuovo dispositivo"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configura i dettagli del dispositivo"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Visualizza tutti i dispositivi"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Accoppia nuovo dispositivo"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Percentuale della batteria sconosciuta."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connesso a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connesso a: <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Ingresso"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Apparecchi acustici"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Attivazione…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Impossibile regolare la luminosità perché è\n controllata dall\'app in primo piano"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Impossibile regolare la luminosità perché è controllata dall\'app in primo piano"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotazione automatica"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotazione automatica dello schermo"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Posizione"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non supporta le funzionalità delle conversazioni"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Ignora"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Non mostrare come fissata"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Visualizzare gli aggiornamenti in tempo reale"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Le notifiche fissate mostrano informazioni in tempo reale provenienti dalle app e vengono sempre visualizzate nella barra di stato e nella schermata di blocco"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossibile modificare queste notifiche."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Impossibile modificare gli avvisi di chiamata."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Qui non è possibile configurare questo gruppo di notifiche"</string>
@@ -900,7 +898,8 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Utilizza lo schermo diviso con l\'app a destra"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Utilizza lo schermo diviso con l\'app a sinistra"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Passa alla modalità a schermo intero"</string>
+ <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Utilizza la modalità a schermo intero"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Utilizza la visualizzazione desktop"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Passa all\'app a destra o sotto mentre usi lo schermo diviso"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Passa all\'app a sinistra o sopra mentre usi lo schermo diviso"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Con lo schermo diviso: sostituisci un\'app con un\'altra"</string>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostra icone di notifiche con priorità bassa"</string>
<string name="other" msgid="429768510980739978">"Altro"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"rimuovere il riquadro"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"aggiungere il riquadro all\'ultima posizione"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Sposta riquadro"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Visualizza app recenti"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Cambia app"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fine"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Avanti"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Per visualizzare le app recenti, scorri verso l\'alto e tieni premuto con tre dita sul touchpad"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Per visualizzare tutte le tue app, premi il tasto azione sulla tastiera"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Oscurata"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Sblocca per visualizzare"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Istruzione contestuale"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Usa il touchpad per tornare indietro"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Scorri verso sinistra o destra con tre dita. Tocca per scoprire altri gesti."</string>
diff --git a/packages/SystemUI/res/values-it/tiles_states_strings.xml b/packages/SystemUI/res/values-it/tiles_states_strings.xml
index 7e11d0b..5c56d08 100644
--- a/packages/SystemUI/res/values-it/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-it/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Off"</item>
<item msgid="5908720590832378783">"On"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Non disponibile"</item>
+ <item msgid="6641673879029894995">"Off"</item>
+ <item msgid="5806682401126108403">"On"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 0d7a620..92fc203 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth מחובר."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"סמל של מכשיר Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"יש ללחוץ כדי להגדיר את פרטי המכשיר"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"אפשר ללחוץ כדי לראות את כל המכשירים"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"צריך ללחוץ כדי להתאים מכשיר חדש"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"אחוז טעינת הסוללה לא ידוע."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"התבצע חיבור אל <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"מחובר אל <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"קלט"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"מכשירי שמיעה"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ההפעלה מתבצעת…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"לא ניתן להתאים את הבהירות כי היא\n נשלטת על ידי האפליקציה העליונה"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"לא ניתן להתאים את הבהירות כי היא נשלטת על ידי האפליקציה העליונה"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"סיבוב אוטומטי"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"סיבוב אוטומטי של המסך"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"מיקום"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> לא תומכת בתכונות השיחה"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"משוב"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"סגירה"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"לא להצמיד"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"מוצגים עדכונים בזמן אמת"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"בהתראות המוצמדות מוצג מידע בזמן אמת מאפליקציות, והן תמיד מופיעות בשורת הסטטוס ובמסך הנעילה"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"לא ניתן לשנות את ההתראות האלה."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"לא ניתן לשנות את התראות השיחה."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"לא ניתן להגדיר כאן את קבוצת ההתראות הזו"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"הצגת סמלי התראות בעדיפות נמוכה"</string>
<string name="other" msgid="429768510980739978">"אחר"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"הסרת הלחצן"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"הוספת הלחצן במיקום האחרון"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"העברת הלחצן"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"הצגת האפליקציות האחרונות"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"מעבר בין אפליקציות"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"סיום"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"כדי לראות את האפליקציות האחרונות, מחליקים למעלה לוחצים לחיצה ארוכה עם שלוש אצבעות על לוח המגע"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"כדי לראות את כל האפליקציות, מקישים על מקש הפעולה במקלדת"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"מצונזר"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"צריך לבטל את הנעילה כדי לראות"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"חינוך בהתאם להקשר"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"אפשר להשתמש בלוח המגע כדי לחזור אחורה"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"מחליקים ימינה או שמאלה עם שלוש אצבעות. ניתן ללחוץ כדי לקבל מידע נוסף על התנועות."</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 7867633..3512271 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetoothに接続済み。"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth デバイスのアイコン"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"クリックしてデバイスの詳細を設定します"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"クリックすると、すべてのデバイスが表示されます"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"クリックすると、新しいデバイスをペア設定できます"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>。デバイスの詳細を設定してください"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"すべてのデバイスを表示"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"新しいデバイスとペア設定"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"バッテリー残量は不明です。"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>に接続しました。"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>に接続されています。"</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"入力"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"補聴器"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ON にしています…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"明るさはトップ アプリによって\n制御されているため、調整できません"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"明るさはトップ アプリによって制御されているため、調整できません"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"自動回転"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"画面を自動回転します"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"位置情報"</string>
@@ -530,7 +531,7 @@
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ウィジェットを削除"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"選択したウィジェットを配置"</string>
<string name="communal_widget_picker_title" msgid="1953369090475731663">"ロック画面ウィジェット"</string>
- <string name="communal_widget_picker_description" msgid="490515450110487871">"タブレットがロックされていても、ロック画面のウィジェットは誰でも確認できます。"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"タブレットがロックされていても、ロック画面のウィジェットは誰でも見ることができます。"</string>
<string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ウィジェットの選択を解除する"</string>
<string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"高さを低くする"</string>
<string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"高さを高くする"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>は会話機能に対応していません"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"フィードバック"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"閉じる"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"固定表示しない"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"ライブ情報が表示されます"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"固定した通知にアプリのライブ情報が表示され、常にステータスバーとロック画面に表示されます"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"これらの通知は変更できません。"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"着信通知は変更できません。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"このグループの通知はここでは設定できません"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"全画面表示に切り替える"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"デスクトップ ビューを使用する"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"優先度の低い通知アイコンを表示"</string>
<string name="other" msgid="429768510980739978">"その他"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"タイルを削除"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"タイルを最後の位置に追加する"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"タイルを移動"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"最近使ったアプリを表示する"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"アプリの切り替え"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完了"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"次へ"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"最近使ったアプリを表示するには、3 本の指でタッチパッドを上にスワイプして長押しします"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"すべてのアプリを表示するには、キーボードのアクションキーを押してください"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"削除済み"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"表示するにはロックを解除してください"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"コンテキスト メニューに関する説明"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"タッチパッドを使用して、前の画面に戻る"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"3 本の指で左または右にスワイプします。ジェスチャーの詳細を確認するにはタップしてください。"</string>
diff --git a/packages/SystemUI/res/values-ja/tiles_states_strings.xml b/packages/SystemUI/res/values-ja/tiles_states_strings.xml
index 1282f57..cce5ceb 100644
--- a/packages/SystemUI/res/values-ja/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ja/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"OFF"</item>
<item msgid="5908720590832378783">"ON"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"使用不可"</item>
+ <item msgid="6641673879029894995">"OFF"</item>
+ <item msgid="5806682401126108403">"ON"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index b599220..3877fe7 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth დაკავშირებულია."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth მოწყობილობის ხატულა"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"დააწკაპუნეთ მოწყობილობის დეტალების კონფიგურირებისთვის"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"დააწკაპუნეთ ყველა მოწყობილობის სანახავად"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"დააწკაპუნეთ ახალი მოწყობილობის დასაწყვილებლად"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. მოწყობილობის დეტალის კონფიგურაცია"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"ყველა მოწყობილობის ნახვა"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"ახალი მოწყობილობის დაწყვილება"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ბატარეის პროცენტული მაჩვენებელი უცნობია."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"დაკავშირებულია <xliff:g id="BLUETOOTH">%s</xliff:g>-თან."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"დაკავშირებულია მოწყობილობასთან: <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ს არ აქვს მიმოწერის ფუნქციების მხარდაჭერა"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"გამოხმაურება"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"დახურვა"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"არ გამოჩნდეს ჩამაგრებულად"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"აჩვენებს განახლებებს რეალურ დროში"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"ჩამაგრებული შეტყობინებები რეალურ დროში აჩვენებს ინფორმაციას აპებიდან და ყოველთვის ჩანს სტატუსის ზოლსა და ჩაკეტილ ეკრანზე"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ამ შეტყობინებების შეცვლა შეუძლებელია."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ზარის შეტყობინებების შეცვლა შეუძლებელია."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"შეტყობინებების ამ ჯგუფის კონფიგურირება აქ შეუძლებელია"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"სრული ეკრანის გამოყენება"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"დესკტოპის ხედის გამოყენება"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"დაბალი პრიორიტეტის მქონე შეტყობინებების ხატულების ჩვენება"</string>
<string name="other" msgid="429768510980739978">"სხვა"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"მოზაიკის ფილის წაშლა"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"მოზაიკის ფილის ბოლო პოზიციაზე დამატება"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"მოზაიკის გადატანა"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ბოლო აპების ნახვა"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"აპების გადართვა"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"მზადაა"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"შემდეგი"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"ბოლო აპების სანახავად სენსორულ პანელზე სამი თითით გადაფურცლეთ ზემოთ და მოიცადეთ"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ყველა აპის სანახავად დააჭირეთ მოქმედების კლავიშს თქვენს კლავიატურაზე"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"ტექსტს ადევს ცენზურა"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"განბლოკვა სანახავად"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"კონტექსტური განათლება"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"უკან დასაბრუნებლად გამოიყენეთ სენსორული პანელი"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"გადაფურცლეთ მარცხნივ ან მარჯვნივ სამი თითით. შეეხეთ მეტი ჟესტის შესასწავლად."</string>
diff --git a/packages/SystemUI/res/values-ka/tiles_states_strings.xml b/packages/SystemUI/res/values-ka/tiles_states_strings.xml
index 81fc54d..7a22981 100644
--- a/packages/SystemUI/res/values-ka/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ka/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"გამორთული"</item>
<item msgid="5908720590832378783">"ჩართული"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"მიუწვდომელი"</item>
+ <item msgid="6641673879029894995">"გამორთული"</item>
+ <item msgid="5806682401126108403">"ჩართული"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index bf12aca..506ce8b 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth қосылған."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth құрылғысы белгішесі"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Құрылғы деректерін конфигурациялау үшін басыңыз."</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Барлық құрылғыны көру үшін басыңыз."</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Жаңа құрылғы жұптау үшін басыңыз."</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Батарея зарядының мөлшері белгісіз."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> қосылған."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> трансляциясына қосылды."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Кіріс"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Есту аппараттары"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Қосылып жатыр…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Жарықтықты реттеу мүмкін емес, себебі ол\n жетекші қолданба арқылы басқарылады."</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Жарықтықты реттеу мүмкін емес, себебі ол жетекші қолданба арқылы басқарылады."</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автоматты түрде бұру"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоматты айналатын экран"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Локация"</string>
@@ -689,11 +693,11 @@
<string name="screen_pinning_negative" msgid="6882816864569211666">"Жоқ, рақмет"</string>
<string name="screen_pinning_start" msgid="7483998671383371313">"Қолданба бекітілді."</string>
<string name="screen_pinning_exit" msgid="4553787518387346893">"Қолданба босатылды."</string>
- <string name="stream_voice_call" msgid="7468348170702375660">"Қоңырау шалу"</string>
+ <string name="stream_voice_call" msgid="7468348170702375660">"Сөйлесу кезіндегі дыбыс"</string>
<string name="stream_system" msgid="7663148785370565134">"Жүйе"</string>
- <string name="stream_ring" msgid="7550670036738697526">"Шылдыр"</string>
+ <string name="stream_ring" msgid="7550670036738697526">"Қоңырау сигналы"</string>
<string name="stream_music" msgid="2188224742361847580">"Мультимедиа"</string>
- <string name="stream_alarm" msgid="16058075093011694">"Дабыл"</string>
+ <string name="stream_alarm" msgid="16058075093011694">"Оятқыш"</string>
<string name="stream_notification" msgid="7930294049046243939">"Хабарландыру"</string>
<string name="stream_bluetooth_sco" msgid="6234562365528664331">"Bluetooth"</string>
<string name="stream_dtmf" msgid="7322536356554673067">"Қос үнді көп жиілік"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> әңгіме функцияларын қолдамайды."</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Пікір"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Жабу"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Бекітілген ретінде көрсетпеу"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Нақты уақыттағы жаңартуларды көрсету"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Бекітілген хабарландырулар қолданбалардың нақты уақыттағы ақпаратын көрсетеді және әрдайым күй жолағында және құлып экранында көрсетіледі."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Бұл хабарландыруларды өзгерту мүмкін емес."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Қоңырау туралы хабарландыруларды өзгерту мүмкін емес."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Мұндай хабарландырулар бұл жерде конфигурацияланбайды."</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Маңызды емес хабарландыру белгішелерін көрсету"</string>
<string name="other" msgid="429768510980739978">"Басқа"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"бөлшекті өшіру"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"соңғы позицияға бөлшек қосу"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Бөлшекті жылжыту"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Соңғы қолданбаларды көру"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Қолданба ауыстыру"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Дайын"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Сенсорлық тақтада үш саусақпен жоғары сырғытып, басып тұрсаңыз, соңғы ашылған қолданбаларды көресіз."</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Пернетақтада әрекет пернесін басып, барлық қолданбаны көре аласыз."</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Жасырылған"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Көру үшін құлыпты ашыңыз."</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контекстік білім"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Артқа қайту үшін сенсорлық тақтаны қолданыңыз"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Үш саусақпен солға не оңға сырғытыңыз. Басқа қимылдарды үйрену үшін түртіңіз."</string>
diff --git a/packages/SystemUI/res/values-kk/tiles_states_strings.xml b/packages/SystemUI/res/values-kk/tiles_states_strings.xml
index 32562c6..2b839c8 100644
--- a/packages/SystemUI/res/values-kk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-kk/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Өшірулі"</item>
<item msgid="5908720590832378783">"Қосулы"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Қолжетімді емес"</item>
+ <item msgid="6641673879029894995">"Өшірулі"</item>
+ <item msgid="5806682401126108403">"Қосулы"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index e12fd13..1fa0acb 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"បានតភ្ជាប់ប៊្លូធូស។"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"រូបឧបករណ៍ប៊្លូធូស"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ចុចដើម្បីកំណត់រចនាសម្ព័ន្ធព័ត៌មានលម្អិតអំពីឧបករណ៍"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"ចុច ដើម្បីមើលឃើញឧបករណ៍ទាំងអស់"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"ចុច ដើម្បីផ្គូផ្គងឧបករណ៍ថ្មី"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"មិនដឹងអំពីភាគរយថ្មទេ។"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"បានភ្ជាប់ទៅ <xliff:g id="BLUETOOTH">%s</xliff:g> ។"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"បានភ្ជាប់ទៅ <xliff:g id="CAST">%s</xliff:g>"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"បញ្ចូល"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ឧបករណ៍ជំនួយការស្ដាប់"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"កំពុងបើក..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"មិនអាចកែតម្រូវកម្រិតពន្លឺបានទេ ដោយសារវាកំពុងស្ថិតក្រោម\nការគ្រប់គ្រងរបស់កម្មវិធីខាងលើគេ"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"មិនអាចកែតម្រូវកម្រិតពន្លឺបានទេ ដោយសារវាកំពុងស្ថិតក្រោមការគ្រប់គ្រងរបស់កម្មវិធីខាងលើគេ"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"បង្វិលស្វ័យប្រវត្តិ"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"បង្វិលអេក្រង់ស្វ័យប្រវត្តិ"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"ទីតាំង"</string>
@@ -689,7 +693,7 @@
<string name="screen_pinning_negative" msgid="6882816864569211666">"ទេ អរគុណ"</string>
<string name="screen_pinning_start" msgid="7483998671383371313">"បានខ្ទាស់កម្មវិធី"</string>
<string name="screen_pinning_exit" msgid="4553787518387346893">"បានដកខ្ទាស់កម្មវិធី"</string>
- <string name="stream_voice_call" msgid="7468348170702375660">"ហៅ"</string>
+ <string name="stream_voice_call" msgid="7468348170702375660">"ការហៅទូរសព្ទ"</string>
<string name="stream_system" msgid="7663148785370565134">"ប្រព័ន្ធ"</string>
<string name="stream_ring" msgid="7550670036738697526">"រោទ៍"</string>
<string name="stream_music" msgid="2188224742361847580">"មេឌៀ"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> មិនអាចប្រើមុខងារសន្ទនាបានទេ"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"មតិកែលម្អ"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"ច្រានចោល"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"កុំបង្ហាញដូចអ្វីដែលបានខ្ទាស់"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"ការបង្ហាញព័ត៌មានបន្តផ្ទាល់"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"ការជូនដំណឹងដែលបានខ្ទាស់បង្ហាញព័ត៌មានបន្តផ្ទាល់ពីកម្មវិធី និងតែងតែបង្ហាញនៅលើរបារស្ថានភាព និងអេក្រង់ចាក់សោ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"មិនអាចកែប្រែការជូនដំណឹងទាំងនេះបានទេ។"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"មិនអាចកែប្រែការជូនដំណឹងអំពីការហៅទូរសព្ទបានទេ។"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"មិនអាចកំណត់រចនាសម្ព័ន្ធក្រុមការជូនដំណឹងនេះនៅទីនេះបានទេ"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"បង្ហាញរូបការជូនដំណឹងដែលមានអាទិភាពទាប"</string>
<string name="other" msgid="429768510980739978">"ផ្សេងៗ"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ដកប្រអប់ចេញ"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"បញ្ចូលប្រអប់ទៅទីតាំងចុងក្រោយ"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ផ្លាស់ទីប្រអប់"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"មើលកម្មវិធីថ្មីៗ"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ប្ដូរកម្មវិធី"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"រួចរាល់"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"ដើម្បីមើលកម្មវិធីថ្មីៗ សូមអូសឡើងលើ ហើយសង្កត់ឱ្យជាប់ដោយប្រើម្រាមដៃបីនៅលើផ្ទាំងប៉ះ"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ដើម្បីមើលកម្មវិធីទាំងអស់របស់អ្នក សូមចុចគ្រាប់ចុចសកម្មភាពនៅលើក្ដារចុចរបស់អ្នក"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"បានកែលម្អពាក្យពេចន៍"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"ដោះសោដើម្បីមើល"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"ការអប់រំតាមបរិបទ"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"ប្រើផ្ទាំងប៉ះរបស់អ្នក ដើម្បីថយក្រោយ"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"អូសទៅឆ្វេង ឬស្ដាំដោយប្រើម្រាមដៃបី។ ចុច ដើម្បីស្វែងយល់បន្ថែមអំពីចលនា។"</string>
diff --git a/packages/SystemUI/res/values-km/tiles_states_strings.xml b/packages/SystemUI/res/values-km/tiles_states_strings.xml
index 0e47250..7085509 100644
--- a/packages/SystemUI/res/values-km/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-km/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"បិទ"</item>
<item msgid="5908720590832378783">"បើក"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"មិនមានទេ"</item>
+ <item msgid="6641673879029894995">"បិទ"</item>
+ <item msgid="5806682401126108403">"បើក"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 3bb4e4d..5363c62 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ಬ್ಲೂಟೂತ್ ಸಂಪರ್ಕಗೊಂಡಿದೆ."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ಬ್ಲೂಟೂತ್ ಸಾಧನ ಐಕಾನ್"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ಸಾಧನದ ವಿವರಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"ಎಲ್ಲಾ ಸಾಧನಗಳನ್ನು ನೋಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"ಹೊಸ ಸಾಧನವನ್ನು ಪೇರ್ ಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ಬ್ಯಾಟರಿ ಶೇಕಡಾವಾರು ತಿಳಿದಿಲ್ಲ."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ಇನ್ಪುಟ್"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ಶ್ರವಣ ಸಾಧನಗಳು"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ಆನ್ ಮಾಡಲಾಗುತ್ತಿದೆ..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ಬ್ರೈಟ್ನೆಸ್ ಅನ್ನು ಅಡ್ಜಸ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ,\n ಏಕೆಂದರೆ ಅದನ್ನು ಟಾಪ್ ಆ್ಯಪ್ ನಿಯಂತ್ರಿಸುತ್ತಿದೆ"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ಬ್ರೈಟ್ನೆಸ್ ಅನ್ನು ಅಡ್ಜಸ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಅದನ್ನು ಟಾಪ್ ಆ್ಯಪ್ ನಿಯಂತ್ರಿಸುತ್ತಿದೆ"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ಸ್ವಯಂ-ತಿರುಗುವಿಕೆ"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ಪರದೆಯನ್ನು ಸ್ವಯಂ-ತಿರುಗಿಸಿ"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"ಸ್ಥಳ"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"ಸಂವಾದ ಫೀಚರ್ಗಳನ್ನು <xliff:g id="APP_NAME">%1$s</xliff:g> ಬೆಂಬಲಿಸುವುದಿಲ್ಲ"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ಫೀಡ್ಬ್ಯಾಕ್"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"ವಜಾಗೊಳಿಸಿ"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"ಪಿನ್ ಮಾಡಿದ ಹಾಗೆ ತೋರಿಸಬೇಡಿ"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"ಲೈವ್ ಅಪ್ಡೇಟ್ಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"ಪಿನ್ ಮಾಡಲಾದ ನೋಟಿಫಿಕೇಶನ್ಗಳು ಆ್ಯಪ್ಗಳಿಂದ ಲೈವ್ ಮಾಹಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತವೆ ಹಾಗೂ ಅವುಗಳು ಯಾವಾಗಲೂ ಸ್ಥಿತಿ ಪಟ್ಟಿ ಮತ್ತು ಲಾಕ್ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ಕರೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ಈ ಗುಂಪಿನ ಅಧಿಸೂಚನೆಗಳನ್ನು ಇಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿರುವುದಿಲ್ಲ"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"ಕಡಿಮೆ-ಆದ್ಯತೆ ಸೂಚನೆಯ ಐಕಾನ್ಗಳನ್ನು ತೋರಿಸಿ"</string>
<string name="other" msgid="429768510980739978">"ಇತರ"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ಟೈಲ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ಕೊನೆಯ ಸ್ಥಾನಕ್ಕೆ ಟೈಲ್ ಅನ್ನು ಸೇರಿಸಿ"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ಟೈಲ್ ಸರಿಸಿ"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ಇತ್ತೀಚಿನ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ಆ್ಯಪ್ಗಳನ್ನು ಬದಲಿಸಿ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ಮುಗಿದಿದೆ"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"ಇತ್ತೀಚಿನ ಆ್ಯಪ್ಗಳನ್ನು ನೋಡಲು, ಟಚ್ಪ್ಯಾಡ್ನಲ್ಲಿ ಮೂರು ಬೆರಳುಗಳಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಹಾಗೂ ಹೋಲ್ಡ್ ಮಾಡಿ"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ನಿಮ್ಮ ಎಲ್ಲಾ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ನಲ್ಲಿರುವ ಆ್ಯಕ್ಷನ್ ಕೀಯನ್ನು ಒತ್ತಿರಿ"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"ಅರ್ಥಬದ್ಧವಾಗಿಸಲಾಗಿದೆ"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"ನೋಡಲು ಅನ್ಲಾಕ್ ಮಾಡಿ"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"ಸಂದರ್ಭೋಚಿತ ಶಿಕ್ಷಣ"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"ಹಿಂತಿರುಗಲು ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ ಅನ್ನು ಬಳಸಿ"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"ಮೂರು ಬೆರಳುಗಳಿಂದ ಎಡಕ್ಕೆ ಅಥವಾ ಬಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ. ಇನ್ನಷ್ಟು ಗೆಸ್ಚರ್ಗಳನ್ನು ತಿಳಿಯಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
diff --git a/packages/SystemUI/res/values-kn/tiles_states_strings.xml b/packages/SystemUI/res/values-kn/tiles_states_strings.xml
index b3543f9..487be13 100644
--- a/packages/SystemUI/res/values-kn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-kn/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ಆಫ್ ಆಗಿದೆ"</item>
<item msgid="5908720590832378783">"ಆನ್ ಆಗಿದೆ"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"ಲಭ್ಯವಿಲ್ಲ"</item>
+ <item msgid="6641673879029894995">"ಆಫ್ ಆಗಿದೆ"</item>
+ <item msgid="5806682401126108403">"ಆನ್ ಆಗಿದೆ"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 33f54b6..931daa0 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"블루투스가 연결되었습니다."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"블루투스 기기 아이콘"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"기기 세부정보를 구성하려면 클릭하세요."</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"모든 기기를 보려면 클릭하세요"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"새 기기를 페어링하려면 클릭하세요"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"배터리 잔량을 알 수 없습니다."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>에 연결되었습니다."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>에 연결됨"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"입력"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"보청기"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"켜는 중..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"상위 앱에서 밝기를 제어하고 있으므로\n 밝기를 조절할 수 없습니다."</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"상위 앱에서 밝기를 제어하고 있으므로 밝기를 조절할 수 없습니다."</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"자동 회전"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"화면 자동 회전"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"위치"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱은 대화 기능을 지원하지 않습니다."</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"의견"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"닫기"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"고정된 것으로 표시 안함"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"실시간 소식 표시"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"고정된 알림은 앱의 실시간 정보를 표시하며, 항상 상태 표시줄과 잠금 화면에 표시됩니다."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"이 알림은 수정할 수 없습니다."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"전화 알림은 수정할 수 없습니다."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"이 알림 그룹은 여기에서 설정할 수 없습니다."</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"우선순위가 낮은 알림 아이콘 표시"</string>
<string name="other" msgid="429768510980739978">"기타"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"타일 삭제"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"마지막 위치에 타일 추가"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"타일 이동"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"최근 앱 보기"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"앱 전환"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"완료"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"최근 앱을 보려면 터치패드에서 세 손가락으로 위로 스와이프한 후 잠시 기다리세요"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"모든 앱을 보려면 키보드의 작업 키를 누르세요"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"수정됨"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"잠금 해제하여 보기"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"컨텍스트 교육"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"터치패드를 사용하여 돌아가기"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"세 손가락을 사용해 왼쪽 또는 오른쪽으로 스와이프하세요. 더 많은 동작을 알아보려면 탭하세요."</string>
diff --git a/packages/SystemUI/res/values-ko/tiles_states_strings.xml b/packages/SystemUI/res/values-ko/tiles_states_strings.xml
index c512435..dfdcefe 100644
--- a/packages/SystemUI/res/values-ko/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ko/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"사용 안함"</item>
<item msgid="5908720590832378783">"사용"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"사용할 수 없음"</item>
+ <item msgid="6641673879029894995">"사용 안함"</item>
+ <item msgid="5806682401126108403">"사용"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index e764bad..f1c4eef 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth байланышта"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth түзмөгүнүн сүрөтчөсү"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Түзмөктүн чоо-жайын конфигурациялоо үчүн чыкылдатыңыз"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Бардык түзмөктөрдү көрүү үчүн чыкылдатыңыз"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Жаңы түзмөк кошуу үчүн чыкылдатыңыз"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Батареянын деңгээли белгисиз."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> менен туташкан."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> менен туташты."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Киргизүү"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Угуу аппараттары"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Күйгүзүлүүдө…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Жарыктыкты тууралоого болбойт, анткени аны\n жогорку колдонмо көзөмөлдөйт"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Жарыктыкты тууралоого болбойт, анткени аны жогорку колдонмо көзөмөлдөйт"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Авто буруу"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Экранды авто буруу"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Жайгашкан жер"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунда оозеки сүйлөшкөнгө болбойт"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Пикир билдирүү"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Жабуу"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Билдирмелерди бошотуу"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Анык убакыттагы билдирмелерди көрсөтүү"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Кадалган билдирмелер ар дайым абал тилкесинде жана кулпуланган экранда көрсөтүлүп, колдонмолордогу маалыматты анык убакытта көрсөтөт"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Бул билдирмелерди өзгөртүүгө болбойт."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Чалуу билдирмелерин өзгөртүүгө болбойт."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Бул билдирмелердин тобун бул жерде конфигурациялоого болбойт"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Анча маанилүү эмес билдирменин сүрөтчөлөрүн көрсөтүү"</string>
<string name="other" msgid="429768510980739978">"Башка"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ыкчам баскычты өчүрүү"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"аягына карта кошуу"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Ыкчам баскычты жылдыруу"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Акыркы колдонмолорду көрүү"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Колдонмолорду которуштуруу"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Бүттү"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Акыркы колдонмолорду көрүү үчүн сенсордук тактаны үч манжаңыз менен өйдө сүрүп, кармап туруңуз"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Бардык колдонмолоруңузду көрүү үчүн баскычтобуңуздагы аракет баскычын басыңыз"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Жашырылды"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Көрүү үчүн кулпусун ачыңыз"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контексттик билим берүү"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Артка кайтуу үчүн сенсордук тактаны колдонуңуз"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Үч манжаңыз менен солго же оңго сүрүңүз. Башка жаңсоолорду үйрөнүү үчүн таптаңыз."</string>
diff --git a/packages/SystemUI/res/values-ky/tiles_states_strings.xml b/packages/SystemUI/res/values-ky/tiles_states_strings.xml
index 47e36da..6077f66 100644
--- a/packages/SystemUI/res/values-ky/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ky/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Өчүк"</item>
<item msgid="5908720590832378783">"Күйүк"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Жеткиликсиз"</item>
+ <item msgid="6641673879029894995">"Өчүк"</item>
+ <item msgid="5806682401126108403">"Күйүк"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-land-television/dimens.xml b/packages/SystemUI/res/values-land-television/dimens.xml
index d3bafbc..b1a46a6 100644
--- a/packages/SystemUI/res/values-land-television/dimens.xml
+++ b/packages/SystemUI/res/values-land-television/dimens.xml
@@ -20,7 +20,7 @@
<dimen name="volume_dialog_panel_width">48dp</dimen>
<dimen name="volume_dialog_panel_width_half">24dp</dimen>
<dimen name="volume_dialog_panel_transparent_padding">24dp</dimen>
- <dimen name="volume_dialog_slider_width">4dp</dimen>
+ <dimen name="volume_dialog_slider_width_legacy">4dp</dimen>
<dimen name="volume_dialog_slider_corner_radius">@dimen/volume_dialog_slider_width</dimen>
<dimen name="volume_dialog_background_blur_radius">31dp</dimen>
<dimen name="volume_tool_tip_right_margin">136dp</dimen>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 3236b2e2..de9694a 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ເຊື່ອມຕໍ່ Bluetooth ແລ້ວ."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ໄອຄອນອຸປະກອນ Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ຄລິກເພື່ອຕັ້ງຄ່າລາຍລະອຽດອຸປະກອນ"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"ຄລິກເພື່ອເບິ່ງອຸປະກອນທັງໝົດ"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"ຄລິກເພື່ອຈັບຄູ່ອຸປະກອນໃໝ່"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ບໍ່ຮູ້ເປີເຊັນແບັດເຕີຣີ."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"ເຊື່ອມຕໍ່ຫາ <xliff:g id="BLUETOOTH">%s</xliff:g> ແລ້ວ."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"ເຊື່ອມຕໍ່ຫາ <xliff:g id="CAST">%s</xliff:g> ແລ້ວ."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ການປ້ອນຂໍ້ມູນ"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ເຄື່ອງຊ່ວຍຟັງ"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ກຳລັງເປີດ..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ບໍ່ສາມາດປັບຄວາມແຈ້ງເນື່ອງຈາກມັນ\n ຖືກຄວບຄຸມໂດຍແອັບຍອດນິຍົມ"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ບໍ່ສາມາດປັບຄວາມແຈ້ງເນື່ອງຈາກມັນ ຖືກຄວບຄຸມໂດຍແອັບຍອດນິຍົມ"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ໝຸນອັດຕະໂນມັດ"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ໝຸນໜ້າຈໍອັດຕະໂນມັດ"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"ສະຖານທີ່"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ຮອງຮັບຄຸນສົມບັດການສົນທະນາ"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ຄຳຕິຊົມ"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"ປິດໄວ້"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"ຢ່າສະແດງເປັນປັກໝຸດ"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"ກຳລັງສະແດງອັບເດດສົດ"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"ການແຈ້ງເຕືອນທີ່ປັກໝຸດໄວ້ຈະສະແດງຂໍ້ມູນສົດຈາກແອັບຕ່າງໆ ແລະ ຈະປາກົດຢູ່ແຖບສະຖານະ ແລະ ໜ້າຈໍລັອກສະເໝີ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ບໍ່ສາມາດແກ້ໄຂການແຈ້ງເຕືອນເຫຼົ່ານີ້ໄດ້."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ບໍ່ສາມາດແກ້ໄຂການແຈ້ງເຕືອນການໂທໄດ້."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ບໍ່ສາມາດຕັ້ງຄ່າກຸ່ມການແຈ້ງເຕືອນນີ້ຢູ່ບ່ອນນີ້ໄດ້"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"ສະແດງໄອຄອນການແຈ້ງເຕືອນຄວາມສຳຄັນຕ່ຳ"</string>
<string name="other" msgid="429768510980739978">"ອື່ນໆ"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ລຶບແຜ່ນອອກ"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ເພີ່ມແຜ່ນໃສ່ຕຳແໜ່ງສຸດທ້າຍ"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ຍ້າຍແຜ່ນ"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ເບິ່ງແອັບຫຼ້າສຸດ"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ສະຫຼັບແອັບ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ແລ້ວໆ"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"ເພື່ອເບິ່ງແອັບຫຼ້າສຸດ, ໃຫ້ໃຊ້ 3 ນິ້ວປັດຂຶ້ນ ແລ້ວຄ້າງໄວ້ເທິງແຜ່ນສໍາຜັດ"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ເພື່ອເບິ່ງແອັບທັງໝົດຂອງທ່ານ, ໃຫ້ກົດປຸ່ມຄຳສັ່ງຢູ່ແປ້ນພິມຂອງທ່ານ"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"ປົກປິດໄວ້ແລ້ວ"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"ປົດລັອກເພື່ອເບິ່ງ"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"ການສຶກສາຕາມບໍລິບົດ"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"ໃຊ້ແຜ່ນສໍາຜັດຂອງທ່ານເພື່ອກັບຄືນ"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"ໃຊ້ 3 ນິ້ວປັດຊ້າຍ ຫຼື ຂວາ. ແຕະເພື່ອສຶກສາທ່າທາງເພີ່ມເຕີມ."</string>
diff --git a/packages/SystemUI/res/values-lo/tiles_states_strings.xml b/packages/SystemUI/res/values-lo/tiles_states_strings.xml
index 71e084a..294d6af 100644
--- a/packages/SystemUI/res/values-lo/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-lo/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ປິດ"</item>
<item msgid="5908720590832378783">"ເປີດ"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"ບໍ່ພ້ອມໃຫ້ນຳໃຊ້"</item>
+ <item msgid="6641673879029894995">"ປິດ"</item>
+ <item msgid="5806682401126108403">"ເປີດ"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 25208b0..59f0ad34 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"„Bluetooth“ prijungtas."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"„Bluetooth“ įrenginio piktograma"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Spustelėkite, jei norite konfigūruoti išsamią įrenginio informaciją"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Spustelėkite, kad peržiūrėtumėte visus įrenginius"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Spustelėkite, kad susietumėte naują įrenginį"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"„<xliff:g id="DEVICE_NAME">%s</xliff:g>“. Konfigūruoti išsamią įrenginio informaciją"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Žr. visus įrenginius"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Susieti naują įrenginį"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akumuliatoriaus energija procentais nežinoma."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Prisijungta prie „<xliff:g id="BLUETOOTH">%s</xliff:g>“."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Prisijungta prie <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Įvestis"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Klausos aparatai"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Įjungiama…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Negalima koreguoti ryškumo, nes jį valdo\n viršuje esanti programa"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Negalima koreguoti ryškumo, nes jį valdo viršuje esanti programa"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatinis pasukimas"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatiškai sukti ekraną"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Vietovė"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ nepalaiko pokalbių funkcijų"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Atsiliepimai"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Uždaryti"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Nerodyti kaip prisegtą"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Rodomos tiesioginės naujienos"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Prisegti pranešimai rodo tiesioginę informaciją iš programų ir visada rodomi būsenos juostoje bei užrakinimo ekrane"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Šių pranešimų keisti negalima."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Skambučių pranešimų keisti negalima."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Šios grupės pranešimai čia nekonfigūruojami"</string>
@@ -900,7 +898,8 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Kelių užduočių atlikimas"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Naudokite išskaidyto ekrano režimą su programa dešinėje"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Naudokite išskaidyto ekrano režimą su programa kairėje"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Perjunkite į viso ekrano režimą"</string>
+ <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Naudoti viso ekrano režimą"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Naudoti rodinio versiją staliniams kompiuteriams"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Perjunkite į programą dešinėje arba apačioje išskaidyto ekrano režimu"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Perjunkite į programą kairėje arba viršuje išskaidyto ekrano režimu"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Išskaidyto ekrano režimu: pakeisti iš vienos programos į kitą"</string>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Rodyti mažo prioriteto pranešimų piktogramas"</string>
<string name="other" msgid="429768510980739978">"Kita"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<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="8311378984458545661">"pridėti išklotinės elementą paskutinėje pozicijoje"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Perkelti išklotinės elementą"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Peržiūrėti naujausias programas"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Perjungti programas"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Atlikta"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Kitas"</string>
<string name="gesture_error_title" msgid="469064941635578511">"Bandykite dar kartą!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Grįžti"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Braukite kairėn arba dešinėn trimis pirštais bet kur jutiklinėje dalyje"</string>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Peržiūrėkite naujausias programas, jutiklinėje dalyje perbraukę aukštyn trimis pirštais ir palaikę"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Jei norite peržiūrėti visas programas, paspauskite klaviatūros veiksmų klavišą"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Paslėpta"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Atrakinkite, kad peržiūrėtumėte"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstinis švietimas"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Naudokite klaviatūrą, kad grįžtumėte atgal"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Perbraukite į kairę ar dešinę trimis pirštais. Palieskite, kad sužinotumėte daugiau gestų."</string>
diff --git a/packages/SystemUI/res/values-lt/tiles_states_strings.xml b/packages/SystemUI/res/values-lt/tiles_states_strings.xml
index 893d6ae..46c6f69 100644
--- a/packages/SystemUI/res/values-lt/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-lt/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Išjungta"</item>
<item msgid="5908720590832378783">"Įjungta"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Nepasiekiama"</item>
+ <item msgid="6641673879029894995">"Išjungta"</item>
+ <item msgid="5806682401126108403">"Įjungta"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index bf1ef96..9962226 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth savienojums ir izveidots."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth ierīces ikona"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Lai konfigurētu ierīces informāciju, noklikšķiniet"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Noklikšķiniet, lai skatītu visas ierīces"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Noklikšķiniet, lai savienotu pārī jaunu ierīci"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akumulatora uzlādes līmenis procentos nav zināms."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ir izveidots savienojum ar <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Savienots ar ierīci <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Ievade"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Dzirdes aparāti"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Notiek ieslēgšana…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nevar mainīt spilgtumu, jo to kontrolē\n aktīvā lietotne."</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nevar mainīt spilgtumu, jo to kontrolē aktīvā lietotne."</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automātiska pagriešana"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automātiska ekrāna pagriešana"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Atrašanās vieta"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Lietotnē <xliff:g id="APP_NAME">%1$s</xliff:g> netiek atbalstītas sarunu funkcijas."</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Atsauksmes"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Nerādīt"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Nerādīt kā piespraustu"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Reāllaika jaunumu rādīšana"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Piespraustajos paziņojumos tiek rādīta reāllaika informācija no lietotnēm, un tie vienmēr tiek rādīti statusa joslā un bloķēšanas ekrānā."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Šos paziņojumus nevar modificēt."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Paziņojumus par zvaniem nevar modificēt."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Šeit nevar konfigurēt šo paziņojumu grupu."</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Vairākuzdevumu režīms"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Izmantot ekrāna sadalīšanu ar lietotni labajā pusē"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Izmantot ekrāna sadalīšanu ar lietotni kreisajā pusē"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Pārslēgšana pilnekrāna režīmā"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Pāriet uz lietotni pa labi/lejā, kamēr izmantojat sadalīto ekrānu."</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Pāriet uz lietotni pa kreisi/augšā, kamēr izmantojat sadalīto ekrānu."</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Ekrāna sadalīšanas režīmā: pārvietot lietotni no viena ekrāna uz otru"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Rādīt zemas prioritātes paziņojumu ikonas"</string>
<string name="other" msgid="429768510980739978">"Citi"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"noņemt elementu"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"pievienotu elementu pēdējā pozīcijā"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pārvietot elementu"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Skatīt nesen izmantotās lietotnes"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Pārslēgties starp lietotnēm"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gatavs"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Lai skatītu nesenās lietotnes, ar trīs pirkstiem uz skārienpaliktņa velciet augšup un turiet."</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Lai skatītu visas savas lietotnes, tastatūrā nospiediet darbību taustiņu."</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Rediģēts"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Lai skatītu, atbloķējiet"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstuāla pamācība"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Atgriešanās, izmantojot skārienpaliktni"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Ar trīs pirkstiem velciet pa kreisi vai pa labi. Lai apgūtu citus žestus, pieskarieties šeit."</string>
diff --git a/packages/SystemUI/res/values-lv/tiles_states_strings.xml b/packages/SystemUI/res/values-lv/tiles_states_strings.xml
index 7329751..8e9268a 100644
--- a/packages/SystemUI/res/values-lv/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-lv/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Izslēgts"</item>
<item msgid="5908720590832378783">"Ieslēgts"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Nav pieejams"</item>
+ <item msgid="6641673879029894995">"Izslēgts"</item>
+ <item msgid="5806682401126108403">"Ieslēgts"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index e34d9d8..9d9c074 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth е поврзан."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Икона за уред со Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Кликнете за да ги конфигурирате деталите за уредот"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Кликнете за да се прикажат сите уреди"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Кликнете за да спарите нов уред"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Процентот на батеријата е непознат."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Поврзано со <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Поврзано со <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Влез"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слушни помагала"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Се вклучува…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не може да се приспособи осветленоста бидејќи е\n контролирана од горната апликација"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не може да се приспособи осветленоста бидејќи е контролирана од горната апликација"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автоматско ротирање"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоматско ротирање на екранот"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Локација"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддржува функции за разговор"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Повратни информации"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Отфрли"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Не прикажувај како закачено"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Прикажува новости во живо"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Закачените известувања прикажуваат информации во живо од апликациите и секогаш се појавуваат на статусната лента и на заклучениот екран"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Овие известувања не може да се изменат"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Известувањата за повици не може да се изменат."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Оваа група известувања не може да се конфигурира тука"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Прикажувај икони за известувања со низок приоритет"</string>
<string name="other" msgid="429768510980739978">"Друго"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"отстранување на плочката"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"додајте плочка на последната позиција"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместување на плочката"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Прикажи ги неодамнешните апликации"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Сменете ги апликациите"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"За да ги видите скорешните апликации, повлечете нагоре и задржете со три прста на допирната подлога"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Притиснете го копчето за дејство на тастатурата за да ги видите сите апликации"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Редактирано"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Отклучете за приказ"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контекстуално образование"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Користете ја допирната подлога за да се вратите назад"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Повлечете налево или надесно со три прста. Допрете за да научите повеќе движења."</string>
diff --git a/packages/SystemUI/res/values-mk/tiles_states_strings.xml b/packages/SystemUI/res/values-mk/tiles_states_strings.xml
index 67baf7c..752c386 100644
--- a/packages/SystemUI/res/values-mk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mk/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Исклучено"</item>
<item msgid="5908720590832378783">"Вклучено"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Недостапно"</item>
+ <item msgid="6641673879029894995">"Исклучено"</item>
+ <item msgid="5806682401126108403">"Вклучено"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 226822a..301c3da 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ബ്ലൂടൂത്ത് കണക്റ്റുചെയ്തു."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth ഉപകരണ ഐക്കൺ"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ഉപകരണത്തിന്റെ വിശദാംശങ്ങൾ കോൺഫിഗർ ചെയ്യാൻ ക്ലിക്ക് ചെയ്യുക"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"എല്ലാ ഉപകരണങ്ങളും കാണാൻ ക്ലിക്ക് ചെയ്യുക"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"പുതിയ ഉപകരണം ജോടിയാക്കാൻ ക്ലിക്ക് ചെയ്യുക"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ബാറ്ററി ശതമാനം അജ്ഞാതമാണ്."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> എന്നതിലേക്ക് കണക്റ്റുചെയ്തു."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> എന്നതിലേക്ക് കണക്റ്റുചെയ്തു."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ഇൻപുട്ട്"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ശ്രവണ സഹായികൾ"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ഓണാക്കുന്നു…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"തെളിച്ചം അഡ്ജസ്റ്റ് ചെയ്യാനാകില്ല, അത്\n നിയന്ത്രിക്കുന്നത് ഏറ്റവും മുകളിലുള്ള ആപ്പാണ്"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"തെളിച്ചം അഡ്ജസ്റ്റ് ചെയ്യാനാകില്ല, അത് നിയന്ത്രിക്കുന്നത് ഏറ്റവും മുകളിലുള്ള ആപ്പാണ്"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"സ്ക്രീൻ സ്വയമേവ തിരിയൽ"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"സ്ക്രീൻ സ്വയമേവ തിരിക്കുക"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"ലൊക്കേഷൻ"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"സംഭാഷണ ഫീച്ചറുകളെ <xliff:g id="APP_NAME">%1$s</xliff:g> പിന്തുണയ്ക്കുന്നില്ല"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ഫീഡ്ബാക്ക്"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"ഡിസ്മിസ് ചെയ്യുക"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"പിൻ ചെയ്തതായി കാണിക്കരുത്"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"തത്സമയ അപ്ഡേറ്റുകൾ കാണിക്കുന്നു"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"പിൻ ചെയ്ത അറിയിപ്പുകൾ, ആപ്പുകളിൽ നിന്നുള്ള തത്സമയ വിവരങ്ങൾ പ്രദർശിപ്പിക്കും, അവ എപ്പോഴും സ്റ്റാറ്റസ് ബാറിലും ലോക്ക് സ്ക്രീനിലും ദൃശ്യമാകും"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ഈ അറിയിപ്പുകൾ പരിഷ്ക്കരിക്കാനാവില്ല."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"കോൾ അറിയിപ്പുകൾ പരിഷ്കരിക്കാനാകുന്നില്ല."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"അറിയിപ്പുകളുടെ ഈ ഗ്രൂപ്പ് ഇവിടെ കോണ്ഫിഗര് ചെയ്യാൻ കഴിയില്ല"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"പ്രാധാന്യം കുറഞ്ഞ അറിയിപ്പ് ചിഹ്നങ്ങൾ"</string>
<string name="other" msgid="429768510980739978">"മറ്റുള്ളവ"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ടൈൽ നീക്കം ചെയ്യുക"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"അവസാന ഭാഗത്ത് ടൈൽ ചേർക്കുക"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ടൈൽ നീക്കുക"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"അടുത്തിടെയുള്ള ആപ്പുകൾ കാണുക"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ആപ്പുകൾ മാറുക"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"പൂർത്തിയായി"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"അടുത്തിടെ ഉപയോഗിച്ച ആപ്പുകൾ കാണാൻ, മൂന്ന് വിരലുകൾ ഉപയോഗിച്ച് ടച്ച്പാഡിൽ സ്വൈപ്പ് ചെയ്ത് പിടിക്കുക"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"എല്ലാ ആപ്പുകളും കാണാൻ, നിങ്ങളുടെ കീബോർഡിലെ ആക്ഷൻ കീ അമർത്തുക"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"മറച്ചത്"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"കാണാൻ, അൺലോക്ക് ചെയ്യുക"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"സന്ദർഭോചിത വിദ്യാഭ്യാസം"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"തിരികെ പോകാൻ നിങ്ങളുടെ ടച്ച്പാഡ് ഉപയോഗിക്കുക"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"മൂന്ന് വിരലുകൾ കൊണ്ട് ഇടത്തേക്കോ വലത്തേക്കോ സ്വൈപ്പ് ചെയ്യൂ. കൂടുതൽ ജെസ്ച്ചറുകളറിയാൻ ടാപ്പ് ചെയ്യൂ."</string>
diff --git a/packages/SystemUI/res/values-ml/tiles_states_strings.xml b/packages/SystemUI/res/values-ml/tiles_states_strings.xml
index 8639c10..e197c92 100644
--- a/packages/SystemUI/res/values-ml/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ml/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ഓഫാണ്"</item>
<item msgid="5908720590832378783">"ഓണാണ്"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"ലഭ്യമല്ല"</item>
+ <item msgid="6641673879029894995">"ഓഫാണ്"</item>
+ <item msgid="5806682401126108403">"ഓണാണ്"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 06b62e9..7c2e69c 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth холбогдсон."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth төхөөрөмжийн дүрс тэмдэг"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Төхөөрөмжийн дэлгэрэнгүйг тохируулахын тулд товшино уу"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Бүх төхөөрөмжийг харахын тулд товшино уу"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Шинэ төхөөрөмж хослуулахын тулд товшино уу"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Батарейн хувь тодорхойгүй байна."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>-тай холбогдсон."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>-д холбогдсон."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Оролт"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Сонсголын төхөөрөмж"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Асааж байна…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Гэрэлтүүлгийг\nдавуу эрхтэй аппаас хянаж байгаа тул тохируулах боломжгүй"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Гэрэлтүүлгийгдавуу эрхтэй аппаас хянаж байгаа тул тохируулах боломжгүй"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автоматаар эргэх"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Дэлгэцийг автоматаар эргүүлэх"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Байршил"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь харилцан ярианы онцлогуудыг дэмждэггүй"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Санал хүсэлт"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Хаах"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Бэхэлсэн байдлаар бүү харуул"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Шууд шинэчлэлтийг харуулж байна"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Бэхэлсэн мэдэгдэл нь аппуудын шууд мэдээллийг харуулдаг бөгөөд статусын мөр, түгжээтэй дэлгэц дээр үргэлж харагдана"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Эдгээр мэдэгдлийг өөрчлөх боломжгүй."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Дуудлагын мэдэгдлийг өөрчлөх боломжгүй."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Энэ бүлэг мэдэгдлийг энд тохируулах боломжгүй байна"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Бага ач холбогдолтой мэдэгдлийн дүрс тэмдгийг харуулах"</string>
<string name="other" msgid="429768510980739978">"Бусад"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"хавтанг хасна уу"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"хавтанг сүүлийн байрлалд нэмэх"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Хавтанг зөөх"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Саяхны аппуудыг харах"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Апп сэлгэх"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Болсон"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Саяхны аппуудыг харахын тулд мэдрэгч самбар дээр гурван хуруугаараа дээш шудраад, удаан дарна уу"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Бүх аппаа харахын тулд гар дээр тань байх тусгай товчлуурыг дарна уу"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Хассан"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Харахын тулд түгжээг тайлна уу"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Хам сэдэвт боловсрол"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Буцахын тулд мэдрэгч самбараа ашиглах"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Гурван хуруугаараа зүүн эсвэл баруун тийш шударна уу. Илүү олон зангаа сурахын тулд товшино уу."</string>
diff --git a/packages/SystemUI/res/values-mn/tiles_states_strings.xml b/packages/SystemUI/res/values-mn/tiles_states_strings.xml
index 678033c..7ca88e9 100644
--- a/packages/SystemUI/res/values-mn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mn/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Унтраалттай"</item>
<item msgid="5908720590832378783">"Асаалттай"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Боломжгүй"</item>
+ <item msgid="6641673879029894995">"Унтраалттай"</item>
+ <item msgid="5806682401126108403">"Асаалттай"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 4c2fd29..6889179 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ब्लूटूथ कनेक्ट केले."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ब्लूटूथ डिव्हाइस आयकन"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"डिव्हाइसचे तपशील कॉन्फिगर करण्यासाठी क्लिक करा"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"सर्व डिव्हाइस पाहण्यासाठी क्लिक करा"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"नवीन डिव्हाइस पेअर करण्यासाठी क्लिक करा"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. डिव्हाइसचे तपशील कॉन्फिगर करा"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"सर्व डिव्हाइस पहा"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"नवीन डिव्हाइस पेअर करा"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"बॅटरीच्या चार्जिंगची टक्केवारी माहित नाही."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> शी कनेक्ट केले."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> शी कनेक्ट केले."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"इनपुट"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"श्रवणयंत्रे"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"सुरू करत आहे…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ब्राइटनेस ॲडजस्ट करू शकत नाही, कारण तो\n टॉप ॲपद्वारे नियंत्रित केला जात आहे"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ब्राइटनेस ॲडजस्ट करू शकत नाही, कारण तो टॉप ॲपद्वारे नियंत्रित केला जात आहे"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ऑटो-रोटेट"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ऑटो-रोटेट स्क्रीन"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"स्थान"</string>
@@ -417,7 +418,7 @@
<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>
- <string name="hearing_devices_ambient_label" msgid="629440938614895797">"जवळपासचे आवाज"</string>
+ <string name="hearing_devices_ambient_label" msgid="629440938614895797">"जवळपासचे"</string>
<string name="hearing_devices_ambient_control_left" msgid="3586965448230412600">"डावे"</string>
<string name="hearing_devices_ambient_control_right" msgid="6192137602448918383">"उजवे"</string>
<string name="hearing_devices_ambient_expand_controls" msgid="2131816068187709200">"डाव्या आणि उजव्या स्वतंत्र नियंत्रणांचा विस्तार करा"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> हे संभाषण वैशिष्ट्यांना सपोर्ट करत नाही"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"फीडबॅक"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"डिसमिस करा"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"पिन केलेले म्हणून दाखवू नका"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"लाइव्ह अपडेट दाखवत आहे"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"पिन केलेली नोटिफिकेशन अॅप्समधील लाइव्ह माहिती दाखवतात आणि नेहमी स्टेटस बार व लॉक स्क्रीनवर दिसतात"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"या सूचनांमध्ये सुधारणा केली जाऊ शकत नाही."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"कॉलशी संबंधित सूचनांमध्ये फेरबदल केला जाऊ शकत नाही."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"या सूचनांचा संच येथे कॉन्फिगर केला जाऊ शकत नाही"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"फुल स्क्रीन वापरा"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"डेस्कटॉप दृश्य पहा"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"कमी प्राधान्य सूचना आयकन दर्शवा"</string>
<string name="other" msgid="429768510980739978">"अन्य"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"टाइल काढून टाका"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"टाइल शेवटच्या स्थानावर जोडा"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"टाइल हलवा"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"अलीकडील अॅप्स पहा"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"अॅप्स स्विच करा"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"पूर्ण झाले"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"पुढील"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"अलीकडील ॲप्स पाहण्यासाठी, टचपॅडवर तीन बोटांनी वरती स्वाइप करा आणि धरून ठेवा"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"तुमची सर्व ॲप्स पाहण्यासाठी, तुमच्या कीबोर्डवरील अॅक्शन की प्रेस करा"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"रिडॅक्ट केलेले"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"पाहण्यासाठी अनलॉक करा"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"संदर्भीय शिक्षण"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"मागे जाण्यासाठी तुमचा टचपॅड वापरा"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"तीन बोटांनी डावीकडे किंवा उजवीकडे स्वाइप करा. आणखी जेश्चर जाणून घेण्यासाठी टॅप करा."</string>
diff --git a/packages/SystemUI/res/values-mr/tiles_states_strings.xml b/packages/SystemUI/res/values-mr/tiles_states_strings.xml
index ec87659..58c4d06 100644
--- a/packages/SystemUI/res/values-mr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mr/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"बंद आहे"</item>
<item msgid="5908720590832378783">"सुरू आहे"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"उपलब्ध नाही"</item>
+ <item msgid="6641673879029894995">"बंद आहे"</item>
+ <item msgid="5806682401126108403">"सुरू आहे"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 93f25ff..b7e3153 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth disambungkan."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikon peranti Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik untuk mengkonfigurasi butiran peranti"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Klik untuk melihat semua peranti"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Klik untuk menggandingkan peranti baharu"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Peratusan kuasa bateri tidak diketahui."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Disambungkan kepada <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Disambungkan ke <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Alat bantu pendengaran"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Menghidupkan…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Tidak dapat melaraskan kecerahan kerana peranti\n dikawal oleh apl popular"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Tidak dapat melaraskan kecerahan kerana peranti dikawal oleh apl popular"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autoputar"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Autoputar skrin"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Lokasi"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak menyokong ciri perbualan"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Maklum balas"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Ketepikan"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Jangan papar sebagai disemat"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Menunjukkan Kemaskinian Langsung"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Pemberitahuan yang disematkan memaparkan maklumat langsung daripada apl dan sentiasa dipaparkan pada bar status dan skrin kunci"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Pemberitahuan ini tidak boleh diubah suai."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Pemberitahuan panggilan tidak boleh diubah suai."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Kumpulan pemberitahuan ini tidak boleh dikonfigurasikan di sini"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Berbilang tugas"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Gunakan skrin pisah dengan apl pada sebelah kanan"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Gunakan skrin pisah dengan apl pada sebelah kiri"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Beralih kepada skrin penuh"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Tukar kepada apl di sebelah kanan/bawah semasa menggunakan skrin pisah"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Tukar kepada apl di sebelah kiri/atas semasa menggunakan skrin pisah"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Semasa skrin pisah: gantikan apl daripada satu apl kepada apl lain"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Tunjukkan ikon pemberitahuan keutamaan rendah"</string>
<string name="other" msgid="429768510980739978">"Lain-lain"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"alih keluar jubin"</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>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Lihat apl terbaharu"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Tukar apl"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Selesai"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Untuk melihat apl terbaharu, leret ke atas dan tahan dengan tiga jari pada pad sentuh"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Untuk melihat semua apl, tekan kekunci tindakan pada papan kekunci"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Disunting"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Buka kunci untuk melihat"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Pendidikan kontekstual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Gunakan pad sentuh anda untuk kembali"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Leret ke kiri atau ke kanan dengan tiga jari. Ketik dan ketahui lebih lanjut tentang gerak isyarat."</string>
diff --git a/packages/SystemUI/res/values-ms/tiles_states_strings.xml b/packages/SystemUI/res/values-ms/tiles_states_strings.xml
index 6dc9827..5a55b76 100644
--- a/packages/SystemUI/res/values-ms/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ms/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Mati"</item>
<item msgid="5908720590832378783">"Hidup"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Tidak tersedia"</item>
+ <item msgid="6641673879029894995">"Mati"</item>
+ <item msgid="5806682401126108403">"Hidup"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index bed07ef..72f0369 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ဘလူးတုသ်ချိတ်ဆက်ထားမှု"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ဘလူးတုသ်သုံးစက် သင်္ကေတ"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"စက်အသေးစိတ်ကို စီစဉ်သတ်မှတ်ရန် နှိပ်ပါ"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"စက်အားလုံးကြည့်ရန် နှိပ်ပါ"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"စက်အသစ် တွဲချိတ်ရန် နှိပ်ပါ"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ဘက်ထရီရာခိုင်နှုန်းကို မသိပါ။"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>သို့ ချိတ်ဆက်ထား"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> သို့ချိတ်ဆက်ထားပါသည်။"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"အဝင်"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"နားကြားကိရိယာ"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ဖွင့်နေသည်…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"၎င်းကို ထိပ်ဆုံးရှိအက်ပ်က\n ထိန်းချုပ်နေသဖြင့် တောက်ပမှုကို ပြင်ဆင်၍မရပါ"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"၎င်းကို ထိပ်ဆုံးရှိအက်ပ်က ထိန်းချုပ်နေသဖြင့် တောက်ပမှုကို ပြင်ဆင်၍မရပါ"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"အော်တို-လည်"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"မျက်နှာပြင်အား အလိုအလျောက်လှည့်ခြင်း"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"တည်နေရာ"</string>
@@ -530,7 +534,7 @@
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ဝိဂျက် ဖယ်ရှားရန်"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ရွေးချယ်ထားသော ဝိဂျက်ကို တင်ရန်"</string>
<string name="communal_widget_picker_title" msgid="1953369090475731663">"လော့ခ်မျက်နှာပြင် ဝိဂျက်များ"</string>
- <string name="communal_widget_picker_description" msgid="490515450110487871">"တက်ဘလက်လော့ခ်ချထားသော်လည်း မည်သူမဆို လော့ခ်မျက်နှာပြင်ဝိဂျက်ကို ကြည့်နိုင်သည်။"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"တက်ဘလက်လော့ခ်ချထားစဉ် မည်သူမဆို လော့ခ်မျက်နှာပြင်ရှိ ဝိဂျက်များကို မြင်နိုင်သည်။"</string>
<string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ဝိဂျက် ပြန်ဖြုတ်ရန်"</string>
<string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"အမြင့်ကို လျှော့ရန်"</string>
<string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"အမြင့်ကို တိုးရန်"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> က စကားဝိုင်းဝန်ဆောင်မှုများကို မပံ့ပိုးပါ"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"အကြံပြုချက်"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"ပယ်ရန်"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"ပင်ထိုးထားသည့်အတိုင်း မပြရ"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"တိုက်ရိုက် အပ်ဒိတ်များ ပြနေသည်"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"ပင်ထိုးထားသော အကြောင်းကြားချက်များသည် အက်ပ်များမှ တိုက်ရိုက်အချက်အလက်များကိုပြပြီး ၎င်းတို့ကို အခြေအနေပြဘားနှင့် လော့ခ်မျက်နှာပြင်တို့တွင် အမြဲမြင်ရသည်"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ဤအကြောင်းကြားချက်များကို ပြုပြင်၍ မရပါ။"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ခေါ်ဆိုမှုအကြောင်းကြားချက်များကို ပြင်၍မရပါ။"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ဤအကြောင်းကြားချက်အုပ်စုကို ဤနေရာတွင် စီစဉ်သတ်မှတ်၍ မရပါ"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"အရေးမကြီးသော အကြောင်းကြားချက် သင်္ကေတများ ပြရန်"</string>
<string name="other" msgid="429768510980739978">"အခြား"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"အကွက်ငယ်ကို ဖယ်ရှားရန်"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"နောက်ဆုံးနေရာတွင် အကွက်ငယ် ထည့်ရန်"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"အကွက်ငယ်ကို ရွှေ့ရန်"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"မကြာသေးမီကအက်ပ်များကို ကြည့်ရန်"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"အက်ပ်များကူးပြောင်းခြင်း"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ပြီးပြီ"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"လတ်တလောအက်ပ်များကို ကြည့်ရန် တာ့ချ်ပက်ပေါ်တွင် လက်သုံးချောင်းဖြင့် အပေါ်သို့ပွတ်ဆွဲပြီး ဖိထားပါ"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"သင့်အက်ပ်အားလုံးကြည့်ရန် ကီးဘုတ်ပေါ်ရှိ လုပ်ဆောင်ချက်ကီးကို နှိပ်ပါ"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"အစားထိုးထားသည်"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"ကြည့်ရန် ဖွင့်ပါ"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"အကြောင်းအရာအလိုက် ပညာရေး"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"နောက်ပြန်သွားရန် သင့်တာ့ချ်ပက်ကို သုံးပါ"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"လက်သုံးချောင်းဖြင့် ဘယ် (သို့) ညာသို့ ပွတ်ဆွဲပါ။ လက်ဟန်များ ပိုမိုလေ့လာရန် တို့ပါ။"</string>
diff --git a/packages/SystemUI/res/values-my/tiles_states_strings.xml b/packages/SystemUI/res/values-my/tiles_states_strings.xml
index 424b4b9..7789205 100644
--- a/packages/SystemUI/res/values-my/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-my/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ပိတ်"</item>
<item msgid="5908720590832378783">"ဖွင့်"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"မရနိုင်ပါ"</item>
+ <item msgid="6641673879029894995">"ပိတ်"</item>
+ <item msgid="5806682401126108403">"ဖွင့်"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 7e87efc..72d7956 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth er tilkoblet."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikon for Bluetooth-enheter"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klikk for å konfigurere enhetsdetaljer"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Klikk for å se alle enhetene"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Klikk for å koble sammen en ny enhet"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batteriprosenten er ukjent."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Koblet til <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Koblet til <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Innenhet"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Høreapparater"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Slår på …"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kan ikke justere lysstyrken, fordi den\n kontrolleres av appen på toppen"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kan ikke justere lysstyrken, fordi den kontrolleres av appen på toppen"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotér automatisk"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotér skjermen automatisk"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Sted"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> støtter ikke samtalefunksjoner"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Tilbakemelding"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Lukk"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ikke vis som festet"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Viser direkteoppdateringer"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Festede varsler viser sanntidsinformasjon fra apper og vises alltid i statusfeltet og på låseskjermen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse varslene kan ikke endres."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Anropsvarsler kan ikke endres."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Denne varselgruppen kan ikke konfigureres her"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Bruk delt skjerm med appen til høyre"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Bruk delt skjerm med appen til venstre"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Bytt til fullskjerm"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Bytt til appen til høyre eller under mens du bruker delt skjerm"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Bytt til appen til venstre eller over mens du bruker delt skjerm"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"I delt skjerm: Bytt ut en app"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Vis ikoner for varsler med lav prioritet"</string>
<string name="other" msgid="429768510980739978">"Annet"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjerne infobrikken"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"legge til en brikke på den siste posisjonen"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Flytt infobrikken"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Se nylige apper"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Bytt app"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Ferdig"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"For å se nylige apper, sveip opp og hold med tre fingre på styreflaten"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"For å se alle appene dine, trykk på handlingstasten på tastaturet"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Fjernet"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Lås opp for å se"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstuell opplæring"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Bruk styreflaten for å gå tilbake"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Sveip til venstre eller høyre med tre fingre. Trykk for å lære flere bevegelser."</string>
diff --git a/packages/SystemUI/res/values-nb/tiles_states_strings.xml b/packages/SystemUI/res/values-nb/tiles_states_strings.xml
index bbeafd8..25b2205 100644
--- a/packages/SystemUI/res/values-nb/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-nb/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Av"</item>
<item msgid="5908720590832378783">"På"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Utilgjengelig"</item>
+ <item msgid="6641673879029894995">"Av"</item>
+ <item msgid="5806682401126108403">"På"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index cc07b7f..8e0ee77 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ब्लुटुथ जडान भयो।"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ब्लुटुथ डिभाइस जनाउने आइकन"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"डिभाइसको विवरण कन्फिगर गर्न क्लिक गर्नुहोस्"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"सबै डिभाइसहरू हेर्न क्लिक गर्नुहोस्"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"नयाँ डिभाइसमा कनेक्ट गर्न क्लिक गर्नुहोस्"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ब्याट्रीमा कति प्रतिशत चार्ज छ भन्ने कुराको जानाकरी छैन।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> मा जडित।"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> मा कनेक्ट गरियो।"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"इनपुट"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"हियरिङ डिभाइसहरू"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"सक्रिय गर्दै…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"टप एपले चमक नियन्त्रण गरिरहेकाले\n चमक मिलाउन मिल्दैन"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"टप एपले चमक नियन्त्रण गरिरहेकाले चमक मिलाउन मिल्दैन"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"अटो रोटेट"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"स्क्रिन स्वतःघुम्ने"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"लोकेसन"</string>
@@ -424,7 +428,7 @@
<string name="hearing_devices_ambient_collapse_controls" msgid="2261097656446201581">"कोल्याप्स गरी एउटै कन्ट्रोल बनाउनुहोस्"</string>
<string name="hearing_devices_ambient_mute" msgid="1836882837647429416">"वरपरका आवाज म्युट गर्नुहोस्"</string>
<string name="hearing_devices_ambient_unmute" msgid="2187938085943876814">"वरपरका आवाज अनम्युट गर्नुहोस्"</string>
- <string name="hearing_devices_tools_label" msgid="1929081464316074476">"टुल"</string>
+ <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>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"डिभाइसको माइक्रोफोन अनब्लक गर्ने हो?"</string>
@@ -506,7 +510,7 @@
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"कम्युनल ट्युटोरियल सुरु गर्न बायाँतिर स्वाइप गर्नुहोस्"</string>
<string name="cta_tile_button_to_open_widget_editor" msgid="3871562362382963878">"कस्टमाइज गर्नुहोस्"</string>
<string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"खारेज गर्नुहोस्"</string>
- <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"यो स्पेसमा आफ्ना विजेटहरू हाल्नुहोस्, हटाउनुहोस् र तिनका क्रम फेरि मिलाउनुहोस्"</string>
+ <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"यो स्पेसमा विजेटहरू हाल्नुहोस्, हटाउनुहोस् र तिनको क्रम मिलाउनुहोस्"</string>
<string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"थप विजेटहरू हाल्नुहोस्"</string>
<string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"विजेटहरू कस्टमाइज गर्न केही बेरसम्म थिच्नुहोस्"</string>
<string name="button_to_configure_widgets_text" msgid="4191862850185256901">"विजेटहरू कस्टमाइज गर्नुहोस्"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> मा वार्तालापसम्बन्धी सुविधा प्रयोग गर्न मिल्दैन"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"प्रतिक्रिया"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"हटाउनुहोस्"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"पिन गरिएका अपडेटका रूपमा नदेखाउनुहोस्"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"लाइभ अपडेटहरू देखाइँदै छन्"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"पिन गरिएका नोटिफिकेसनमा एपहरूबाट प्राप्त हालको जानकारी देखाइन्छ र ती नोटिफिकेसन सधैँ स्ट्याटस बार र लक स्क्रिनमा देखिन्छन्"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"यी सूचनाहरू परिमार्जन गर्न मिल्दैन।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"कलसम्बन्धी सूचनाहरू परिमार्जन गर्न मिल्दैन।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"यहाँबाट सूचनाहरूको यो समूह कन्फिगर गर्न सकिँदैन"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"कम प्राथमिकताका सूचना आइकनहरू देखाउनुहोस्"</string>
<string name="other" msgid="429768510980739978">"अन्य"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"टाइल हटाउनुहोस्"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"अन्तिम स्थानमा टाइल हाल्नुहोस्"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"टाइल सार्नुहोस्"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"हालसालै चलाइएका एपहरू हेर्नुहोस्"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"एपहरू बदल्नुहोस्"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"सम्पन्न भयो"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"आफूले हालसालै चलाएका एपहरू हेर्न तीन वटा औँलाले टचप्याडमा माथितिर स्वाइप गर्नुहोस् र होल्ड गर्नुहोस्"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"आफ्ना सबै एपहरू हेर्न आफ्नो किबोर्डमा भएको एक्सन की थिच्नुहोस्"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"जानकारी लुकाउन सम्पादन गरिएको"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"हेर्नका लागि अनलक गर्नुहोस्"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"सान्दर्भिक शिक्षा"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"पछाडि जान आफ्नो टचप्याड प्रयोग गर्नुहोस्"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"तीन वटा औँला प्रयोग गरी बायाँ वा दायाँतिर स्वाइप गर्नुहोस्। थप जेस्चर प्रयोग गर्ने तरिका सिक्न ट्याप गर्नुहोस्।"</string>
diff --git a/packages/SystemUI/res/values-ne/tiles_states_strings.xml b/packages/SystemUI/res/values-ne/tiles_states_strings.xml
index de3baa0..fe812f8 100644
--- a/packages/SystemUI/res/values-ne/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ne/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"अफ छ"</item>
<item msgid="5908720590832378783">"अन छ"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"उपलब्ध छैन"</item>
+ <item msgid="6641673879029894995">"अफ छ"</item>
+ <item msgid="5806682401126108403">"अन छ"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index b778cec..e789798 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth-verbinding ingesteld."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icoon voor bluetooth-apparaat"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik om de apparaatgegevens in te stellen"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Klik om alle apparaten te bekijken"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Klik om nieuw apparaat te koppelen"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batterijpercentage onbekend."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Verbonden met <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Verbonden met <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Invoer"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hoortoestellen"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aanzetten…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kan de helderheid niet aanpassen omdat deze wordt\n beheerd door de bovenste app"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kan de helderheid niet aanpassen omdat deze wordt beheerd door de bovenste app"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatisch draaien"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Scherm automatisch draaien"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Locatie"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ondersteunt geen gespreksfuncties"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Sluiten"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Niet tonen als vastgezet"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Live updates worden getoond"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Vastgezette meldingen tonen live informatie van apps en verschijnen altijd in de statusbalk en op het vergrendelscherm"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Deze meldingen kunnen niet worden aangepast."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Gespreksmeldingen kunnen niet worden aangepast."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Deze groep meldingen kan hier niet worden ingesteld"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasken"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Gesplitst scherm gebruiken met de app aan de rechterkant"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Gesplitst scherm gebruiken met de app aan de linkerkant"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Overschakelen naar volledig scherm"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Naar de app rechts of onderaan gaan als je een gesplitst scherm gebruikt"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Naar de app links of bovenaan gaan als je een gesplitst scherm gebruikt"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Tijdens gesplitst scherm: een app vervangen door een andere"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Iconen voor meldingen met lage prioriteit tonen"</string>
<string name="other" msgid="429768510980739978">"Overig"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"tegel verwijderen"</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>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Recente apps bekijken"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Wisselen tussen apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klaar"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Als je recente apps wilt bekijken, swipe je met 3 vingers omhoog op de touchpad en houd je vast"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Als je alle apps wilt bekijken, druk je op de actietoets op je toetsenbord"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Verborgen"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Ontgrendelen om te bekijken"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Contextuele educatie"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Je touchpad gebruiken om terug te gaan"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Swipe met 3 vingers naar links of rechts. Tik voor meer gebaren."</string>
diff --git a/packages/SystemUI/res/values-nl/tiles_states_strings.xml b/packages/SystemUI/res/values-nl/tiles_states_strings.xml
index 90572b6..bb8fbe0 100644
--- a/packages/SystemUI/res/values-nl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-nl/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Uit"</item>
<item msgid="5908720590832378783">"Aan"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Niet beschikbaar"</item>
+ <item msgid="6641673879029894995">"Uit"</item>
+ <item msgid="5806682401126108403">"Aan"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 0ef622b..469ae28 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ବ୍ଲୁଟୂଥ୍ ସଂଯୋଗ କରାଯାଇଛି।"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ବ୍ଲୁଟୁଥ ଡିଭାଇସ ଆଇକନ"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ଡିଭାଇସ ବିବରଣୀକୁ କନଫିଗର କରିବା ପାଇଁ କ୍ଲିକ କରନ୍ତୁ"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"ସମସ୍ତ ଡିଭାଇସ ଦେଖିବାକୁ କ୍ଲିକ କରନ୍ତୁ"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"ନୂଆ ଡିଭାଇସ ପେୟାର କରିବାକୁ କ୍ଲିକ କରନ୍ତୁ"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ବ୍ୟାଟେରୀ ଶତକଡ଼ା ଅଜଣା ଅଟେ।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ସହ ସଂଯୁକ୍ତ"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> ସହିତ ସଂଯୁକ୍ତ।"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ଇନପୁଟ୍"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ଶ୍ରବଣ ଯନ୍ତ୍ର"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ଅନ୍ ହେଉଛି…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ଟପ ଆପ ଦ୍ୱାରା ଉଜ୍ଜ୍ୱଳତା ନିୟନ୍ତ୍ରିତ\nହେଉଥିବା ଯୋଗୁଁ ଏହାକୁ ଆଡଜଷ୍ଟ କରିପାରିବେ ନାହିଁ"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ଟପ ଆପ ଦ୍ୱାରା ଉଜ୍ଜ୍ୱଳତା ନିୟନ୍ତ୍ରିତହେଉଥିବା ଯୋଗୁଁ ଏହାକୁ ଆଡଜଷ୍ଟ କରିପାରିବେ ନାହିଁ"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ଅଟୋ-ରୋଟେଟ"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ଅଟୋ-ରୋଟେଟ ସ୍କ୍ରିନ"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"ଲୋକେସନ"</string>
@@ -354,7 +358,7 @@
<string name="quick_settings_inversion_label" msgid="3501527749494755688">"କଲର ଇନଭର୍ସନ"</string>
<string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ରଙ୍ଗ ସଂଶୋଧନ"</string>
<string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"ଫଣ୍ଟର ଆକାର"</string>
- <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ୟୁଜରମାନଙ୍କୁ ପରିଚାଳନା କରନ୍ତୁ"</string>
+ <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ୟୁଜରଙ୍କୁ ପରିଚାଳନା"</string>
<string name="quick_settings_done" msgid="2163641301648855793">"ହୋଇଗଲା"</string>
<string name="quick_settings_close_user_panel" msgid="5599724542275896849">"ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="quick_settings_connected" msgid="3873605509184830379">"ସଂଯୁକ୍ତ"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବାର୍ତ୍ତାଳାପ ଫିଚରଗୁଡ଼ିକୁ ସମର୍ଥନ କରେ ନାହିଁ"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ମତାମତ"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"ଖାରଜ କରନ୍ତୁ"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"ପିନ ଥିବା ଭାବେ ଦେଖାନ୍ତୁ ନାହିଁ"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"ଲାଇଭ ଅପଡେଟଗୁଡ଼ିକୁ ଦେଖାଉଛି"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"ପିନ କରାଯାଇଥିବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ଆପ୍ସରୁ ଲାଇଭ ସୂଚନା ଡିସପ୍ଲେ କରେ ଏବଂ ସର୍ବଦା ଷ୍ଟାଟସ ବାର ଓ ଲକ ସ୍କ୍ରିନରେ ଦେଖାଯାଏ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପରିବର୍ତ୍ତନ କରିହେବ ନାହିଁ।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"କଲ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରାଯାଇପାରିବ ନାହିଁ।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ଏଠାରେ ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ଗ୍ରୁପ୍ କନଫ୍ୟୁଗର୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
@@ -835,7 +836,7 @@
<string name="notification_menu_gear_description" msgid="6429668976593634862">"ବିଜ୍ଞପ୍ତି ନିୟନ୍ତ୍ରଣ"</string>
<string name="notification_menu_snooze_description" msgid="4740133348901973244">"ବିଜ୍ଞପ୍ତି ସ୍ନୁଜ୍ ବିକଳ୍ପ"</string>
<string name="notification_menu_snooze_action" msgid="5415729610393475019">"ମୋତେ ରିମାଇଣ୍ଡର୍ କରନ୍ତୁ"</string>
- <string name="snooze_undo" msgid="2738844148845992103">"ପୂର୍ବବତ୍ କରନ୍ତୁ"</string>
+ <string name="snooze_undo" msgid="2738844148845992103">"ଅନଡୁ କରନ୍ତୁ"</string>
<string name="snooze_undo_content_description" msgid="2711656788917580801">"ବିଜ୍ଞପ୍ତି ସ୍ନୁଜକୁ ପୂର୍ବବତ କରନ୍ତୁ"</string>
<string name="snoozed_for_time" msgid="7586689374860469469">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> ପାଇଁ ସ୍ନୁଜ୍ କରାଗଲା"</string>
<string name="snoozeHourOptions" msgid="2332819756222425558">"{count,plural, =1{# ଘଣ୍ଟା}=2{# ଘଣ୍ଟା}other{# ଘଣ୍ଟା}}"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"କମ୍-ଅଗ୍ରାଧିକାର ବିଜ୍ଞପ୍ତି ଆଇକନ୍ ଦେଖାନ୍ତୁ"</string>
<string name="other" msgid="429768510980739978">"ଅନ୍ୟ"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ଟାଇଲ୍ କାଢ଼ି ଦିଅନ୍ତୁ"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ଶେଷ ପୋଜିସନରେ ଟାଇଲ ଯୋଗ କରିବା"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ଟାଇଲ୍ ମୁଭ୍ କରନ୍ତୁ"</string>
@@ -1132,7 +1138,7 @@
<string name="accessibility_magnification_magnifier_window_settings" msgid="2834685072221468434">"ମ୍ୟାଗ୍ନିଫାୟର ୱିଣ୍ଡୋର ସେଟିଂସ"</string>
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ଆକ୍ସେସିବିଲିଟୀ ଫିଚର ଖୋଲିବାକୁ ଟାପ କରନ୍ତୁ। ସେଟିଂସରେ ଏହି ବଟନକୁ କଷ୍ଟମାଇଜ କର କିମ୍ବା ବଦଳାଅ।\n\n"<annotation id="link">"ସେଟିଂସ ଦେଖନ୍ତୁ"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ବଟନକୁ ଅସ୍ଥାୟୀ ଭାବେ ଲୁଚାଇବା ପାଇଁ ଏହାକୁ ଗୋଟିଏ ଧାରକୁ ମୁଭ୍ କରନ୍ତୁ"</string>
- <string name="accessibility_floating_button_undo" msgid="511112888715708241">"ପୂର୍ବବତ୍ କରନ୍ତୁ"</string>
+ <string name="accessibility_floating_button_undo" msgid="511112888715708241">"ଅନଡୁ କରନ୍ତୁ"</string>
<string name="accessibility_floating_button_hidden_notification_title" msgid="4115036997406994799">"ଆକ୍ସେସିବିଲିଟୀ ବଟନକୁ ଲୁଚାଯାଇଛି"</string>
<string name="accessibility_floating_button_hidden_notification_text" msgid="1457021647040915658">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ ଦେଖାଇବାକୁ ଟାପ କରନ୍ତୁ"</string>
<string name="accessibility_floating_button_undo_message_label_text" msgid="9017658016426242640">"<xliff:g id="FEATURE_NAME">%s</xliff:g> ସର୍ଟକଟକୁ କାଢ଼ି ଦିଆଯାଇଛି"</string>
@@ -1210,7 +1216,7 @@
<string name="controls_media_smartspace_rec_item_description" msgid="2189271793070870883">"<xliff:g id="APP_LABEL">%3$s</xliff:g>ରୁ <xliff:g id="ARTIST_NAME">%2$s</xliff:g>ଙ୍କ <xliff:g id="SONG_NAME">%1$s</xliff:g> ଚଲାନ୍ତୁ"</string>
<string name="controls_media_smartspace_rec_item_no_artist_description" msgid="8703614798636591077">"<xliff:g id="APP_LABEL">%2$s</xliff:g>ରୁ <xliff:g id="SONG_NAME">%1$s</xliff:g> ଚଲାନ୍ତୁ"</string>
<string name="controls_media_smartspace_rec_header" msgid="5053461390357112834">"ଆପଣଙ୍କ ପାଇଁ"</string>
- <string name="media_transfer_undo" msgid="1895606387620728736">"ପୂର୍ବବତ୍ କରନ୍ତୁ"</string>
+ <string name="media_transfer_undo" msgid="1895606387620728736">"ଅନଡୁ କରନ୍ତୁ"</string>
<string name="media_move_closer_to_start_cast" msgid="2673104707465013176">"<xliff:g id="DEVICENAME">%1$s</xliff:g>ରେ ପ୍ଲେ କରିବା ପାଇଁ ପାଖକୁ ମୁଭ କରନ୍ତୁ"</string>
<string name="media_move_closer_to_end_cast" msgid="7302555909119374738">"ଏଠାରେ ପ୍ଲେ କରିବା ପାଇଁ <xliff:g id="DEVICENAME">%1$s</xliff:g> ପାଖକୁ ମୁଭ କରନ୍ତୁ"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g>ରେ ପ୍ଲେ ହେଉଛି"</string>
@@ -1356,7 +1362,7 @@
<string name="clipboard_image_preview" msgid="2156475174343538128">"ଇମେଜ ପ୍ରିଭ୍ୟୁ"</string>
<string name="clipboard_edit" msgid="4500155216174011640">"ଏଡିଟ କରନ୍ତୁ"</string>
<string name="add" msgid="81036585205287996">"ଯୋଗ କରନ୍ତୁ"</string>
- <string name="manage_users" msgid="1823875311934643849">"ୟୁଜରମାନଙ୍କୁ ପରିଚାଳନା କରନ୍ତୁ"</string>
+ <string name="manage_users" msgid="1823875311934643849">"ୟୁଜରଙ୍କୁ ପରିଚାଳନା"</string>
<string name="drag_split_not_supported" msgid="7173481676120546121">"ଏହି ବିଜ୍ଞପ୍ତି ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନକୁ ଟାଣିବାକୁ ସମର୍ଥନ କରେ ନାହିଁ"</string>
<string name="dream_overlay_location_active" msgid="6484763493158166618">"ଲୋକେସନ ସକ୍ରିୟ ଅଛି"</string>
<string name="dream_overlay_status_bar_wifi_off" msgid="4497069245055003582">"ୱାଇ-ଫାଇ ଉପଲବ୍ଧ ନାହିଁ"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ବର୍ତ୍ତମାନର ଆପ୍ସ ଭ୍ୟୁ କରନ୍ତୁ"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ଆପ୍ସକୁ ସୁଇଚ କରନ୍ତୁ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ହୋଇଗଲା"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"ବର୍ତ୍ତମାନର ଆପ୍ସ ଭ୍ୟୁ କରିବାକୁ, ଟଚପେଡରେ ତିନୋଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ କରି ଧରି ରଖନ୍ତୁ"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ଆପଣଙ୍କ ସମସ୍ତ ଆପ୍ସ ଭ୍ୟୁ କରିବା ପାଇଁ ଆପଣଙ୍କ କୀବୋର୍ଡରେ ଆକ୍ସନ କୀ\'କୁ ଦବାନ୍ତୁ"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"ଲୁଚା ଯାଇଥିବା"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"ଭ୍ୟୁ କରିବାକୁ ଅନଲକ କରନ୍ତୁ"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"ପ୍ରାସଙ୍ଗିକ ଶିକ୍ଷା"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"ପଛକୁ ଫେରିବା ପାଇଁ ଆପଣଙ୍କ ଟଚପେଡକୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"ତିନୋଟି ଆଙ୍ଗୁଠିରେ ବାମ ବା ଡାହାଣକୁ ସ୍ୱାଇପ କରନ୍ତୁ। ଜେଶ୍ଚରଗୁଡ଼ିକ ବିଷୟରେ ଅଧିକ ଜାଣିବାକୁ ଟାପ କରନ୍ତୁ।"</string>
diff --git a/packages/SystemUI/res/values-or/tiles_states_strings.xml b/packages/SystemUI/res/values-or/tiles_states_strings.xml
index c9c3198..eae984b 100644
--- a/packages/SystemUI/res/values-or/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-or/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ବନ୍ଦ ଅଛି"</item>
<item msgid="5908720590832378783">"ଚାଲୁ ଅଛି"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"ଅନୁପଲବ୍ଧ"</item>
+ <item msgid="6641673879029894995">"ବନ୍ଦ ଅଛି"</item>
+ <item msgid="5806682401126108403">"ଚାଲୁ ଅଛି"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 4be78a3..70d2497 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth ਕਨੈਕਟ ਕੀਤੀ।"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ਬਲੂਟੁੱਥ ਡੀਵਾਈਸ ਦਾ ਪ੍ਰਤੀਕ"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ਡੀਵਾਈਸ ਦੇ ਵੇਰਵੇ ਦਾ ਸੰਰੂਪਣ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"\'ਸਾਰੇ ਡੀਵਾਈਸ ਦੇਖੋ\' \'ਤੇ ਕਲਿੱਕ ਕਰੋ"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"\'ਨਵਾਂ ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕਰੋ\' \'ਤੇ ਕਲਿੱਕ ਕਰੋ"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. ਡੀਵਾਈਸ ਦੇ ਵੇਰਵੇ ਦਾ ਸੰਰੂਪਣ ਕਰੋ"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"ਸਾਰੇ ਡੀਵਾਈਸ ਦੇਖੋ"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"ਨਵਾਂ ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕਰੋ"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ਬੈਟਰੀ ਪ੍ਰਤੀਸ਼ਤ ਅਗਿਆਤ ਹੈ।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ।"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ।"</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ਇਨਪੁੱਟ"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ਸੁਣਨ ਦੇ ਸਾਧਨ"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ਚਮਕ ਨੂੰ ਵਿਵਸਥਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਕਿਉਂਕਿ ਇਹ ਪਹਿਲਾਂ ਚੱਲ ਰਹੀ ਐਪ ਵੱਲੋਂ ਕੰਟਰੋਲ ਕਰਨ ਕਰਕੇ \n ਹੋ ਰਿਹਾ ਹੈ"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ਚਮਕ ਨੂੰ ਵਿਵਸਥਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਕਿਉਂਕਿ ਇਹ ਪਹਿਲਾਂ ਚੱਲ ਰਹੀ ਐਪ ਵੱਲੋਂ ਕੰਟਰੋਲ ਕਰਨ ਕਰਕੇ ਹੋ ਰਿਹਾ ਹੈ"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ਸਵੈ-ਘੁਮਾਓ"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ਸਕ੍ਰੀਨ ਨੂੰ ਆਪਣੇ ਆਪ ਘੁੰਮਾਓ"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"ਟਿਕਾਣਾ"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਐਪ ਗੱਲਬਾਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ਵਿਚਾਰ"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"ਖਾਰਜ ਕਰੋ"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"ਪਿੰਨ ਕੀਤੇ ਵਜੋਂ ਨਾ ਦਿਖਾਓ"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"ਲਾਈਵ ਅੱਪਡੇਟ ਦਿਖਾਏ ਜਾ ਰਹੇ ਹਨ"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"ਪਿੰਨ ਕੀਤੀਆਂ ਸੂਚਨਾਵਾਂ ਐਪਾਂ ਤੋਂ ਲਾਈਵ ਜਾਣਕਾਰੀ ਦਿਖਾਉਂਦੀਆਂ ਹਨ ਅਤੇ ਇਹ ਜਾਣਕਾਰੀ ਹਮੇਸ਼ਾਂ ਸਥਿਤੀ ਪੱਟੀ ਅਤੇ ਲਾਕ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿਖਦੀ ਹੈ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਸੋਧਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ਕਾਲ ਸੰਬੰਧੀ ਸੂਚਨਾਵਾਂ ਨੂੰ ਸੋਧਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ਇਹ ਸੂਚਨਾਵਾਂ ਦਾ ਗਰੁੱਪ ਇੱਥੇ ਸੰਰੂਪਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"ਪੂਰੀ ਸਕ੍ਰੀਨ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ਡੈਸਕਟਾਪ ਦ੍ਰਿਸ਼ ਦੀ ਵਰਤੋਂ ਕਰੋ"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"ਘੱਟ ਤਰਜੀਹ ਵਾਲੇ ਸੂਚਨਾ ਪ੍ਰਤੀਕਾਂ ਨੂੰ ਦਿਖਾਓ"</string>
<string name="other" msgid="429768510980739978">"ਹੋਰ"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ਟਾਇਲ ਹਟਾਓ"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ਪਿਛਲੀ ਸਥਿਤੀ \'ਤੇ ਟਾਇਲ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ਟਾਇਲ ਨੂੰ ਲਿਜਾਓ"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ਹਾਲੀਆ ਐਪਾਂ ਦੇਖੋ"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ਐਪਾਂ ਵਿਚਕਾਰ ਸਵਿੱਚ ਕਰੋ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ਹੋ ਗਿਆ"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"ਅੱਗੇ"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"ਹਾਲੀਆ ਐਪਾਂ ਨੂੰ ਦੇਖਣ ਲਈ, ਟੱਚਪੈਡ \'ਤੇ ਤਿੰਨ ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰ ਕੇ ਦਬਾਈ ਰੱਖੋ"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ਆਪਣੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਨੂੰ ਦੇਖਣ ਲਈ, ਆਪਣੇ ਕੀ-ਬੋਰਡ \'ਤੇ ਕਾਰਵਾਈ ਕੁੰਜੀ ਨੂੰ ਦਬਾਓ"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"ਅਸਪਸ਼ਟ ਬਣਾਇਆ ਗਿਆ"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"ਦੇਖਣ ਲਈ ਅਣਲਾਕ ਕਰੋ"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"ਸੰਦਰਭੀ ਸਿੱਖਿਆ"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"ਪਿੱਛੇ ਜਾਣ ਲਈ ਆਪਣੇ ਟੱਚਪੈਡ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"ਤਿੰਨ ਉਂਗਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਸਵਾਈਪ ਕਰੋ। ਹੋਰ ਇਸ਼ਾਰਿਆਂ ਨੂੰ ਜਾਣਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
diff --git a/packages/SystemUI/res/values-pa/tiles_states_strings.xml b/packages/SystemUI/res/values-pa/tiles_states_strings.xml
index eeb9a5b..2baff30 100644
--- a/packages/SystemUI/res/values-pa/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pa/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ਬੰਦ"</item>
<item msgid="5908720590832378783">"ਚਾਲੂ"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"ਉਪਲਬਧ ਨਹੀਂ"</item>
+ <item msgid="6641673879029894995">"ਬੰਦ ਹੈ"</item>
+ <item msgid="5806682401126108403">"ਚਾਲੂ ਹੈ"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index d358b9f..6a4b3d5 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth połączony."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona urządzenia Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknij, aby skonfigurować szczegóły urządzenia"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Kliknij, aby zobaczyć wszystkie urządzenia"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Kliknij, aby sparować nowe urządzenie"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Poziom naładowania baterii jest nieznany."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Połączono z <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Połączono z urządzeniem <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Wejście"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparaty słuchowe"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Włączam…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nie można dostosować jasności, ponieważ jest ona\nkontrolowana przez aplikację na pierwszym planie"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nie można dostosować jasności, ponieważ jest onakontrolowana przez aplikację na pierwszym planie"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autoobracanie"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Autoobracanie ekranu"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Lokalizacja"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> nie obsługuje funkcji rozmów"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Opinia"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Zamknij"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Nie pokazuj jako przypiętych"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Wyświetlanie aktualizacji na żywo"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Przypięte powiadomienia wyświetlają na żywo informacje z aplikacji i zawsze pojawiają się na pasku stanu oraz na ekranie blokady"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Tych powiadomień nie można zmodyfikować."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Powiadomień o połączeniach nie można modyfikować."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Tej grupy powiadomień nie można tu skonfigurować"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Wielozadaniowość"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Podziel ekran z aplikacją widoczną po prawej"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Podziel ekran z aplikacją widoczną po lewej"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Włącz pełny ekran"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Przełącz się na aplikację po prawej lub poniżej na podzielonym ekranie"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Przełącz się na aplikację po lewej lub powyżej na podzielonym ekranie"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Podczas podzielonego ekranu: zastępowanie aplikacji"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Pokazuj ikony powiadomień o niskim priorytecie"</string>
<string name="other" msgid="429768510980739978">"Inne"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"usunąć kartę"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"dodaj kafelek do ostatniej pozycji"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Przenieś kartę"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Wyświetlanie ostatnich aplikacji"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Przełączanie aplikacji"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotowe"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Aby wyświetlić ostatnie aplikacje, przesuń w górę za pomocą 3 palców na touchpadzie i przytrzymaj."</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Aby wyświetlić wszystkie swoje aplikacje, naciśnij klawisz działania na klawiaturze"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Usunięto"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Odblokuj, aby zobaczyć"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Edukacja kontekstowa"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Przechodzenie wstecz za pomocą touchpada"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Przesuń trzema palcami w prawo lub lewo. Kliknij, aby poznać więcej gestów."</string>
diff --git a/packages/SystemUI/res/values-pl/tiles_states_strings.xml b/packages/SystemUI/res/values-pl/tiles_states_strings.xml
index bc59a90..bd3a828 100644
--- a/packages/SystemUI/res/values-pl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pl/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Wyłączony"</item>
<item msgid="5908720590832378783">"Włączony"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Niedostępne"</item>
+ <item msgid="6641673879029894995">"Wyłączone"</item>
+ <item msgid="5806682401126108403">"Włączone"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 3a7d1f2..42ce3f4 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ícone de dispositivo Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Clique para configurar os detalhes do dispositivo"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Clique para conferir todos os dispositivos"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Clique para parear o novo dispositivo"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Porcentagem da bateria desconhecida."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparelhos auditivos"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Ativando…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Não é possível ajustar o brilho, porque ele está sendo\n controlado pelo app principal"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Não é possível ajustar o brilho, porque ele está sendo controlado pelo app principal"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Giro automático"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Giro automático da tela"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Localização"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Enviar feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Dispensar"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Não mostrar como fixadas"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Mostrar atualizações em tempo real"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"As notificações fixadas mostram informações em tempo real dos apps e sempre aparecem na barra de status e na tela de bloqueio"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Não é possível modificar as notificações de chamada."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitarefas"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar a tela dividida com o app à direita"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar a tela dividida com o app à esquerda"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Mudar para tela cheia"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Mudar para o app à direita ou abaixo ao usar a tela dividida"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Mudar para o app à esquerda ou acima ao usar a tela dividida"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Com a tela dividida: substituir um app por outro"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de baixa prioridade"</string>
<string name="other" msgid="429768510980739978">"Outros"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o bloco"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"adicionar o bloco à última posição"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover bloco"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver os apps recentes"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Mudar de app"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluído"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Se quiser ver os apps recentes, deslize para cima e pressione o touchpad com três dedos"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para ver todos os apps, pressione a tecla de ação no teclado"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Encoberto"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Desbloquear para visualizar"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educação contextual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Use o touchpad para voltar"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Deslize para a esquerda ou direita usando três dedos. Toque para aprender outros gestos."</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml
index 3e75cdd..b16d6f2 100644
--- a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Desativado"</item>
<item msgid="5908720590832378783">"Ativado"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Indisponível"</item>
+ <item msgid="6641673879029894995">"Desativado"</item>
+ <item msgid="5806682401126108403">"Ativado"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index ff0ba36..37ec3da 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth ligado."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ícone de dispositivo Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Clique para configurar o detalhe do dispositivo"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Clique para ver todos os dispositivos"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Clique para sincronizar um novo dispositivo"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configure o detalhe do dispositivo"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Veja todos os dispositivos"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Sincronize um novo dispositivo"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Percentagem da bateria desconhecida."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ligado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ligado a <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparelhos auditivos"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"A ativar..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Não é possível ajustar o brilho porque está a ser\n controlado pela app principal"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Não é possível ajustar o brilho porque está a ser controlado pela app principal"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotação auto."</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rodar o ecrã automaticamente"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Localização"</string>
@@ -506,7 +507,7 @@
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Deslize rapidamente para a esquerda para iniciar o tutorial coletivo"</string>
<string name="cta_tile_button_to_open_widget_editor" msgid="3871562362382963878">"Personalizar"</string>
<string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"Ignorar"</string>
- <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Adicionar, remover e reordenar widgets neste espaço"</string>
+ <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Adicione, remova e reordene widgets aqui"</string>
<string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"Adicionar mais widgets"</string>
<string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"Mantenha pressionado para personalizar os widgets"</string>
<string name="button_to_configure_widgets_text" msgid="4191862850185256901">"Personalizar widgets"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> não suporta funcionalidades de conversa."</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Ignorar"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Não mostrar como afixada"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"A mostrar atualizações em direto"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"As notificações afixadas apresentam informações em direto das apps e aparecem sempre na barra de estado e no ecrã de bloqueio"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar estas notificações."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Não é possível modificar as notificações de chamadas."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar este grupo de notificações aqui."</string>
@@ -900,7 +898,8 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Execução de várias tarefas em simultâneo"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Use o ecrã dividido com a app à direita"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Use o ecrã dividido com a app à esquerda"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Mude para ecrã inteiro"</string>
+ <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Use o ecrã inteiro"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Use a vista de computador"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Mudar para a app à direita ou abaixo enquanto usa o ecrã dividido"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Mude para a app à esquerda ou acima enquanto usa o ecrã dividido"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Durante o ecrã dividido: substituir uma app por outra"</string>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de prioridade baixa"</string>
<string name="other" msgid="429768510980739978">"Outro"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o cartão"</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>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver apps recentes"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Mudar de app"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluir"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Seguinte"</string>
<string name="gesture_error_title" msgid="469064941635578511">"Tente novamente!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Voltar"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Deslize rapidamente para a esquerda ou direita com 3 dedos no touchpad"</string>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Para ver as apps recentes, deslize rapidamente para cima e mantenha premido com 3 dedos no touchpad"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para ver todas as suas apps, prima a tecla de ação no teclado"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Revisto"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Desbloqueie para ver"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educação contextual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Use o touchpad para retroceder"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Deslize rapidamente para a esquerda ou direita com 3 dedos. Toque para aprender mais gestos."</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml b/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml
index 7e7e673..3beca27 100644
--- a/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Desativado"</item>
<item msgid="5908720590832378783">"Ativado"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Indisponível"</item>
+ <item msgid="6641673879029894995">"Desativado"</item>
+ <item msgid="5806682401126108403">"Ativado"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 3a7d1f2..42ce3f4 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ícone de dispositivo Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Clique para configurar os detalhes do dispositivo"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Clique para conferir todos os dispositivos"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Clique para parear o novo dispositivo"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Porcentagem da bateria desconhecida."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparelhos auditivos"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Ativando…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Não é possível ajustar o brilho, porque ele está sendo\n controlado pelo app principal"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Não é possível ajustar o brilho, porque ele está sendo controlado pelo app principal"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Giro automático"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Giro automático da tela"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Localização"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Enviar feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Dispensar"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Não mostrar como fixadas"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Mostrar atualizações em tempo real"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"As notificações fixadas mostram informações em tempo real dos apps e sempre aparecem na barra de status e na tela de bloqueio"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Não é possível modificar as notificações de chamada."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitarefas"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar a tela dividida com o app à direita"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar a tela dividida com o app à esquerda"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Mudar para tela cheia"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Mudar para o app à direita ou abaixo ao usar a tela dividida"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Mudar para o app à esquerda ou acima ao usar a tela dividida"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Com a tela dividida: substituir um app por outro"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de baixa prioridade"</string>
<string name="other" msgid="429768510980739978">"Outros"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o bloco"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"adicionar o bloco à última posição"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover bloco"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver os apps recentes"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Mudar de app"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluído"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Se quiser ver os apps recentes, deslize para cima e pressione o touchpad com três dedos"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para ver todos os apps, pressione a tecla de ação no teclado"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Encoberto"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Desbloquear para visualizar"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educação contextual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Use o touchpad para voltar"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Deslize para a esquerda ou direita usando três dedos. Toque para aprender outros gestos."</string>
diff --git a/packages/SystemUI/res/values-pt/tiles_states_strings.xml b/packages/SystemUI/res/values-pt/tiles_states_strings.xml
index 3e75cdd..b16d6f2 100644
--- a/packages/SystemUI/res/values-pt/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pt/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Desativado"</item>
<item msgid="5908720590832378783">"Ativado"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Indisponível"</item>
+ <item msgid="6641673879029894995">"Desativado"</item>
+ <item msgid="5806682401126108403">"Ativado"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 2417c84..a23f95e 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Conectat prin Bluetooth."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Pictograma de dispozitiv Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Dă clic pentru a configura detaliile dispozitivului"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Dă clic pentru a vedea toate dispozitivele"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Dă clic pentru a asocia noul dispozitiv"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Procentajul bateriei este necunoscut."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectat la <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"S-a stabilit conexiunea la <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Intrare"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparate auditive"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Se activează..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nu se poate ajusta luminozitatea deoarece este\n controlată de aplicația de top"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nu se poate ajusta luminozitatea deoarece este controlată de aplicația de top"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotire automată"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotirea automată a ecranului"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Locație"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu acceptă funcții pentru conversații"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Închide"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Nu le afișa ca fixate"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Se afișează actualizări live"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Notificările fixate afișează informații live din aplicații și apar întotdeauna în bara de stare și pe ecranul de blocare"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Aceste notificări nu pot fi modificate."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Notificările pentru apeluri nu pot fi modificate."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Acest grup de notificări nu poate fi configurat aici"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Folosește ecranul împărțit cu aplicația în dreapta"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Folosește ecranul împărțit cu aplicația în stânga"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Treci la ecran complet"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Treci la aplicația din dreapta sau de mai jos cu ecranul împărțit"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Treci la aplicația din stânga sau de mai sus cu ecranul împărțit"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"În modul ecran împărțit: înlocuiește o aplicație cu alta"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Afișează pictogramele de notificare cu prioritate redusă"</string>
<string name="other" msgid="429768510980739978">"Altele"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"elimină cardul"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"adaugă cardul în ultima poziție"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mută cardul"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Vezi aplicațiile recente"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Comută între aplicații"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gata"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Ca să vezi aplicațiile recente, glisează în sus și ține apăsat cu trei degete pe touchpad"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Ca să vezi toate aplicațiile, apasă tasta de acțiuni de pe tastatură"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Ascunsă"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Deblochează pentru a afișa"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educație contextuală"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Folosește-ți touchpadul ca să revii"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Glisează la stânga sau la dreapta cu trei degete. Atinge ca să înveți mai multe gesturi."</string>
diff --git a/packages/SystemUI/res/values-ro/tiles_states_strings.xml b/packages/SystemUI/res/values-ro/tiles_states_strings.xml
index 6dcb0d3..b555987 100644
--- a/packages/SystemUI/res/values-ro/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ro/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Dezactivat"</item>
<item msgid="5908720590832378783">"Activat"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Indisponibil"</item>
+ <item msgid="6641673879029894995">"Dezactivat"</item>
+ <item msgid="5806682401126108403">"Activat"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index f6968d5..1d40a6c 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth-соединение установлено."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Значок устройства Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Нажмите, чтобы изменить информацию об устройстве"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Нажмите, чтобы показать все устройства"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Нажмите, чтобы подключить устройство"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Уровень заряда батареи в процентах неизвестен."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>: подключено."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Подключено к: <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Устройство ввода"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слуховые аппараты"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Включение…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Невозможно изменить яркость,\nтак как она регулируется общими настройками."</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Невозможно изменить яркость,так как она регулируется общими настройками."</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автоповорот"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоповорот экрана"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Геолокация"</string>
@@ -471,7 +475,7 @@
<string name="zen_silence_introduction" msgid="6117517737057344014">"В этом режиме будут отключены вибросигнал и все звуки (в том числе для будильника, музыкального проигрывателя, игр и видео)."</string>
<string name="notification_tap_again" msgid="4477318164947497249">"Нажмите ещё раз, чтобы открыть"</string>
<string name="tap_again" msgid="1315420114387908655">"Нажмите ещё раз"</string>
- <string name="keyguard_unlock" msgid="8031975796351361601">"Проведите вверх, чтобы открыть"</string>
+ <string name="keyguard_unlock" msgid="8031975796351361601">"Проведите вверх, чтобы открыть."</string>
<string name="keyguard_unlock_press" msgid="9140109453735019209">"Нажмите на значок разблокировки."</string>
<string name="keyguard_face_successful_unlock_swipe" msgid="6180997591385846073">"Сканирование выполнено. Чтобы открыть, проведите вверх."</string>
<string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Сканирование выполнено. Нажмите на значок разблокировки."</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" не поддерживает функции разговоров."</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Оставить отзыв"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Закрыть"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Открепить уведомления"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Показывать уведомления в реальном времени"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Закрепленные уведомления с текущей информацией из приложений всегда показываются в строке состояния и на заблокированном экране"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Эти уведомления нельзя изменить."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Уведомления о звонках нельзя изменить."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Эту группу уведомлений нельзя настроить здесь."</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Показывать значки уведомлений с низким приоритетом"</string>
<string name="other" msgid="429768510980739978">"Другое"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"удалить панель"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"добавить параметр в конец"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Переместить панель"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Просмотр недавних приложений"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Переход в другое приложение"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Чтобы увидеть недавние приложения, проведите по сенсорной панели тремя пальцами вверх и удерживайте."</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Чтобы открыть список всех своих приложений, нажмите клавишу действия."</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Скрыто"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Разблокируйте экран, чтобы посмотреть."</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контекстные подсказки"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Используйте сенсорную панель, чтобы возвращаться назад"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Для этого проведите тремя пальцами влево или вправо. Чтобы посмотреть другие жесты, нажмите здесь."</string>
diff --git a/packages/SystemUI/res/values-ru/tiles_states_strings.xml b/packages/SystemUI/res/values-ru/tiles_states_strings.xml
index e7ff74d..8279183 100644
--- a/packages/SystemUI/res/values-ru/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ru/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Отключено"</item>
<item msgid="5908720590832378783">"Включено"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Недоступно"</item>
+ <item msgid="6641673879029894995">"Отключено"</item>
+ <item msgid="5806682401126108403">"Включено"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index eb816b8..440b320 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"බ්ලූටූත් සම්බන්ධිතයි."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"බ්ලූටූත් උපාංග නිරූපකය"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"උපාංග විස්තර වින්යාස කිරීමට ක්ලික් කරන්න"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"සියලු උපාංග බැලීමට ක්ලික් කරන්න"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"නව උපාංගය යුගල කිරීමට ක්ලික් කරන්න"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"බැටරි ප්රතිශතය නොදනී."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> වෙත සම්බන්ධ කරන ලදි."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> වෙත සම්බන්ධ විය."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ආදානය"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ශ්රවණාධාරක"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ක්රියාත්මක කරමින්…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ඉහළ යෙදුම මඟින් එය පාලනය වන නිසා\nදීප්තිය ගැළපුම් කළ නොහැක"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ඉහළ යෙදුම මඟින් එය පාලනය වන නිසාදීප්තිය ගැළපුම් කළ නොහැක"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ස්වයංක්රීය කරකැවීම"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ස්වයංක්රීයව-භ්රමණය වන තිරය"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"ස්ථානය"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> සංවාද විශේෂාංගවලට සහාය නොදක්වයි"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ප්රතිපෝෂණය"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"අස් කරන්න"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"අමුණන ලද ලෙස නොපෙන්වන්න"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"සජීවී යාවත්කාලීන කිරීම් පෙන්වමින්"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"ඇමුණුම් කළ දැනුම්දීම් යෙදුම් වලින් සජීවී තතු පෙන්වන අතර, සෑම විට ම තත්ත්ව තීරුවේ සහ අගුළු තිරයේ දිස් වේ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"මෙම දැනුම්දීම් වෙනස් කළ නොහැක."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ඇමතුම් දැනුම්දීම් වෙනස් කළ නොහැකිය."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"මෙම දැනුම්දීම් සමූහය මෙහි වින්යාස කළ නොහැක"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"අඩු ප්රමුඛතා දැනුම්දීම් අයිකන පෙන්වන්න"</string>
<string name="other" msgid="429768510980739978">"වෙනත්"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ටයිල් ඉවත් කරන්න"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ටයිල් එක අවසාන ස්ථානයට එක් කරන්න"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ටයිල් ගෙන යන්න"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"මෑත යෙදුම් බලන්න"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"යෙදුම් මාරු කරන්න"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"නිමයි"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"මෑත යෙදුම් බැලීමට, ඉහළට ස්වයිප් කර ස්පර්ශ පුවරුව මත ඇඟිලි තුනකින් අල්ලාගෙන සිටින්න"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ඔබේ සියලුම යෙදුම් බැලීමට, ඔබේ යතුරුපුවරුවේ ක්රියාකාරී යතුර ඔබන්න"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"නැවත සකස් කරන ලද"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"බැලීමට අගුළු හරින්න"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"සන්දර්භීය අධ්යාපනය"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"ආපසු යාමට ඔබේ ස්පර්ශ පුවරුව භාවිත කරන්න"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"ඇඟිලි තුනක් භාවිතයෙන් වමට හෝ දකුණට ස්වයිප් කරන්න. තව ඉංගිත දැන ගැනීමට තට්ටු කරන්න."</string>
diff --git a/packages/SystemUI/res/values-si/tiles_states_strings.xml b/packages/SystemUI/res/values-si/tiles_states_strings.xml
index 710e9aa..9397ca7 100644
--- a/packages/SystemUI/res/values-si/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-si/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ක්රියාවිරහිතයි"</item>
<item msgid="5908720590832378783">"ක්රියාත්මකයි"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"නොමැත"</item>
+ <item msgid="6641673879029894995">"ක්රියාවිරහිතයි"</item>
+ <item msgid="5806682401126108403">"ක්රියාත්මකයි"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index fcb281d..274c46e 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth pripojené."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona zariadenia s rozhraním Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknutím nakonfigurujte podrobnosti o zariadení"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Kliknutím zobrazíte všetky zariadenia"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Kliknutím spárujete nové zariadenie"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Percento batérie nie je známe."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Pripojené k zariadeniu <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Pripojené k zariadeniu <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Vstup"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Načúvadlá"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Zapína sa…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Jas sa nedá upraviť, pretože ho \n ovláda horná aplikácia"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Jas sa nedá upraviť, pretože ho ovláda horná aplikácia"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatické otáčanie"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatické otáčanie obrazovky"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Poloha"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nepodporuje funkcie konverzácie"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Spätná väzba"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Zavrieť"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Nezobrazovať ako pripnuté"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Zobrazovanie aktualít naživo"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Pripnuté upozornenia zobrazujú aktuálne informácie z aplikácií a vždy sa zobrazujú v stavovom riadku a na uzamknutej obrazovke"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Tieto upozornenia sa nedajú upraviť."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Upozornenia na hovory sa nedajú upraviť."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Túto skupinu upozornení nejde na tomto mieste konfigurovať"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Rozdelenie obrazovky, aktuálna aplikácia vpravo"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Rozdelenie obrazovky, aktuálna aplikácia vľavo"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Prepnutie na celú obrazovku"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Prechod na aplikáciu vpravo alebo dole pri rozdelenej obrazovke"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Prechod na aplikáciu vľavo alebo hore pri rozdelenej obrazovke"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Počas rozdelenej obrazovky: nahradenie aplikácie inou"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Zobraziť ikony upozornení s nízkou prioritou"</string>
<string name="other" msgid="429768510980739978">"Ďalšie"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"odstrániť kartu"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"pridáte kartu na poslednú pozíciu"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Presunúť kartu"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Zobraziť nedávne aplikácie"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Prepínanie aplikácií"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hotovo"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <skip />
<string name="gesture_error_title" msgid="469064941635578511">"Skúste to znova."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Späť"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Potiahnite troma prstami na touchpade doľava alebo doprava"</string>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Ak si chcete zobraziť nedávne aplikácie, potiahnite po touchpade troma prstami nahor a pridržte ich."</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Ak si chcete zobraziť všetky aplikácie, stlačte na klávesnici akčný kláves"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Zamaskované"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Zobrazíte odomknutím"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontextová náuka"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Prechádzajte späť pomocou touchpadu"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Potiahnite troma prstami doľava alebo doprava. Viac o gestách sa dozviete klepnutím."</string>
diff --git a/packages/SystemUI/res/values-sk/tiles_states_strings.xml b/packages/SystemUI/res/values-sk/tiles_states_strings.xml
index 8323506..3e61884 100644
--- a/packages/SystemUI/res/values-sk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sk/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Vypnuté"</item>
<item msgid="5908720590832378783">"Zapnuté"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Nedostupné"</item>
+ <item msgid="6641673879029894995">"Vypnuté"</item>
+ <item msgid="5806682401126108403">"Zapnuté"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index e999065..eb1219a 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Povezava Bluetooth vzpostavljena."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona naprave Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknite za konfiguriranje podrobnosti o napravi"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Kliknite za ogled vseh naprav"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Kliknite za seznanitev nove naprave"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfiguriranje podrobnosti o napravi"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Ogled vseh naprav"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Seznanitev nove naprave"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Neznan odstotek napolnjenosti baterije."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Povezava vzpostavljena z: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Vzpostavljena povezava: <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Vhodna naprava"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Slušni aparati"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Vklapljanje …"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Svetlosti ni mogoče prilagoditi, ker jo\n nadzoruje aplikacija na vrhu"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Svetlosti ni mogoče prilagoditi, ker jo nadzoruje aplikacija na vrhu"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Samodejno sukanje"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Samodejno sukanje zaslona"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Lokacija"</string>
@@ -691,7 +692,7 @@
<string name="screen_pinning_exit" msgid="4553787518387346893">"Aplikacija je odpeta."</string>
<string name="stream_voice_call" msgid="7468348170702375660">"Klic"</string>
<string name="stream_system" msgid="7663148785370565134">"Sistem"</string>
- <string name="stream_ring" msgid="7550670036738697526">"Sprožitev zvonjenja"</string>
+ <string name="stream_ring" msgid="7550670036738697526">"Zvonjenje"</string>
<string name="stream_music" msgid="2188224742361847580">"Predstavnost"</string>
<string name="stream_alarm" msgid="16058075093011694">"Alarm"</string>
<string name="stream_notification" msgid="7930294049046243939">"Obvestilo"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podpira pogovornih funkcij."</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Povratne informacije"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Opusti"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ne prikaži kot pripeto"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Prikaz sprotnih obvestil"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Pripeta obvestila prikazujejo sprotne podatke iz aplikacij ter so vedno prikazana v vrstici stanja in na zaklenjenem zaslonu"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Za ta obvestila ni mogoče spremeniti nastavitev."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Obvestil o klicih ni mogoče spreminjati."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Te skupine obvestil ni mogoče konfigurirati tukaj"</string>
@@ -900,7 +898,8 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Večopravilnost"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Uporaba razdeljenega zaslona z aplikacijo na desni"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Uporaba razdeljenega zaslona z aplikacijo na levi"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Preklop na celozaslonski način"</string>
+ <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Uporaba celozaslonskega načina"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Uporaba pogleda za namizni računalnik"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Preklop na aplikacijo desno ali spodaj med uporabo razdeljenega zaslona"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Preklop na aplikacijo levo ali zgoraj med uporabo razdeljenega zaslona"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Pri razdeljenem zaslonu: medsebojna zamenjava aplikacij"</string>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Pokaži ikone obvestil z nizko stopnjo prednosti"</string>
<string name="other" msgid="429768510980739978">"Drugo"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"odstranitev ploščice"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"dodajanje ploščice na zadnji položaj"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premik ploščice"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ogled nedavnih aplikacij"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Preklop aplikacij"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Končano"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Naprej"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Za ogled nedavnih aplikacij povlecite s tremi prsti navzgor po sledilni ploščici in pridržite"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Za ogled vseh aplikacij pritisnite tipko za dejanja na tipkovnici"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Zakrito"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Odklenite za ogled"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstualno izobraževanje"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Uporaba sledilne ploščice za pomik nazaj"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"S tremi prsti povlecite levo ali desno. Dotaknite se, če želite spoznati več potez."</string>
diff --git a/packages/SystemUI/res/values-sl/tiles_states_strings.xml b/packages/SystemUI/res/values-sl/tiles_states_strings.xml
index d644038..8146802 100644
--- a/packages/SystemUI/res/values-sl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sl/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Izklopljeno"</item>
<item msgid="5908720590832378783">"Vklopljeno"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Ni na voljo"</item>
+ <item msgid="6641673879029894995">"Izklopljeno"</item>
+ <item msgid="5806682401126108403">"Vklopljeno"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 7e2b698..ea1f3aaf 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Pajisja është lidhur me \"bluetooth\"."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona e pajisjes me Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliko për të konfiguruar detajet e pajisjes"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Kliko për të shikuar të gjitha pajisjet"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Kliko për të çiftuar një pajisje të re"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Përqindja e baterisë e panjohur."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Lidhur me <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Është lidhur me <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Hyrja"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparatet e dëgjimit"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Po aktivizohet…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ndriçimi nuk mund të rregullohet pasi\n po kontrollohet nga aplikacioni i sipërm"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ndriçimi nuk mund të rregullohet pasi po kontrollohet nga aplikacioni i sipërm"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rrotullim automatik"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rrotullimi automatik i ekranit"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Vendndodhja"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mbështet veçoritë e bisedës"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Koment"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Hiq"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Mos shfaq si të gozhduar"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Po shfaqen përditësimet drejtpërdrejt"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Njoftimet e gozhduara shfaqin informacione të drejtpërdrejta nga aplikacionet dhe shfaqen gjithmonë në shiritin e statusit dhe ekranin e kyçjes"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Këto njoftime nuk mund të modifikohen."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Njoftimet e telefonatave nuk mund të modifikohen."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ky grup njoftimesh nuk mund të konfigurohet këtu"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Kryerja e shumë detyrave"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Përdor ekranin e ndarë me aplikacionin në të djathtë"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Përdor ekranin e ndarë me aplikacionin në të majtë"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Kalo në ekran të plotë"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Kalo tek aplikacioni djathtas ose poshtë kur përdor ekranin e ndarë"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Kalo tek aplikacioni në të majtë ose sipër kur përdor ekranin e ndarë"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Gjatë ekranit të ndarë: zëvendëso një aplikacion me një tjetër"</string>
@@ -987,6 +991,8 @@
</string-array>
<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>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"hiq pllakëzën"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"shtuar pllakëzën në pozicionin e fundit"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Zhvendos pllakëzën"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Shiko aplikacionet e fundit"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Ndërro aplikacionet"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"U krye"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Për aplikacionet e fundit, rrëshqit shpejt lart dhe mbaj shtypur me tre gishta në bllokun me prekje"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Për të shikuar të gjitha aplikacionet, shtyp tastin e veprimit në tastierë"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redaktuar"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Shkyçe për ta parë"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Edukimi kontekstual"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Përdor bllokun me prekje për t\'u kthyer prapa"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Rrëshqit shpejt majtas ose djathtas duke përdorur tre gishta. Trokit për të mësuar më shumë gjeste."</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 1e44e0c..eac0712 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth је прикључен."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Икона Bluetooth уређаја"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Кликните да бисте конфигурисали детаље о уређају"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Кликните да бисте видели све уређаје"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Кликните да бисте упарили нов уређај"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Конфигуришите детаље о уређају"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Погледајте све уређаје"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Упарите нови уређај"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Проценат напуњености батерије није познат."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Повезани сте са <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Повезани смо са уређајем <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Унос"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слушни апарати"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Укључује се..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не можете да прилагодите осветљеност јер је\n контролише апликација у врху"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не можете да прилагодите осветљеност јер је контролише апликација у врху"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Аутоматска ротација"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Аутоматско ротирање екрана"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Локација"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не подржава функције конверзације"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Повратне информације"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Одбаци"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Не приказуј као закачено"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Приказују се новости уживо"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Закачена обавештења приказују информације уживо из апликација и увек се појављују на статусној траци и закључаном екрану"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ова обавештења не могу да се мењају."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Обавештења о позивима не могу да се мењају."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ова група обавештења не може да се конфигурише овде"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"Користи приказ преко целог екрана"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Користи приказ за рачунаре"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Прикажи иконе обавештења ниског приоритета"</string>
<string name="other" msgid="429768510980739978">"Друго"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"уклонили плочицу"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"додали плочицу на последњу позицију"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместите плочицу"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Прикажи недавно коришћене апликације"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Пређи на другу апликацију"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Даље"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Да бисте прегледали недавне апликације, превуците нагоре и задржите са три прста на тачпеду"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Да бисте погледали све апликације, притисните тастер радњи на тастатури"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Редиговано"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Откључајте за приказ"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контекстуално образовање"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Користите тачпед за враћање назад"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Превуците улево или удесно са три прста. Додирните да бисте видели више покрета."</string>
diff --git a/packages/SystemUI/res/values-sr/tiles_states_strings.xml b/packages/SystemUI/res/values-sr/tiles_states_strings.xml
index e1bd7b1..df9e574 100644
--- a/packages/SystemUI/res/values-sr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sr/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Искључено"</item>
<item msgid="5908720590832378783">"Укључено"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Недоступно"</item>
+ <item msgid="6641673879029894995">"Искључено"</item>
+ <item msgid="5806682401126108403">"Укључено"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index d613922..dfb4e005 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth ansluten."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Enhetsikon för Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klicka för att konfigurera enhetsinformation"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Klicka för att se alla enheter"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Klicka för att parkoppla en ny enhet"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Okänd batterinivå."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ansluten till <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ansluten till <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Ingång"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hörapparater"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aktiverar …"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Det går inte att justera ljusstyrkan eftersom den\n styrs av den översta appen"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Det går inte att justera ljusstyrkan eftersom den styrs av den översta appen"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotera automatiskt"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotera skärmen automatiskt"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Plats"</string>
@@ -506,7 +510,7 @@
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Svep åt vänster för att börja med gruppguiden"</string>
<string name="cta_tile_button_to_open_widget_editor" msgid="3871562362382963878">"Anpassa"</string>
<string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"Ignorera"</string>
- <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Lägg till, ta bort och ordna om dina widgetar i det här rummet"</string>
+ <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Lägg till, ta bort och ordna om dina widgetar här"</string>
<string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"Lägg till fler widgetar"</string>
<string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"Tryck länge för att anpassa widgetar"</string>
<string name="button_to_configure_widgets_text" msgid="4191862850185256901">"Anpassa widgetar"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> har inte stöd för konversationsfunktioner"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Stäng"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Visa inte som fäst"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Visar liveuppdateringar"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Fästa aviseringar visar liveinformation från appar och visas alltid i statusfältet och på låsskärmen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Det går inte att ändra de här aviseringarna."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Det går inte att ändra samtalsaviseringarna."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Den här aviseringsgruppen kan inte konfigureras här"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multikörning"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Använd delad skärm med appen till höger"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Använd delad skärm med appen till vänster"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Byt till helskärm"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Byt till appen till höger eller nedanför när du använder delad skärm"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Byt till appen till vänster eller ovanför när du använder delad skärm"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Med delad skärm: ersätt en app med en annan"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Visa ikoner för aviseringar med låg prioritet"</string>
<string name="other" msgid="429768510980739978">"Annat"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ta bort ruta"</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>
@@ -1377,7 +1383,7 @@
<string name="bt_le_audio_broadcast_dialog_different_output" msgid="7885102097302562674">"Byt ljudutgång"</string>
<string name="bt_le_audio_broadcast_dialog_unknown_name" msgid="3791472237793443044">"Okänt"</string>
<string name="dream_time_complication_12_hr_time_format" msgid="4691197486690291529">"h.mm"</string>
- <string name="dream_time_complication_24_hr_time_format" msgid="6248280719733640813">"kk.mm"</string>
+ <string name="dream_time_complication_24_hr_time_format" msgid="6248280719733640813">"kk:mm"</string>
<string name="log_access_confirmation_title" msgid="4843557604739943395">"Vill du tillåta att <xliff:g id="LOG_ACCESS_APP_NAME">%s</xliff:g> får åtkomst till alla enhetsloggar?"</string>
<string name="log_access_confirmation_allow" msgid="752147861593202968">"Tillåt engångsåtkomst"</string>
<string name="log_access_confirmation_deny" msgid="2389461495803585795">"Tillåt inte"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Se de senaste apparna"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Byta app"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klar"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Svep uppåt på styrplattan med tre fingrar och håll kvar för att se nyligen använda appar"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Tryck på åtgärdstangenten på tangentbordet för att se alla appar"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Anonymiserad"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Lås upp för att visa"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontextuell utbildning"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Använd styrplattan för att gå tillbaka"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Svep åt vänster eller höger med tre fingrar. Tryck för att lära dig fler rörelser."</string>
diff --git a/packages/SystemUI/res/values-sv/tiles_states_strings.xml b/packages/SystemUI/res/values-sv/tiles_states_strings.xml
index 37d757e..76822d0 100644
--- a/packages/SystemUI/res/values-sv/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sv/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Av"</item>
<item msgid="5908720590832378783">"På"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Inte tillgänglig"</item>
+ <item msgid="6641673879029894995">"Av"</item>
+ <item msgid="5806682401126108403">"På"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 33d8511..c096e41 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth imeunganishwa."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Aikoni ya Kifaa chenye Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Bofya ili uweke mipangilio ya maelezo ya kifaa"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Bofya ili uone vifaa vyote"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Bofya ili uoanishe kifaa kipya"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Asilimia ya betri haijulikani."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Imeunganishwa kwenye <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Imeunganishwa kwenye <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Vifaa vya kuingiza sauti"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Visaidizi vya kusikia"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Inawasha..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Imeshindwa kurekebisha mwangaza kwa sababu\n inadhibitiwa na programu inayotumika"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Imeshindwa kurekebisha mwangaza kwa sababu inadhibitiwa na programu inayotumika"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Zungusha kiotomatiki"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Skrini ijizungushe kiotomatiki"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Mahali"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> haitumii vipengele vya mazungumzo"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Maoni"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Ondoa"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Usionyeshe kama zilizobandikwa"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Inaonyesha Taarifa za Moja kwa Moja"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Arifa zilizobandikwa zinaonyesha maelezo ya moja kwa moja kutoka kwenye programu na huonekana kwenye sehemu ya arifa na skrini iliyofungwa"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Arifa hizi haziwezi kubadilishwa."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Arifa za simu haziwezi kubadilishwa."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Kikundi hiki cha arifa hakiwezi kuwekewa mipangilio hapa"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Majukumu mengi"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Tumia hali ya kugawa skrini na programu ya sasa iwe upande wa kulia"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Tumia hali ya kugawa skrini na programu ya sasa iwe upande wa kushoto"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Badilisha utumie skrini nzima"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Badilisha ili uende kwenye programu iliyo kulia au chini unapotumia hali ya kugawa skrini"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Badilisha uende kwenye programu iliyo kushoto au juu unapotumia hali ya kugawa skrini"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Ukigawanya skrini: badilisha kutoka programu moja hadi nyingine"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Onyesha aikoni za arifa zisizo muhimu"</string>
<string name="other" msgid="429768510980739978">"Nyingine"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ondoa kigae"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"weka kigae kwenye nafasi ya mwisho"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Hamisha kigae"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Angalia programu za hivi majuzi"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Badilisha programu"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Nimemaliza"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Telezesha vidole vitatu juu na ushikilie kwenye padi ya kugusa ili uangalie programu za hivi majuzi"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Bonyeza kitufe cha vitendo kwenye kibodi yako ili uangalie programu zako zote"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Maandishi yameondolewa"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Fungua ili uone"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Elimu inayolingana na muktadha"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Kutumia padi yako ya kugusa ili kurudi nyuma"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Telezesha vidole vitatu kulia au kushoto. Gusa ili upate maelezo kuhusu miguso zaidi."</string>
diff --git a/packages/SystemUI/res/values-sw/tiles_states_strings.xml b/packages/SystemUI/res/values-sw/tiles_states_strings.xml
index fae42c3..4070260 100644
--- a/packages/SystemUI/res/values-sw/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sw/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Limezimwa"</item>
<item msgid="5908720590832378783">"Limewashwa"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Hakipatikani"</item>
+ <item msgid="6641673879029894995">"Kimezimwa"</item>
+ <item msgid="5806682401126108403">"Kimewashwa"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index aa312c7..342798f 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"புளூடூத் இணைக்கப்பட்டது."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"புளூடூத் சாதன ஐகான்"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"சாதன விவரத்தை உள்ளமைக்க கிளிக் செய்யலாம்"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"அனைத்துச் சாதனங்களையும் பார்க்க கிளிக் செய்யவும்"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"புதிய சாதனத்தை இணைக்க கிளிக் செய்யவும்"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"பேட்டரி சதவீதம் தெரியவில்லை."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>க்கு இணைக்கப்பட்டது."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> உடன் இணைக்கப்பட்டுள்ளது."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"உள்ளீடு"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"செவித்துணைக் கருவி"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ஆன் செய்கிறது…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"சிறந்த ஆப்ஸால் ஒளிர்வு கட்டுப்படுத்தப்படுவதால்\n இதைச் சரிசெய்ய முடியவில்லை"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"சிறந்த ஆப்ஸால் ஒளிர்வு கட்டுப்படுத்தப்படுவதால் இதைச் சரிசெய்ய முடியவில்லை"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"தானாகச் சுழற்று"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"திரையைத் தானாகச் சுழற்று"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"இருப்பிடம்"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"உரையாடல் அம்சங்களை <xliff:g id="APP_NAME">%1$s</xliff:g> ஆதரிக்காது"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"கருத்து"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"மூடுக"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"பின் செய்யப்பட்டதாகக் காட்டாதே"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"நேரலை அறிவிப்புகளைக் காட்டுகிறது"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"பின் செய்யப்பட்ட அறிவிப்புகள் ஆப்ஸிலிருந்து நேரலைத் தகவல்களைக் காட்டும், அத்துடன் அவை எப்போதும் நிலைப் பட்டியிலும் பூட்டுத் திரையிலும் காட்டப்படும்"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"இந்த அறிவிப்புகளை மாற்ற இயலாது."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"அழைப்பு அறிவிப்புகளை மாற்ற முடியாது."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"இந்த அறிவுப்புக் குழுக்களை இங்கே உள்ளமைக்க இயலாது"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"குறைந்த முன்னுரிமை உள்ள அறிவிப்பு ஐகான்களைக் காட்டு"</string>
<string name="other" msgid="429768510980739978">"மற்றவை"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"கட்டத்தை அகற்றும்"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"கடைசி இடத்தில் கட்டத்தைச் சேர்க்கலாம்"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"கட்டத்தை நகர்த்து"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"சமீபத்திய ஆப்ஸைக் காட்டுதல்"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ஆப்ஸுக்கிடையில் மாறுங்கள்"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"முடிந்தது"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"சமீபத்திய ஆப்ஸைப் பார்க்க, டச்பேடில் மூன்று விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடிக்கவும்"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"அனைத்து ஆப்ஸையும் பார்க்க, உங்கள் கீபோர்டில் உள்ள ஆக்ஷன் பட்டனை அழுத்தவும்"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"அர்த்தம் புரியாதபடி திருத்தப்பட்டது"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"பார்ப்பதற்கு அன்லாக் செய்யவும்"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"சூழல் சார்ந்த கல்வி"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"பின்செல்ல, உங்கள் டச்பேடைப் பயன்படுத்துங்கள்"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"மூன்று விரல்களால் இடது அல்லது வலதுபுறம் ஸ்வைப் செய்யவும். சைகைகள் குறித்து மேலும் அறிய தட்டவும்."</string>
diff --git a/packages/SystemUI/res/values-ta/tiles_states_strings.xml b/packages/SystemUI/res/values-ta/tiles_states_strings.xml
index b09b17f..dc1c514 100644
--- a/packages/SystemUI/res/values-ta/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ta/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"முடக்கப்பட்டுள்ளது"</item>
<item msgid="5908720590832378783">"இயக்கப்பட்டுள்ளது"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"கிடைக்கவில்லை"</item>
+ <item msgid="6641673879029894995">"முடக்கப்பட்டுள்ளது"</item>
+ <item msgid="5806682401126108403">"இயக்கப்பட்டுள்ளது"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index fc5361b..6f4619f 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"బ్లూటూత్ కనెక్ట్ చేయబడింది."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"బ్లూటూత్ పరికర చిహ్నం"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"పరికర వివరాలను కాన్ఫిగర్ చేయడానికి క్లిక్ చేయండి"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"అన్ని పరికరాలను చూడటానికి క్లిక్ చేయండి"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"కొత్త పరికరాన్ని పెయిర్ చేయడానికి క్లిక్ చేయండి"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"బ్యాటరీ శాతం తెలియదు."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>కి కనెక్ట్ చేయబడింది."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>కి కనెక్ట్ చేయబడింది."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ఇన్పుట్"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"వినికిడి పరికరాలు"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ఆన్ చేస్తోంది…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ఇది టాప్ యాప్ ద్వారా\n కంట్రోల్ చేయబడుతున్నందున బ్రైట్నెస్ను సర్దుబాటు చేయడం సాధ్యం కాదు"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ఇది టాప్ యాప్ ద్వారా కంట్రోల్ చేయబడుతున్నందున బ్రైట్నెస్ను సర్దుబాటు చేయడం సాధ్యం కాదు"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ఆటో-రొటేట్"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"స్క్రీన్ ఆటో-రొటేట్"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"లొకేషన్"</string>
@@ -506,7 +510,7 @@
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"కమ్యూనల్ ట్యుటోరియల్ను ప్రారంభించడానికి ఎడమ వైపునకు స్వైప్ చేయండి"</string>
<string name="cta_tile_button_to_open_widget_editor" msgid="3871562362382963878">"అనుకూలంగా మార్చండి"</string>
<string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"విస్మరించండి"</string>
- <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"ఈ స్పేస్లో మీ విడ్జెట్లను జోడించండి, తీసివేయండి, క్రమపద్ధతిలో అమర్చండి"</string>
+ <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"ఈ స్పేస్లోని విడ్జెట్ల జోడింపు, తీసివేత, అమరిక"</string>
<string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"మరిన్ని విడ్జెట్లను జోడించండి"</string>
<string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"విడ్జెట్లను అనుకూలీకరించడానికి, నొక్కి, ఉంచండి"</string>
<string name="button_to_configure_widgets_text" msgid="4191862850185256901">"విడ్జెట్లను అనుకూలంగా మార్చండి"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> సంభాషణ ఫీచర్లను సపోర్ట్ చేయదు"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ఫీడ్బ్యాక్"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"విస్మరించండి"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"పిన్ చేసినట్లు చూపవద్దు"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"లైవ్ అప్డేట్లు చూపబడుతున్నాయి"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"పిన్ చేయబడిన నోటిఫికేషన్లు, యాప్ల నుండి ఎప్పటికప్పుడు తాజా సమాచారాన్ని చూపిస్తాయి, ఇంకా ఇవి ఎల్లప్పుడూ స్టేటస్ బార్, లాక్ స్క్రీన్లో కనిపిస్తాయి"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ఈ నోటిఫికేషన్లను ఎడిట్ చేయడం వీలుపడదు."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"కాల్ నోటిఫికేషన్లను ఎడిట్ చేయడం సాధ్యం కాదు."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ఈ నోటిఫికేషన్ల గ్రూప్ను ఇక్కడ కాన్ఫిగర్ చేయలేము"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"తక్కువ ప్రాధాన్యత నోటిఫికేషన్ చిహ్నాలను చూపించు"</string>
<string name="other" msgid="429768510980739978">"ఇతరం"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"టైల్ను తీసివేయండి"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"చివరి పొజిషన్కు టైల్ను జోడించండి"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"టైల్ను తరలించండి"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ఇటీవలి యాప్లను చూడండి"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"యాప్ల మధ్య మారండి"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"పూర్తయింది"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"ఇటీవలి యాప్లను చూడటానికి, టచ్ప్యాడ్లో మూడు వేళ్లతో పైకి స్వైప్ చేసి, హోల్డ్ చేయండి"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"మీ యాప్లన్నింటినీ చూడటానికి, మీ కీబోర్డ్లో యాక్షన్ కీని నొక్కండి"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"దాచిపెట్టినది"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"చూడటానికి అన్లాక్ చేయండి"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"సందర్భోచిత విద్య"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"వెనుకకు వెళ్లడానికి మీ టచ్ప్యాడ్ను ఉపయోగించండి"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"మూడు వేళ్లతో ఎడమ / కుడి వైపునకు స్వైప్ చేయండి. మరిన్ని సంజ్ఞల గురించి తెలుసుకోవడానికి ట్యాప్ చేయండి."</string>
diff --git a/packages/SystemUI/res/values-te/tiles_states_strings.xml b/packages/SystemUI/res/values-te/tiles_states_strings.xml
index 7562aae..d118429 100644
--- a/packages/SystemUI/res/values-te/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-te/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ఆఫ్లో ఉంది"</item>
<item msgid="5908720590832378783">"ఆన్లో ఉంది"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"అందుబాటులో లేదు"</item>
+ <item msgid="6641673879029894995">"ఆఫ్లో ఉంది"</item>
+ <item msgid="5806682401126108403">"ఆన్లో ఉంది"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 873635d..0b314f4 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"เชื่อมต่อบลูทูธแล้ว"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ไอคอนอุปกรณ์บลูทูธ"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"คลิกเพื่อกำหนดค่ารายละเอียดอุปกรณ์"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"คลิกเพื่อดูอุปกรณ์ทั้งหมด"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"คลิกเพื่อจับคู่อุปกรณ์ใหม่"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g> กำหนดค่ารายละเอียดอุปกรณ์"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"ดูอุปกรณ์ทั้งหมด"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"จับคู่อุปกรณ์ใหม่"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ไม่ทราบเปอร์เซ็นต์แบตเตอรี่"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"เชื่อมต่อกับ <xliff:g id="BLUETOOTH">%s</xliff:g> แล้ว"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"เชื่อมต่อกับ <xliff:g id="CAST">%s</xliff:g>"</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"อินพุต"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"เครื่องช่วยฟัง"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"กำลังเปิด..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ปรับความสว่างไม่ได้เนื่องจาก\nควบคุมโดยแอปที่อยู่ด้านบน"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ปรับความสว่างไม่ได้เนื่องจากควบคุมโดยแอปที่อยู่ด้านบน"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"หมุนอัตโนมัติ"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"หมุนหน้าจออัตโนมัติ"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"ตำแหน่ง"</string>
@@ -506,7 +507,7 @@
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"ปัดไปทางซ้ายเพื่อเริ่มบทแนะนำส่วนกลาง"</string>
<string name="cta_tile_button_to_open_widget_editor" msgid="3871562362382963878">"ปรับแต่ง"</string>
<string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"ปิด"</string>
- <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"เพิ่ม นำออก และจัดลำดับวิดเจ็ตในพื้นที่นี้ใหม่"</string>
+ <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"เพิ่ม นำออก และจัดลำดับวิดเจ็ตในพื้นที่นี้ใหม่"</string>
<string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"เพิ่มวิดเจ็ตอีก"</string>
<string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"กดค้างเพื่อปรับแต่งวิดเจ็ต"</string>
<string name="button_to_configure_widgets_text" msgid="4191862850185256901">"ปรับแต่งวิดเจ็ต"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่รองรับฟีเจอร์การสนทนา"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ความคิดเห็น"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"ปิด"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"ไม่แสดงเป็นรายการที่ปักหมุด"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"กำลังแสดงข้อมูลอัปเดตแบบเรียลไทม์"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"การแจ้งเตือนที่ปักหมุดไว้จะแสดงข้อมูลแบบเรียลไทม์จากแอป และจะปรากฏในแถบสถานะและหน้าจอล็อกเสมอ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"แก้ไขการแจ้งเตือนเหล่านี้ไม่ได้"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"แก้ไขการแจ้งเตือนสายเรียกเข้าไม่ได้"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"การแจ้งเตือนกลุ่มนี้กำหนดค่าที่นี่ไม่ได้"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"ใช้โหมดเต็มหน้าจอ"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ใช้มุมมองบนเดสก์ท็อป"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"แสดงไอคอนการแจ้งเตือนลำดับความสำคัญต่ำ"</string>
<string name="other" msgid="429768510980739978">"อื่นๆ"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"นำชิ้นส่วนออก"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"เพิ่มการ์ดไปยังตำแหน่งสุดท้าย"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ย้ายชิ้นส่วน"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ดูแอปล่าสุด"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"เปลี่ยนแอป"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"เสร็จสิ้น"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"ถัดไป"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"หากต้องการดูแอปล่าสุด ให้ใช้ 3 นิ้วปัดขึ้นแล้วค้างไว้บนทัชแพด"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"หากต้องการดูแอปทั้งหมด ให้กดปุ่มดำเนินการบนแป้นพิมพ์"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"ปกปิดไว้"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"ปลดล็อกเพื่อดู"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"การศึกษาตามบริบท"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"ใช้ทัชแพดเพื่อย้อนกลับ"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"ใช้ 3 นิ้วปัดไปทางซ้ายหรือขวา แตะเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับท่าทางสัมผัสต่างๆ"</string>
diff --git a/packages/SystemUI/res/values-th/tiles_states_strings.xml b/packages/SystemUI/res/values-th/tiles_states_strings.xml
index 6d36036..9fba3bd 100644
--- a/packages/SystemUI/res/values-th/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-th/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"ปิด"</item>
<item msgid="5908720590832378783">"เปิด"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"ไม่พร้อมใช้งาน"</item>
+ <item msgid="6641673879029894995">"ปิด"</item>
+ <item msgid="5806682401126108403">"เปิด"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index e6aa410..f5a7fde 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Nakakonekta ang Bluetooth."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icon ng Bluetooth device"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"I-click para i-configure ang detalye ng device"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"I-click para tingnan ang lahat ng device"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"I-click para magpares ng bagong device"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Hindi alam ang porsyento ng baterya."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Nakakonekta sa <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Nakakonekta sa <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Mga hearing aid"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Ino-on…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Hindi ma-adjust ang liwanag dahil\n kinokontrol ito ng nangingibabaw na app"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Hindi ma-adjust ang liwanag dahil kinokontrol ito ng nangingibabaw na app"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"I-auto rotate"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Awtomatikong i-rotate ang screen"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Lokasyon"</string>
@@ -623,7 +627,7 @@
<string name="quick_settings_disclosure_management" msgid="5515296598440684962">"Pagmamay-ari ng iyong organisasyon ang device na ito"</string>
<string name="quick_settings_disclosure_named_management" msgid="3476472755775165827">"Pagmamay-ari ng <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> ang device na ito"</string>
<string name="quick_settings_disclosure_management_vpns" msgid="929181757984262902">"Pag-aari ng organisasyon mo ang device na ito at nakakonekta ito sa internet sa pamamagitan ng VPN"</string>
- <string name="quick_settings_disclosure_named_management_vpns" msgid="3312645578322079185">"Pagmamay-ari ng <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> ang device na ito at nakakoenekta ito sa internet sa pamamagitan ng mga VPN"</string>
+ <string name="quick_settings_disclosure_named_management_vpns" msgid="3312645578322079185">"Pagmamay-ari ng <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> ang device na ito at nakakonekta ito sa internet sa pamamagitan ng mga VPN"</string>
<string name="quick_settings_disclosure_managed_profile_monitoring" msgid="1423899084754272514">"Maaaring sumubaybay ang iyong organisasyon ng trapiko sa network sa profile sa trabaho mo"</string>
<string name="quick_settings_disclosure_named_managed_profile_monitoring" msgid="8321469176706219860">"Maaaring subaybayan ng <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> ang trapiko sa network sa iyong profile sa trabaho"</string>
<string name="quick_settings_disclosure_managed_profile_network_activity" msgid="2636594621387832827">"Nakikita ng IT admin ang aktibidad sa network"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"Hindi sinusuportahan ng <xliff:g id="APP_NAME">%1$s</xliff:g> ang mga feature ng pag-uusap"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"I-dismiss"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Huwag ipakita bilang naka-pin"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Ipinapakita ang Mga Live na Update"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Nagpapakita ang mga naka-pin na notification ng live na impormasyon mula sa mga app, at palagi itong nasa status bar at lock screen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Hindi puwedeng baguhin ang mga notification na ito."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Hindi mabago ang mga notification ng tawag."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Hindi mako-configure dito ang pangkat na ito ng mga notification"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Pag-multitask"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Gumamit ng split screen nang nasa kanan ang app"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Gumamit ng split screen nang nasa kaliwa ang app"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Lumipat sa full screen"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Lumipat sa app sa kanan o ibaba habang ginagamit ang split screen"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Lumipat sa app sa kaliwa o itaas habang ginagamit ang split screen"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Habang nasa split screen: magpalit-palit ng app"</string>
@@ -987,6 +991,8 @@
</string-array>
<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>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"alisin ang tile"</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>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Tingnan ang mga kamakailang app"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Lumipat ng app"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Tapos na"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <skip />
<string name="gesture_error_title" msgid="469064941635578511">"Subukan ulit!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Bumalik"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Mag-swipe pakaliwa o pakanan gamit ang tatlong daliri sa iyong touchpad"</string>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Para tingnan ang kamakailang app, mag-swipe pataas at i-hold gamit ang tatlong daliri sa touchpad"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para tingnan ang lahat ng iyong app, pindutin ang action key sa keyboard mo"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Na-redact"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"I-unlock para tingnan"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Edukasyon ayon sa konteksto"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Gamitin ang iyong touchpad para bumalik"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Mag-swipe pakaliwa o pakanan gamit ang tatlong daliri. I-tap para matuto pa tungkol sa mga galaw."</string>
diff --git a/packages/SystemUI/res/values-tl/tiles_states_strings.xml b/packages/SystemUI/res/values-tl/tiles_states_strings.xml
index 112c0bf..03cca6d 100644
--- a/packages/SystemUI/res/values-tl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-tl/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Naka-off"</item>
<item msgid="5908720590832378783">"Naka-on"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Hindi available"</item>
+ <item msgid="6641673879029894995">"Naka-off"</item>
+ <item msgid="5806682401126108403">"Naka-on"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 05fc1f2..dca7381 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth bağlandı."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth cihaz simgesi"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Cihaz ayrıntılarını yapılandırmak için tıklayın"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Tüm cihazları görmek için tıklayın"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Yeni cihaz eşlemek için tıklayın"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Pil yüzdesi bilinmiyor."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ile bağlı."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> bağlantısı kuruldu."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Giriş"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"İşitme cihazları"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Açılıyor…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Parlaklık ayarlanamıyor, çünkü bu özellik\n en üstteki uygulama tarafından kontrol ediliyor"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Parlaklık ayarlanamıyor, çünkü bu özellik en üstteki uygulama tarafından kontrol ediliyor"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Otomatik döndür"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Ekranı otomatik döndür"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Konum"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>, sohbet özelliklerini desteklemiyor"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Geri bildirim"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Kapat"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Sabitlenmiş olarak gösterme"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Canlı haberlerin gösterilmesi"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Sabitlenmiş bildirimler, uygulamalardan gelen canlı bilgileri gösterir ve durum çubuğu ile kilit ekranında her zaman görünür"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirimler değiştirilemez."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Arama bildirimleri değiştirilemez."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildirim grubu burada yapılandırılamaz"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Çoklu görev"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Sağdaki uygulamayla birlikte bölünmüş ekranı kullan"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Soldaki uygulamayla birlikte bölünmüş ekranı kullan"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Tam ekran moduna geç"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Bölünmüş ekran kullanırken sağdaki veya alttaki uygulamaya geçiş yap"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Bölünmüş ekran kullanırken soldaki veya üstteki uygulamaya geçiş yapın"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Bölünmüş ekran etkinken: Bir uygulamayı başkasıyla değiştir"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Düşük öncelikli bildirim simgelerini göster"</string>
<string name="other" msgid="429768510980739978">"Diğer"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<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="8311378984458545661">"kutuyu son konuma ekleyin"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Kutuyu taşı"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Son uygulamaları görüntüle"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Uygulamalar arasında geçiş yapma"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Bitti"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Son uygulamaları görüntülemek için dokunmatik alanda üç parmağınızla yukarı kaydırıp basılı tutun"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Tüm uygulamalarınızı görüntülemek için klavyenizdeki eylem tuşuna basın"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Çıkartıldı"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Görüntülemek için kilidi açın"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Bağlama dayalı eğitim"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Geri dönmek için dokunmatik alanınızı kullanın"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Üç parmağınızla sola veya sağa kaydırın. Daha fazla hareket öğrenmek için dokunun."</string>
diff --git a/packages/SystemUI/res/values-tr/tiles_states_strings.xml b/packages/SystemUI/res/values-tr/tiles_states_strings.xml
index f3c51c0..7c17ace 100644
--- a/packages/SystemUI/res/values-tr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-tr/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Kapalı"</item>
<item msgid="5908720590832378783">"Açık"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Yok"</item>
+ <item msgid="6641673879029894995">"Kapalı"</item>
+ <item msgid="5806682401126108403">"Açık"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 0b0d6dc..4f5c181 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth під’єднано."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Значок пристрою з Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Натисніть, щоб змінити налаштування пристрою"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Натисніть, щоб переглянути всі пристрої"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Натисніть, щоб підключити новий пристрій"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Відсоток заряду акумулятора невідомий."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Підключено до <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Під’єднано до пристрою <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Джерело сигналу"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слухові апарати"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Увімкнення…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не вдається змінити яскравість, оскільки\n нею керує основний додаток"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не вдається змінити яскравість, оскільки нею керує основний додаток"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автообертання"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоматично обертати екран"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Геодані"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не підтримує функції розмов"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Надіслати відгук"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Закрити"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Не показувати як закріплені"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Показ інформації в реальному часі"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Закріплені сповіщення з актуальною інформацією від додатків. Завжди показуються в рядку стану й на заблокованому екрані."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ці сповіщення не можна змінити."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Сповіщення про виклик не можна змінити."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Цю групу сповіщень не можна налаштувати тут"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Показувати значки сповіщень із низьким пріоритетом"</string>
<string name="other" msgid="429768510980739978">"Інше"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"вилучити опцію"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"додати панель на останню позицію"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Перемістити опцію"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Переглянути нещодавні додатки"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Перемикання між додатками"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Щоб переглянути останні додатки, проведіть трьома пальцями вгору по сенсорній панелі й утримуйте їх"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Щоб переглянути всі додатки, натисніть клавішу дії на клавіатурі"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Замасковано"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Розблокуйте, щоб переглянути"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контекстне навчання"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Щоб повернутися, використовуйте сенсорну панель"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Проведіть трьома пальцями вліво чи вправо. Натисніть, щоб дізнатися про інші жести."</string>
diff --git a/packages/SystemUI/res/values-uk/tiles_states_strings.xml b/packages/SystemUI/res/values-uk/tiles_states_strings.xml
index 4fac740..8b50c085 100644
--- a/packages/SystemUI/res/values-uk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-uk/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Вимкнено"</item>
<item msgid="5908720590832378783">"Увімкнено"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Недоступно"</item>
+ <item msgid="6641673879029894995">"Вимкнено"</item>
+ <item msgid="5806682401126108403">"Увімкнено"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index ab4dd77..7cdb223 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"بلوٹوتھ مربوط ہے۔"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"بلوٹوتھ آلے کا آئیکن"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"آلہ کی تفصیل کو کنفیگر کرنے کے لیے کلک کریں"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"تمام آلات دیکھنے کے لیے کلک کریں"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"نئے آلے کا جوڑا بنانے کے لیے کلک کریں"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>۔ آلہ کی تفصیل کنفیگر کریں"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"تمام آلات دیکھیں"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"نئے آلے کا جوڑا بنائیں"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"بیٹری کی فیصد نامعلوم ہے۔"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> سے منسلک ہیں۔"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> سے منسلک ہے۔"</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ان پٹ"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"سماعتی آلات"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"آن ہو رہا ہے…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"چمک کو ایڈجسٹ نہیں کیا جا سکتا کیونکہ اسے سرفہرست ایپ کے ذریعے \n کنٹرول کیا جا رہا ہے"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"چمک کو ایڈجسٹ نہیں کیا جا سکتا کیونکہ اسے سرفہرست ایپ کے ذریعے کنٹرول کیا جا رہا ہے"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"خود کار طور پر گھمائیں"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"اسکرین کو خود کار طور پر گھمائیں"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"مقام"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ایپ گفتگو کی خصوصیات کو سپورٹ نہیں کرتی ہے"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"تاثرات"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"برخاست کریں"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"پن کردہ کے طور پر نہ دکھائیں"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"لائیو اپ ڈیٹس کو دکھایا جا رہا ہے"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"پن کردہ اطلاعات ایپس سے لائیو معلومات ڈسپلے کرتی ہیں اور ہمیشہ اسٹیٹس بار اور مقفل اسکرین پر ظاہر ہوتی ہیں"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ان اطلاعات کی ترمیم نہیں کی جا سکتی۔"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"کال کی اطلاعات میں ترمیم نہیں کی جا سکتی۔"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"اطلاعات کے اس گروپ کو یہاں کنفیگر نہیں کیا جا سکتا"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"فُل اسکرین استعمال کریں"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ڈیسک ٹاپ منظر استعمال کریں"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"کم ترجیحی اطلاع کے آئیکنز دکھائیں"</string>
<string name="other" msgid="429768510980739978">"دیگر"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ٹائل ہٹائیں"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ٹائل کو آخری پوزیشن پر شامل کریں"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ٹائل منتقل کریں"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"حالیہ ایپس دیکھیں"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ایپس سوئچ کریں"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ہو گیا"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"اگلا"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"حالیہ ایپس دیکھنے کے لیے، ٹچ پیڈ پر تین انگلیوں سے اوپر سوائپ کریں اور دبائے رکھیں"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"اپنی سبھی ایپس دیکھنے کے لیے، اپنے کی بورڈ پر ایکشن کلید دبائیں"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"چھپانے کیلئے تبدیل کردہ"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"دیکھنے کے لیے غیر مقفل کریں"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"سیاق و سباق کی تعلیم"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"واپس جانے کے لیے اپنے ٹچ پیڈ کا استعمال کریں"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"تین انگلیوں سے دائیں یا بائیں طرف سوائپ کریں۔ مزید اشارے جاننے کے لیے تھپتھپائیں۔"</string>
diff --git a/packages/SystemUI/res/values-ur/tiles_states_strings.xml b/packages/SystemUI/res/values-ur/tiles_states_strings.xml
index 06e213b..fea0533 100644
--- a/packages/SystemUI/res/values-ur/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ur/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"آف"</item>
<item msgid="5908720590832378783">"آن"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"دستیاب نہیں ہے"</item>
+ <item msgid="6641673879029894995">"آف"</item>
+ <item msgid="5806682401126108403">"آن"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 55caf25..037f83d 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth ulandi."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth qurilma belgisi"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Qurilma haqida tafsilotlarni oʻzgartirish uchun bosing"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Barcha qurilmalarni koʻrish uchun bosing"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Yangi qurilmani ulash uchun bosing"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batareya quvvati foizi nomaʼlum."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ulangan: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Bunga ulangan: <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Kirish"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Eshitish moslamalari"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Yoqilmoqda…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Yorqinlik umumiy sozlamalar orqali boshqariladi.\nUni moslash imkonsiz"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Yorqinlik umumiy sozlamalar orqali boshqariladi.Uni moslash imkonsiz"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Avto-burilish"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Ekranning avtomatik burilishi"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Joylashuv"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasida suhbat funksiyalari ishlamaydi"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Fikr-mulohaza"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Yopish"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Qadalgan sifatida chiqmasin"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Jonli yangiliklar koʻrsatilmoqda"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Qadalgan bildirishnomalar ilovalardagi jonli efir maʼlumotlarini koʻrsatadi va har doim holat qatori va ekran qulfida chiqadi"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirishnomalarni tahrirlash imkonsiz."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Chaqiruv bildirishnomalarini tahrirlash imkonsiz."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ushbu bildirishnomalar guruhi bu yerda sozlanmaydi"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multi-vazifalilik"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Ekranni ajratib, joriy ilovani oʻngga joylash"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Ekranni ajratib, joriy ilovani chapga joylash"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Butun ekran rejimiga kirish"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Ajratilgan ekranda oʻngdagi yoki pastdagi ilovaga almashish"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Ajratilgan ekranda chapdagi yoki yuqoridagi ilovaga almashish"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Ajratilgan rejimda ilovalarni oʻzaro almashtirish"</string>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Muhim boʻlmagan bildirishnoma ikonkalarini koʻrsatish"</string>
<string name="other" msgid="429768510980739978">"Boshqa"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"katakchani olib tashlash"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"kartochkani oxirgi oʻringa qoʻshish"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Katakchani boshqa joyga olish"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Oxirgi ilovalarni koʻrish"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Ilovalarni almashtirish"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Tayyor"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Oxirgi ilovalarni koʻrish uchun sensorli panelda uchta barmoq bilan tepaga surib, bosib turing"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Barcha ishoralarni koʻrish uchun klaviaturadagi amal tugmasini bosing"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Chiqarildi"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Koʻrish uchun qulfdan chiqaring"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstual taʼlim"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Sensorli panel orqali orqaga qaytish"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Uchta barmoq bilan chapga yoki oʻngga suring. Boshqa ishoralar bilan tanishish uchun bosing."</string>
diff --git a/packages/SystemUI/res/values-uz/tiles_states_strings.xml b/packages/SystemUI/res/values-uz/tiles_states_strings.xml
index f636bc6..9b8ca80 100644
--- a/packages/SystemUI/res/values-uz/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-uz/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Yoqilmagan"</item>
<item msgid="5908720590832378783">"Yoniq"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Mavjud emas"</item>
+ <item msgid="6641673879029894995">"Yoqilmagan"</item>
+ <item msgid="5806682401126108403">"Yoniq"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 35fe2f2..59e81bb 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Đã kết nối bluetooth."</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Biểu tượng thiết bị Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Nhấp để định cấu hình thông tin thiết bị"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Nhấp để xem tất cả các thiết bị"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Nhấp để ghép nối thiết bị mới"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Tỷ lệ phần trăm pin không xác định."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Đã kết nối với <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Đã kết nối với <xliff:g id="CAST">%s</xliff:g>."</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Thiết bị đầu vào"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Thiết bị trợ thính"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Đang bật…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Không điều chỉnh được độ sáng vì độ sáng đang được\n ứng dụng trên cùng điều khiển"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Không điều chỉnh được độ sáng vì độ sáng đang được ứng dụng trên cùng điều khiển"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Tự động xoay"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Tự động xoay màn hình"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Vị trí"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> không hỗ trợ các tính năng trò chuyện"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Phản hồi"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Đóng"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Không hiện dưới dạng đã ghim"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Đang hiện thông tin cập nhật trực tiếp"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Thông báo được ghim sẽ hiện thông tin trực tiếp từ ứng dụng và luôn xuất hiện trên thanh trạng thái cũng như màn hình khoá"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Không thể sửa đổi các thông báo này."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Không thể sửa đổi các thông báo cuộc gọi."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Không thể định cấu hình nhóm thông báo này tại đây"</string>
@@ -900,7 +901,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Đa nhiệm"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Dùng tính năng chia đôi màn hình với ứng dụng ở bên phải"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Dùng tính năng chia đôi màn hình với ứng dụng ở bên trái"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Chuyển sang chế độ toàn màn hình"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Chuyển sang ứng dụng bên phải hoặc ở dưới khi đang chia đôi màn hình"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Chuyển sang ứng dụng bên trái hoặc ở trên khi đang chia đôi màn hình"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Trong chế độ chia đôi màn hình: thay một ứng dụng bằng ứng dụng khác"</string>
@@ -987,6 +991,8 @@
</string-array>
<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>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"xóa ô"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"thêm ô vào vị trí cuối cùng"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Di chuyển ô"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Xem các ứng dụng gần đây"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Chuyển đổi ứng dụng"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Xong"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Để 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="all_apps_edu_toast_content" msgid="8807496014667211562">"Để xem tất cả ứng dụng của bạn, hãy nhấn phím hành động trên bàn phím"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Bị loại bỏ"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Mở khoá để xem"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Hướng dẫn theo bối cảnh"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Dùng bàn di chuột để quay lại"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Dùng 3 ngón tay vuốt sang trái hoặc sang phải. Hãy nhấn để tìm hiểu các cử chỉ khác."</string>
diff --git a/packages/SystemUI/res/values-vi/tiles_states_strings.xml b/packages/SystemUI/res/values-vi/tiles_states_strings.xml
index d8e6887..afbf477 100644
--- a/packages/SystemUI/res/values-vi/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-vi/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Đang tắt"</item>
<item msgid="5908720590832378783">"Đang bật"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Không có"</item>
+ <item msgid="6641673879029894995">"Đang tắt"</item>
+ <item msgid="5806682401126108403">"Đang bật"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 530017c..03c4cdf 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -245,8 +245,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"蓝牙已连接。"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"蓝牙设备图标"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"点击以配置设备详情"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"点击即可查看所有设备"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"点击即可配对新设备"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"电池电量百分比未知。"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"已连接到<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"已连接到 <xliff:g id="CAST">%s</xliff:g>。"</string>
@@ -328,7 +332,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"输入"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"助听器"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"正在开启…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"亮度无法调整,因为它正在被\n顶层应用控制"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"亮度无法调整,因为它正在被顶层应用控制"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"自动屏幕旋转"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"自动旋转屏幕"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"位置信息"</string>
@@ -808,12 +812,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>不支持对话功能"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"反馈"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"关闭"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"请勿显示在固定的通知中"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"显示实时动态"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"固定的通知会显示应用的实时信息,并始终显示在状态栏和锁定屏幕上"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"无法修改这些通知。"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"无法修改来电通知。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"您无法在此处配置这组通知"</string>
@@ -900,7 +901,10 @@
<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>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<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>
@@ -987,6 +991,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"显示低优先级的通知图标"</string>
<string name="other" msgid="429768510980739978">"其他"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除功能块"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"将功能块添加到最后一个位置"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移动功能块"</string>
@@ -1501,6 +1507,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"查看最近用过的应用"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"切换应用"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1538,7 +1546,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"如要查看最近用过的应用,请用三根手指在触控板上向上滑动并按住"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"如要查看所有应用,请按下键盘上的快捷操作按键"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"已隐去"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"解锁即可查看"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"内容相关指导"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"使用触控板返回"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"用三根手指向左或向右滑动。点按即可了解更多手势。"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml
index 6f36065..a3922e5 100644
--- a/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"关闭"</item>
<item msgid="5908720590832378783">"开启"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"不可用"</item>
+ <item msgid="6641673879029894995">"已关闭"</item>
+ <item msgid="5806682401126108403">"已开启"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 496cbdb..472f531 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"藍牙連線已建立。"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"藍牙裝置圖示"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"按一下即可設定裝置詳情"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"㩒一下就可以睇所有裝置"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"㩒一下就可以配對新裝置"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>。設定裝置詳細資料"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"查看所有裝置"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"配對新裝置"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"電量百分比不明。"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"已連線至<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"已連接至 <xliff:g id="CAST">%s</xliff:g>。"</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"輸入"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"助聽器"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"正在開啟…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"無法調整亮度,因為\n目前是由上層應用程式控制亮度"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"無法調整亮度,因為目前是由上層應用程式控制亮度"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"自動旋轉"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"自動旋轉螢幕"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"位置"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"意見反映"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"關閉"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"不要置頂顯示"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"顯示即時消息"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"置頂通知顯示應用程式的即時資訊,並且一律在狀態列和上鎖畫面顯示"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"無法修改通話通知。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在此設定這組通知"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"使用全螢幕模式"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"使用電腦檢視畫面"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"顯示低優先順序通知圖示"</string>
<string name="other" msgid="429768510980739978">"其他"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除圖塊"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"加圖塊去上一個位置"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移動圖塊"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"查看最近使用的應用程式"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"切換應用程式"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"繼續"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"如要查看最近使用的應用程式,請用三隻手指在觸控板上向上滑動並按住"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"如要查看所有應用程式,請在鍵盤上按下快捷操作鍵"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"已剔除"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"解鎖即可查看"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"內容教學"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"使用觸控板返回"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"用三隻手指向左或向右滑動。輕按即可瞭解更多手勢。"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml
index 25548e2..26bec2c 100644
--- a/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"關閉"</item>
<item msgid="5908720590832378783">"開啟"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"無法使用"</item>
+ <item msgid="6641673879029894995">"關閉"</item>
+ <item msgid="5806682401126108403">"開啟"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index c63473f..a56fc03 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -245,8 +245,9 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"藍牙連線已建立。"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"「藍牙裝置」圖示"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"按一下即可設定裝置詳細資料"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"按一下即可查看所有裝置"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"按一下即可配對新裝置"</string>
+ <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>。設定裝置詳細資料"</string>
+ <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"查看所有裝置"</string>
+ <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"配對新裝置"</string>
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"電池電量不明。"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"已連線至<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"已連線至 <xliff:g id="CAST">%s</xliff:g>。"</string>
@@ -328,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"輸入"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"助聽器"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"開啟中…"</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"無法調整亮度,因為\n目前是由上層應用程式控制亮度"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"無法調整亮度,因為目前是由上層應用程式控制亮度"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"自動旋轉"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"自動旋轉螢幕"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"定位"</string>
@@ -808,12 +809,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"意見回饋"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"關閉"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"不要顯示在固定的通知中"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"顯示最新即時資訊"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"固定的通知會提供應用程式即時資訊,並一律顯示在狀態列和螢幕鎖定畫面上"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"無法修改來電通知。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在這裡設定這個通知群組"</string>
@@ -900,7 +898,8 @@
<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="4221409316059910349">"使用全螢幕模式"</string>
+ <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"使用電腦檢視畫面"</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>
@@ -987,6 +986,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"顯示低優先順序通知圖示"</string>
<string name="other" msgid="429768510980739978">"其他"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除圖塊"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"將設定方塊新增到最後一個位置"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移動圖塊"</string>
@@ -1501,6 +1502,7 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"查看最近使用的應用程式"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"切換應用程式"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string>
+ <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"繼續"</string>
<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>
@@ -1538,7 +1540,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"如要查看最近使用的應用程式,請在觸控板上向上滑動並按住"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"如要查看所有應用程式,請按下鍵盤上的快捷操作鍵"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"已遮蓋"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"解鎖即可查看"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"內容教學"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"使用觸控板返回"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"用三指向左或向右滑動。輕觸即可進一步瞭解手勢。"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml
index 3a192ba..6e272f2 100644
--- a/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"關閉"</item>
<item msgid="5908720590832378783">"開啟"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"無法使用"</item>
+ <item msgid="6641673879029894995">"已關閉"</item>
+ <item msgid="5806682401126108403">"已開啟"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 2aad788..20be43b 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -247,8 +247,12 @@
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth ixhunyiwe"</string>
<string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Isithonjana sedivayisi ye-Bluetooth"</string>
<string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Chofoza ukuze ulungiselele imininingwane yedivayisi"</string>
- <string name="accessibility_bluetooth_device_settings_see_all" msgid="9111952496905423543">"Chofoza ukuze ubone wonke amadivayisi"</string>
- <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="2435184865793496966">"Chofoza ukuze ubhangqe idivayisi entsha"</string>
+ <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) -->
+ <skip />
+ <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) -->
+ <skip />
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Iphesenti lebhethri alaziwa."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Xhuma ku-<xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ixhumeke ku-<xliff:g id="CAST">%s</xliff:g>."</string>
@@ -330,7 +334,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Okokufaka"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Imishini yendlebe"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Iyavula..."</string>
- <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ayikwazi ukulungisa ukukhanya ngoba ilawulwa\n yi-app ephezulu"</string>
+ <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ayikwazi ukulungisa ukukhanya ngoba ilawulwa yi-app ephezulu"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Ukuphenduka okuzenzakalelayo"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Phendula iskrini ngokuzenzakalela"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Indawo"</string>
@@ -810,12 +814,9 @@
<string name="no_shortcut" msgid="8257177117568230126">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayisekeli izici zengxoxo"</string>
<string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Impendulo"</string>
<string name="notification_inline_dismiss" msgid="88423586921134258">"Chitha"</string>
- <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
- <skip />
- <!-- no translation found for live_notifications_title (1586553354601345379) -->
- <skip />
- <!-- no translation found for live_notifications_desc (7470787001768372152) -->
- <skip />
+ <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Ungabonisi njengophiniwe"</string>
+ <string name="live_notifications_title" msgid="1586553354601345379">"Ibonisa Izibuyekezo Ezibukhoma"</string>
+ <string name="live_notifications_desc" msgid="7470787001768372152">"Izaziso eziphiniwe zibonisa ulwazi olubukhoma oluvela kuma-app, futhi oluhlala luvela kubha yesimo nasekukhiyeni isikrini"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Lezi zaziso azikwazi ukushintshwa."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Izaziso zekholi azikwazi ukushintshwa."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Leli qembu lezaziso alikwazi ukulungiselelwa lapha"</string>
@@ -902,7 +903,10 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Ukwenza imisebenzi eminingi"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"Sebenzisa ukuhlukanisa isikrini nge-app kwesokudla"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"Sebenzisa ukuhlukanisa isikrini nge-app kwesokunxele"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Shintshela esikrinini esigcwele"</string>
+ <!-- no translation found for system_multitasking_full_screen (4221409316059910349) -->
+ <skip />
+ <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) -->
+ <skip />
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Shintshela ku-app ngakwesokudla noma ngezansi ngenkathi usebenzisa uhlukanisa isikrini"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Shintshela ku-app ngakwesokunxele noma ngaphezulu ngenkathi usebenzisa ukuhlukanisa isikrini"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Ngesikhathi sokuhlukaniswa kwesikrini: shintsha i-app ngenye"</string>
@@ -989,6 +993,8 @@
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"Bonisa izithonjana zesaziso zokubaluleka okuncane"</string>
<string name="other" msgid="429768510980739978">"Okunye"</string>
+ <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) -->
+ <skip />
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"susa ithayela"</string>
<string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"faka ithayela endaweni yokugcina"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Hambisa ithayela"</string>
@@ -1503,6 +1509,8 @@
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Buka ama-app akamuva"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Shintsha ama-app"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Kwenziwe"</string>
+ <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) -->
+ <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>
@@ -1540,7 +1548,10 @@
<string name="overview_edu_toast_content" msgid="5797030644017804518">"Ukuze ubuke ama-app akamuva, swayiphela phezulu bese ubambe ngeminwe emithathu ephedini yokuthinta"</string>
<string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Ukuze ubuke wonke ama-app wakho, cindezela inkinobho yokufinyelela kukhibhodi yakho"</string>
<string name="redacted_notification_single_line_title" msgid="212019960919261670">"Kwenziwe iredact"</string>
- <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"Vula ukuze ubuke"</string>
+ <!-- no translation found for public_notification_single_line_text (3576190291791654933) -->
+ <skip />
+ <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) -->
+ <skip />
<string name="contextual_education_dialog_title" msgid="4630392552837487324">"Imfundo yokuqukethwe"</string>
<string name="back_edu_notification_title" msgid="5624780717751357278">"Sebenzisa iphedi yokuthinta ukuze ubuyele emuva"</string>
<string name="back_edu_notification_content" msgid="2497557451540954068">"Swayiphela kwesokunxele noma kwesokudla usebenzisa iminwe emithathu. Thepha ukuze ufunde kabanzi ngokunyakazisa umzimba."</string>
diff --git a/packages/SystemUI/res/values-zu/tiles_states_strings.xml b/packages/SystemUI/res/values-zu/tiles_states_strings.xml
index f9f27bd..13ffe04 100644
--- a/packages/SystemUI/res/values-zu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zu/tiles_states_strings.xml
@@ -196,7 +196,9 @@
<item msgid="6419996398343291862">"Valiwe"</item>
<item msgid="5908720590832378783">"Vuliwe"</item>
</string-array>
- <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
- <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
- <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
+ <string-array name="tile_states_desktopeffects">
+ <item msgid="6253480000354287321">"Ayitholakali"</item>
+ <item msgid="6641673879029894995">"Ivaliwe"</item>
+ <item msgid="5806682401126108403">"Ivuliwe"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 17a89b3..640e1fa 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -491,6 +491,9 @@
<!-- some constraints use a negative margin. must be aligned with overlay_border_width, above;
overlay_border_width_neg = overlay_border_width * -1 -->
<dimen name="overlay_border_width_neg">-4dp</dimen>
+ <dimen name="overlay_shade_panel_shape_radius">
+ @dimen/aux_spacing_overlay_panel_shape_radius
+ </dimen>
<dimen name="clipboard_preview_size">@dimen/overlay_x_scale</dimen>
<dimen name="clipboard_overlay_min_font">10sp</dimen>
@@ -2215,4 +2218,8 @@
<dimen name="rear_display_progress_width">231dp</dimen>
<!-- Rear display mode end -->
+ <!-- Spacing attributes to overwrite -->
+ <dimen name="aux_spacing_overlay_panel_shape_radius">46dp</dimen>
+ <!-- Spacing attributes to overwrite end -->
+
</resources>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 359bd2b..084495f 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -592,6 +592,12 @@
<!-- Content description of the button to expand the group of devices. [CHAR LIMIT=NONE] -->
<string name="accessibility_expand_group">Expand group.</string>
+ <!-- Content description of the button to add a device to a group. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_add_device_to_group">Add device to group.</string>
+
+ <!-- Content description of the button to remove a device from a group. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_remove_device_from_group">Remove device from group.</string>
+
<!-- Content description of the button to open the application . [CHAR LIMIT=NONE] -->
<string name="accessibility_open_application">Open application.</string>
@@ -802,7 +808,7 @@
<!-- QuickSettings: Bluetooth secondary label shown when bluetooth is being enabled [CHAR LIMIT=NONE] -->
<string name="quick_settings_bluetooth_secondary_label_transient">Turning on…</string>
<!-- QuickSettings: Brightness [CHAR LIMIT=NONE] -->
- <string name="quick_settings_brightness_unable_adjust_msg">Can\'t adjust brightness because it\'s being\n controlled by the top app</string>
+ <string name="quick_settings_brightness_unable_adjust_msg">Can\'t adjust brightness because it\'s being controlled by the top app</string>
<!-- QuickSettings: Rotation Unlocked [CHAR LIMIT=NONE] -->
<string name="quick_settings_rotation_unlocked_label">Auto-rotate</string>
<!-- Accessibility label for Auto-ratate QuickSettings tile [CHAR LIMIT=NONE] -->
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java
index 9ebb15f..c822439 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java
@@ -19,6 +19,7 @@
import static android.app.StatusBarManager.NAVBAR_BACK_DISMISS_IME;
import static android.app.StatusBarManager.NAVBAR_IME_SWITCHER_BUTTON_VISIBLE;
import static android.app.StatusBarManager.NAVBAR_IME_VISIBLE;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import android.annotation.TargetApi;
import android.app.StatusBarManager.NavbarFlags;
@@ -35,6 +36,8 @@
import android.view.Surface;
import android.view.WindowManager;
+import com.android.systemui.shared.recents.model.Task;
+
/* Common code */
public class Utilities {
@@ -165,4 +168,10 @@
float densityRatio = (float) densityDpi / DisplayMetrics.DENSITY_DEFAULT;
return (size / densityRatio);
}
+
+ /** Whether a task is in freeform mode. */
+ public static boolean isFreeformTask(Task task) {
+ return task != null && task.getKey() != null
+ && task.getKey().windowingMode == WINDOWING_MODE_FREEFORM;
+ }
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index f6d0f4e..63101d4 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -156,7 +156,7 @@
import com.android.systemui.res.R;
import com.android.systemui.scene.domain.interactor.SceneInteractor;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
-import com.android.systemui.scene.shared.model.Scenes;
+import com.android.systemui.scene.shared.model.Overlays;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.shared.system.TaskStackChangeListener;
@@ -2925,12 +2925,12 @@
) {
SceneContainerFlag.assertInNewMode();
return isPrimaryBouncerFullyShown(transitionState)
- || transitionState.isTransitioning(null, Scenes.Bouncer);
+ || transitionState.isTransitioning(null, Overlays.Bouncer);
}
private boolean isPrimaryBouncerFullyShown(ObservableTransitionState transitionState) {
SceneContainerFlag.assertInNewMode();
- return transitionState.isIdle(Scenes.Bouncer);
+ return transitionState.isIdle(Overlays.Bouncer);
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractor.kt
index 7039d5e..75503e8 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractor.kt
@@ -147,9 +147,7 @@
/** The scene to show when bouncer is dismissed. */
val dismissDestination: Flow<SceneKey> =
- sceneBackInteractor.backScene
- .filter { it != Scenes.Bouncer }
- .map { it ?: Scenes.Lockscreen }
+ sceneBackInteractor.backScene.map { it ?: Scenes.Lockscreen }
/** Notifies that the user has places down a pointer, not necessarily dragging just yet. */
fun onDown() {
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/BouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/BouncerViewBinder.kt
index 116c941..7f26831 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/BouncerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/BouncerViewBinder.kt
@@ -10,7 +10,7 @@
import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlags
import com.android.systemui.bouncer.ui.BouncerDialogFactory
import com.android.systemui.bouncer.ui.viewmodel.BouncerContainerViewModel
-import com.android.systemui.bouncer.ui.viewmodel.BouncerSceneContentViewModel
+import com.android.systemui.bouncer.ui.viewmodel.BouncerOverlayContentViewModel
import com.android.systemui.bouncer.ui.viewmodel.KeyguardBouncerViewModel
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
@@ -46,7 +46,7 @@
val keyguardInteractor: KeyguardInteractor,
val selectedUserInteractor: SelectedUserInteractor,
val legacyInteractor: PrimaryBouncerInteractor,
- val viewModelFactory: BouncerSceneContentViewModel.Factory,
+ val viewModelFactory: BouncerOverlayContentViewModel.Factory,
val dialogFactory: BouncerDialogFactory,
val bouncerContainerViewModelFactory: BouncerContainerViewModel.Factory,
)
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/ComposeBouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/ComposeBouncerViewBinder.kt
index 2dce284..33cebf7 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/ComposeBouncerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/ComposeBouncerViewBinder.kt
@@ -6,11 +6,12 @@
import androidx.activity.setViewTreeOnBackPressedDispatcherOwner
import androidx.compose.ui.platform.ComposeView
import androidx.lifecycle.Lifecycle
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.bouncer.ui.BouncerDialogFactory
import com.android.systemui.bouncer.ui.composable.BouncerContainer
import com.android.systemui.bouncer.ui.viewmodel.BouncerContainerViewModel
-import com.android.systemui.bouncer.ui.viewmodel.BouncerSceneContentViewModel
+import com.android.systemui.bouncer.ui.viewmodel.BouncerOverlayContentViewModel
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.lifecycle.WindowLifecycleState
import com.android.systemui.lifecycle.repeatWhenAttached
@@ -20,7 +21,6 @@
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.awaitCancellation
-import com.android.app.tracing.coroutines.launchTraced as launch
/** View binder responsible for binding the compose version of the bouncer. */
object ComposeBouncerViewBinder {
@@ -32,7 +32,7 @@
legacyInteractor: PrimaryBouncerInteractor,
keyguardInteractor: KeyguardInteractor,
selectedUserInteractor: SelectedUserInteractor,
- viewModelFactory: BouncerSceneContentViewModel.Factory,
+ viewModelFactory: BouncerOverlayContentViewModel.Factory,
dialogFactory: BouncerDialogFactory,
bouncerContainerViewModelFactory: BouncerContainerViewModel.Factory,
) {
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/composable/BouncerContainer.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/composable/BouncerContainer.kt
index c59c681..204eb3e 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/composable/BouncerContainer.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/composable/BouncerContainer.kt
@@ -24,14 +24,14 @@
import androidx.compose.ui.Modifier
import com.android.compose.theme.PlatformTheme
import com.android.systemui.bouncer.ui.BouncerDialogFactory
-import com.android.systemui.bouncer.ui.viewmodel.BouncerSceneContentViewModel
+import com.android.systemui.bouncer.ui.viewmodel.BouncerOverlayContentViewModel
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.lifecycle.rememberViewModel
/** Container that includes the compose bouncer and is meant to be included in legacy keyguard. */
@Composable
fun BouncerContainer(
- viewModelFactory: BouncerSceneContentViewModel.Factory,
+ viewModelFactory: BouncerOverlayContentViewModel.Factory,
dialogFactory: BouncerDialogFactory,
) {
PlatformTheme {
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerOverlayContentViewModel.kt
similarity index 98%
rename from packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModel.kt
rename to packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerOverlayContentViewModel.kt
index 5deb751..b944d1a 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerOverlayContentViewModel.kt
@@ -51,8 +51,8 @@
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.map
-/** Models UI state for the content of the bouncer scene. */
-class BouncerSceneContentViewModel
+/** Models UI state for the content of the bouncer overlay. */
+class BouncerOverlayContentViewModel
@AssistedInject
constructor(
@Application private val applicationContext: Context,
@@ -445,6 +445,6 @@
@AssistedFactory
interface Factory {
- fun create(): BouncerSceneContentViewModel
+ fun create(): BouncerOverlayContentViewModel
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModel.kt
index f50a2ab..aafc0e1 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModel.kt
@@ -20,29 +20,24 @@
import com.android.compose.animation.scene.Swipe
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
-import com.android.systemui.bouncer.domain.interactor.BouncerInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
-import kotlinx.coroutines.flow.map
/**
* Models UI state for user actions that can lead to navigation to other scenes when showing the
- * bouncer scene.
+ * bouncer overlay.
*/
-class BouncerUserActionsViewModel
-@AssistedInject
-constructor(private val bouncerInteractor: BouncerInteractor) : UserActionsViewModel() {
+class BouncerUserActionsViewModel @AssistedInject constructor() : UserActionsViewModel() {
override suspend fun hydrateActions(setActions: (Map<UserAction, UserActionResult>) -> Unit) {
- bouncerInteractor.dismissDestination
- .map { prevScene ->
- mapOf(
- Back to UserActionResult(prevScene),
- Swipe.Down to UserActionResult(prevScene),
- )
- }
- .collect { actions -> setActions(actions) }
+ setActions(
+ mapOf(
+ Back to UserActionResult.HideOverlay(Overlays.Bouncer),
+ Swipe.Down to UserActionResult.HideOverlay(Overlays.Bouncer),
+ )
+ )
}
@AssistedFactory
diff --git a/packages/SystemUI/src/com/android/systemui/common/shared/colors/SurfaceEffectColors.kt b/packages/SystemUI/src/com/android/systemui/common/shared/colors/SurfaceEffectColors.kt
index 7c2fc7f..5e8c21f9 100644
--- a/packages/SystemUI/src/com/android/systemui/common/shared/colors/SurfaceEffectColors.kt
+++ b/packages/SystemUI/src/com/android/systemui/common/shared/colors/SurfaceEffectColors.kt
@@ -20,12 +20,19 @@
object SurfaceEffectColors {
@JvmStatic
- fun Resources.surfaceEffect0(): Int {
- return getColor(com.android.internal.R.color.surface_effect_0)
+ fun surfaceEffect0(r: Resources): Int {
+ return r.getColor(com.android.internal.R.color.surface_effect_0)
}
-
@JvmStatic
- fun Resources.surfaceEffect1(): Int {
- return getColor(com.android.internal.R.color.surface_effect_1)
+ fun surfaceEffect1(r: Resources): Int {
+ return r.getColor(com.android.internal.R.color.surface_effect_1)
+ }
+ @JvmStatic
+ fun surfaceEffect2(r: Resources): Int {
+ return r.getColor(com.android.internal.R.color.surface_effect_2)
+ }
+ @JvmStatic
+ fun surfaceEffect3(r: Resources): Int {
+ return r.getColor(com.android.internal.R.color.surface_effect_3)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
index 59beb1e..c8280d7 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
@@ -113,7 +113,7 @@
val canShowEditMode =
allOf(
keyguardTransitionInteractor.isFinishedIn(
- scene = Scenes.Gone,
+ content = Scenes.Gone,
stateWithoutSceneContainer = KeyguardState.GONE,
),
communalInteractor.editModeOpen,
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModel.kt
index be1d005..a1ff552 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModel.kt
@@ -20,6 +20,7 @@
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -55,9 +56,11 @@
shadeModeInteractor.shadeMode,
) { isDeviceUnlocked, shadeMode ->
buildList {
- val bouncerOrGone =
- if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer
- add(Swipe.Up to bouncerOrGone)
+ if (isDeviceUnlocked) {
+ add(Swipe.Up to Scenes.Gone)
+ } else {
+ add(Swipe.Up to Overlays.Bouncer)
+ }
add(Swipe.End to Scenes.Lockscreen)
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
index 6473b1c..d7859c9 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
@@ -168,7 +168,7 @@
override val isCommunalContentFlowFrozen: Flow<Boolean> =
allOf(
keyguardTransitionInteractor.isFinishedIn(
- scene = Scenes.Communal,
+ content = Scenes.Communal,
stateWithoutSceneContainer = KeyguardState.GLANCEABLE_HUB,
),
keyguardInteractor.isKeyguardOccluded,
@@ -204,7 +204,7 @@
override val isFocusable: Flow<Boolean> =
combine(
keyguardTransitionInteractor.isFinishedIn(
- scene = Scenes.Communal,
+ content = Scenes.Communal,
stateWithoutSceneContainer = KeyguardState.GLANCEABLE_HUB,
),
communalInteractor.isIdleOnCommunal,
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt
index 514242b4..69378b4 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt
@@ -20,6 +20,7 @@
import android.content.Context
import android.hardware.face.FaceManager
import android.os.CancellationSignal
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.internal.logging.InstanceId
import com.android.internal.logging.UiEventLogger
import com.android.systemui.Dumpable
@@ -59,8 +60,8 @@
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
-import com.android.systemui.scene.shared.model.Scenes.Bouncer
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.user.data.model.SelectionStatus
import com.android.systemui.user.data.repository.UserRepository
@@ -87,7 +88,6 @@
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.stateIn
-import com.android.app.tracing.coroutines.launchTraced as launch
import kotlinx.coroutines.withContext
/**
@@ -138,7 +138,7 @@
private data class AuthenticationRequest(
val uiEvent: FaceAuthUiEvent,
- val fallbackToDetection: Boolean
+ val fallbackToDetection: Boolean,
)
@SysUISingleton
@@ -248,11 +248,11 @@
Pair(isLockedOut.isFalse(), "isNotInLockOutState"),
Pair(
keyguardRepository.isKeyguardDismissible.isFalse(),
- "keyguardIsNotDismissible"
+ "keyguardIsNotDismissible",
),
Pair(
biometricSettingsRepository.isFaceAuthCurrentlyAllowed,
- "isFaceAuthCurrentlyAllowed"
+ "isFaceAuthCurrentlyAllowed",
),
Pair(isAuthenticated.isFalse(), "faceNotAuthenticated"),
)
@@ -273,15 +273,15 @@
biometricSettingsRepository.isFaceAuthCurrentlyAllowed
.isFalse()
.or(keyguardRepository.isKeyguardDismissible),
- "faceAuthIsNotCurrentlyAllowedOrCurrentUserIsTrusted"
+ "faceAuthIsNotCurrentlyAllowedOrCurrentUserIsTrusted",
),
// We don't want to run face detect if fingerprint can be used to unlock the
// device
// but it's not possible to authenticate with FP from the bouncer (UDFPS)
Pair(
and(isUdfps(), deviceEntryFingerprintAuthRepository.isRunning).isFalse(),
- "udfpsAuthIsNotPossibleAnymore"
- )
+ "udfpsAuthIsNotPossibleAnymore",
+ ),
)
.andAllFlows("canFaceDetectRun", faceDetectLog)
.flowOn(backgroundDispatcher)
@@ -318,7 +318,7 @@
powerInteractor.isAsleep,
combine(
keyguardTransitionInteractor.isFinishedIn(
- scene = Scenes.Gone,
+ content = Scenes.Gone,
stateWithoutSceneContainer = KeyguardState.GONE,
),
keyguardInteractor.statusBarState,
@@ -350,7 +350,7 @@
faceAuthLogger.clearingPendingAuthRequest(
loggingContext,
pendingAuthenticateRequest.value?.uiEvent,
- pendingAuthenticateRequest.value?.fallbackToDetection
+ pendingAuthenticateRequest.value?.fallbackToDetection,
)
pendingAuthenticateRequest.value = null
}
@@ -387,7 +387,7 @@
),
Pair(
biometricSettingsRepository.isFaceAuthEnrolledAndEnabled,
- "isFaceAuthEnrolledAndEnabled"
+ "isFaceAuthEnrolledAndEnabled",
),
Pair(
if (SceneContainerFlag.isEnabled) {
@@ -399,13 +399,13 @@
} else {
keyguardRepository.isKeyguardGoingAway.isFalse()
},
- "keyguardNotGoingAway"
+ "keyguardNotGoingAway",
),
Pair(
keyguardTransitionInteractor
.isInTransitionWhere(toStatePredicate = KeyguardState::deviceIsAsleepInState)
.isFalse(),
- "deviceNotTransitioningToAsleepState"
+ "deviceNotTransitioningToAsleepState",
),
Pair(
keyguardInteractor.isSecureCameraActive
@@ -413,29 +413,31 @@
.or(
alternateBouncerInteractor.isVisible.or(
if (SceneContainerFlag.isEnabled) {
- sceneInteractor.get().transitionState.map { it.isIdle(Bouncer) }
+ sceneInteractor.get().transitionState.map {
+ it.isIdle(overlay = Overlays.Bouncer)
+ }
} else {
keyguardInteractor.primaryBouncerShowing
}
)
),
- "secureCameraNotActiveOrAnyBouncerIsShowing"
+ "secureCameraNotActiveOrAnyBouncerIsShowing",
),
Pair(
biometricSettingsRepository.isFaceAuthSupportedInCurrentPosture,
- "isFaceAuthSupportedInCurrentPosture"
+ "isFaceAuthSupportedInCurrentPosture",
),
Pair(
biometricSettingsRepository.isCurrentUserInLockdown.isFalse(),
- "userHasNotLockedDownDevice"
+ "userHasNotLockedDownDevice",
),
Pair(keyguardRepository.isKeyguardShowing, "isKeyguardShowing"),
Pair(
userRepository.selectedUser
.map { it.selectionStatus == SelectionStatus.SELECTION_IN_PROGRESS }
.isFalse(),
- "userSwitchingInProgress"
- )
+ "userSwitchingInProgress",
+ ),
)
}
@@ -486,7 +488,7 @@
errorCode,
errString,
errorStatus.isLockoutError(),
- errorStatus.isCancellationError()
+ errorStatus.isCancellationError(),
)
onFaceAuthRequestCompleted()
}
@@ -524,7 +526,7 @@
faceAuthLogger.attemptingRetryAfterHardwareError(retryCount)
requestAuthenticate(
FaceAuthUiEvent.FACE_AUTH_TRIGGERED_RETRY_AFTER_HW_UNAVAILABLE,
- fallbackToDetection = false
+ fallbackToDetection = false,
)
}
}
@@ -551,7 +553,7 @@
if (pendingAuthenticateRequest.value != null) {
faceAuthLogger.ignoredFaceAuthTrigger(
pendingAuthenticateRequest.value?.uiEvent,
- "Previously queued trigger skipped due to new request"
+ "Previously queued trigger skipped due to new request",
)
}
faceAuthLogger.queueingRequest(uiEvent, fallbackToDetection)
@@ -574,7 +576,7 @@
pending?.uiEvent,
canRunAuth,
canRunDetect,
- cancelInProgress
+ cancelInProgress,
)
return@combine null
} else {
@@ -613,7 +615,7 @@
0,
null,
keyguardSessionId,
- uiEvent.extraInfo
+ uiEvent.extraInfo,
)
faceAuthLogger.authenticating(uiEvent)
faceManager?.authenticate(
@@ -624,28 +626,28 @@
SysUiFaceAuthenticateOptions(
currentUserId,
uiEvent,
- wakeReason = uiEvent.extraInfo
+ wakeReason = uiEvent.extraInfo,
)
- .toFaceAuthenticateOptions()
+ .toFaceAuthenticateOptions(),
)
}
} else if (canRunDetection.value) {
if (fallbackToDetection) {
faceAuthLogger.ignoredFaceAuthTrigger(
uiEvent,
- "face auth gating check is false, falling back to detection."
+ "face auth gating check is false, falling back to detection.",
)
detect(uiEvent)
} else {
faceAuthLogger.ignoredFaceAuthTrigger(
uiEvent = uiEvent,
- "face auth gating check is false and fallback to detection is not requested"
+ "face auth gating check is false and fallback to detection is not requested",
)
}
} else {
faceAuthLogger.ignoredFaceAuthTrigger(
uiEvent,
- "face auth & detect gating check is false"
+ "face auth & detect gating check is false",
)
}
}
@@ -669,7 +671,7 @@
it,
detectionCallback,
SysUiFaceAuthenticateOptions(currentUserId, uiEvent, uiEvent.extraInfo)
- .toFaceAuthenticateOptions()
+ .toFaceAuthenticateOptions(),
)
}
}
@@ -695,7 +697,7 @@
_isAuthRunning.value,
_isLockedOut.value,
cancellationInProgress.value,
- pendingAuthenticateRequest.value?.uiEvent
+ pendingAuthenticateRequest.value?.uiEvent,
)
_authenticationStatus.value = ErrorFaceAuthenticationStatus.cancelNotReceivedError()
onFaceAuthRequestCompleted()
@@ -759,7 +761,7 @@
private fun List<Pair<Flow<Boolean>, String>>.andAllFlows(
combinedLoggingInfo: String,
- tableLogBuffer: TableLogBuffer
+ tableLogBuffer: TableLogBuffer,
): Flow<Boolean> {
return combine(this.map { it.first }) {
val combinedValue =
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
index 5fc924b1..58310e9 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
@@ -30,6 +30,7 @@
import com.android.systemui.scene.domain.SceneFrameworkTableLog
import com.android.systemui.scene.domain.interactor.SceneBackInteractor
import com.android.systemui.scene.domain.interactor.SceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.util.kotlin.pairwise
import com.android.systemui.utils.coroutines.flow.mapLatestConflated
@@ -238,8 +239,8 @@
if (alternateBouncerInteractor.canShowAlternateBouncer.value) {
alternateBouncerInteractor.forceShow()
} else {
- sceneInteractor.changeScene(
- toScene = Scenes.Bouncer,
+ sceneInteractor.showOverlay(
+ overlay = Overlays.Bouncer,
loggingReason = "request to unlock device while authentication required",
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractor.kt
index eb82c7d..5de2ed2 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractor.kt
@@ -33,6 +33,7 @@
import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_DISMISS_BOUNCER
import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_NONE
@@ -84,14 +85,14 @@
sceneInteractor: SceneInteractor,
dumpManager: DumpManager,
) : FlowDumperImpl(dumpManager) {
- private val isShowingBouncerScene: Flow<Boolean> =
+ private val isShowingBouncerOverlay: Flow<Boolean> =
sceneInteractor.transitionState
.map { transitionState ->
- transitionState.isIdle(Scenes.Bouncer) ||
- transitionState.isTransitioning(null, Scenes.Bouncer)
+ transitionState.isIdle(overlay = Overlays.Bouncer) ||
+ transitionState.isTransitioning(null, Overlays.Bouncer)
}
.distinctUntilChanged()
- .dumpWhileCollecting("isShowingBouncerScene")
+ .dumpWhileCollecting("isShowingBouncerOverlay")
private val isUnlockedWithStrongFaceUnlock =
deviceEntryFaceAuthInteractor.authenticationStatus
@@ -115,14 +116,14 @@
isUnlockedWithStrongFaceUnlock,
sceneContainerOcclusionInteractor.isOccludingActivityShown,
sceneInteractor.currentScene,
- isShowingBouncerScene,
+ isShowingBouncerOverlay,
) {
isAlternateBouncerVisible,
isBypassAvailable,
isFaceStrongBiometric,
isOccluded,
currentScene,
- isShowingBouncerScene ->
+ isShowingBouncerOverlay ->
val isUnlockingAllowed =
keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(isFaceStrongBiometric)
val bypass = isBypassAvailable || authController.isUdfpsFingerDown()
@@ -140,7 +141,7 @@
isUnlockingAllowed && isOccluded -> MODE_UNLOCK_COLLAPSING
- (isShowingBouncerScene || isAlternateBouncerVisible) && isUnlockingAllowed ->
+ (isShowingBouncerOverlay || isAlternateBouncerVisible) && isUnlockingAllowed ->
MODE_DISMISS_BOUNCER
isUnlockingAllowed && bypass -> MODE_UNLOCK_COLLAPSING
@@ -158,14 +159,16 @@
alternateBouncerInteractor.isVisible,
authenticationInteractor.authenticationMethod,
sceneInteractor.currentScene,
+ sceneInteractor.currentOverlays,
isUnlockedWithStrongFingerprintUnlock,
- isShowingBouncerScene,
+ isShowingBouncerOverlay,
) {
alternateBouncerVisible,
authenticationMethod,
currentScene,
+ currentOverlays,
isFingerprintStrongBiometric,
- isShowingBouncerScene ->
+ isShowingBouncerOverlay ->
val unlockingAllowed =
keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(
isFingerprintStrongBiometric
@@ -185,11 +188,12 @@
unlockingAllowed && currentScene == Scenes.Dream ->
MODE_WAKE_AND_UNLOCK_FROM_DREAM
- isShowingBouncerScene && unlockingAllowed -> MODE_DISMISS_BOUNCER
+ isShowingBouncerOverlay && unlockingAllowed -> MODE_DISMISS_BOUNCER
unlockingAllowed -> MODE_UNLOCK_COLLAPSING
- currentScene != Scenes.Bouncer && !alternateBouncerVisible -> MODE_SHOW_BOUNCER
+ Overlays.Bouncer !in currentOverlays && !alternateBouncerVisible ->
+ MODE_SHOW_BOUNCER
else -> MODE_NONE
}
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt
index 4b90e1d..0d01054 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt
@@ -50,6 +50,7 @@
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.user.data.model.SelectionStatus
import com.android.systemui.user.data.repository.UserRepository
@@ -237,7 +238,7 @@
private val isBouncerVisible: Flow<Boolean> by lazy {
if (SceneContainerFlag.isEnabled) {
- sceneInteractor.get().transitionState.map { it.isIdle(Scenes.Bouncer) }
+ sceneInteractor.get().transitionState.map { it.isIdle(Overlays.Bouncer) }
} else {
primaryBouncerInteractor.get().isShowing
}
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java
index 3dd2561..599c945 100644
--- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java
@@ -51,7 +51,7 @@
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.keyguard.shared.model.KeyguardState;
import com.android.systemui.res.R;
-import com.android.systemui.scene.shared.model.Scenes;
+import com.android.systemui.scene.shared.model.Overlays;
import com.android.systemui.shade.ShadeExpansionChangeEvent;
import com.android.systemui.shade.domain.interactor.ShadeInteractor;
import com.android.systemui.statusbar.BlurUtils;
@@ -281,7 +281,7 @@
mView,
FlowKt.distinctUntilChanged(combineFlows(
mKeyguardTransitionInteractor.isFinishedIn(
- Scenes.Bouncer, KeyguardState.PRIMARY_BOUNCER),
+ Overlays.Bouncer, KeyguardState.PRIMARY_BOUNCER),
mKeyguardTransitionInteractor.isFinishedIn(
KeyguardState.ALTERNATE_BOUNCER),
mShadeInteractor.isAnyExpanded(),
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayService.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayService.java
index 3132ec2..a2bcb98 100644
--- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayService.java
+++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayService.java
@@ -47,7 +47,7 @@
import androidx.lifecycle.ViewModelStore;
import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
-import com.android.compose.animation.scene.SceneKey;
+import com.android.compose.animation.scene.OverlayKey;
import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.PhoneWindow;
@@ -72,6 +72,7 @@
import com.android.systemui.navigationbar.gestural.domain.TaskMatcher;
import com.android.systemui.scene.domain.interactor.SceneInteractor;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
+import com.android.systemui.scene.shared.model.Overlays;
import com.android.systemui.scene.shared.model.Scenes;
import com.android.systemui.shade.ShadeExpansionChangeEvent;
import com.android.systemui.touch.TouchInsetManager;
@@ -82,6 +83,7 @@
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.CancellationException;
import java.util.function.Consumer;
@@ -221,10 +223,11 @@
}
};
- private final Consumer<SceneKey> mCurrentSceneConsumer = new Consumer<>() {
+ private final Consumer<Set<OverlayKey>> mCurrentOverlaysConsumer = new Consumer<>() {
@Override
- public void accept(SceneKey currentScene) {
- mExecutor.execute(() -> updateBouncerShowingLocked(currentScene == Scenes.Bouncer));
+ public void accept(Set<OverlayKey> currentOverlays) {
+ mExecutor.execute(() ->
+ updateBouncerShowingLocked(currentOverlays.contains(Overlays.Bouncer)));
}
};
@@ -430,8 +433,8 @@
mFlows.add(collectFlow(getLifecycle(), communalInteractor.isCommunalVisible(),
mCommunalVisibleConsumer));
if (SceneContainerFlag.isEnabled()) {
- mFlows.add(collectFlow(getLifecycle(), sceneInteractor.getCurrentScene(),
- mCurrentSceneConsumer));
+ mFlows.add(collectFlow(getLifecycle(), sceneInteractor.getCurrentOverlays(),
+ mCurrentOverlaysConsumer));
} else {
mFlows.add(collectFlow(getLifecycle(), keyguardInteractor.primaryBouncerShowing,
mBouncerShowingConsumer));
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt
index 7437d3e..de86996 100644
--- a/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt
@@ -20,6 +20,7 @@
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -55,9 +56,11 @@
shadeModeInteractor.shadeMode,
) { isDeviceUnlocked, shadeMode ->
buildList {
- val bouncerOrGone =
- if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer
- add(Swipe.Up to bouncerOrGone)
+ if (isDeviceUnlocked) {
+ add(Swipe.Up to Scenes.Gone)
+ } else {
+ add(Swipe.Up to Overlays.Bouncer)
+ }
addAll(
when (shadeMode) {
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt
index 7d2492a..bea79fd 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt
@@ -21,8 +21,16 @@
interface TouchpadTutorialScreensProvider {
@Composable
- fun BackGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit, isAutoProceed: Boolean)
+ fun BackGesture(
+ onDoneButtonClicked: () -> Unit,
+ onBack: () -> Unit,
+ onAutoProceed: (suspend () -> Unit)?,
+ )
@Composable
- fun HomeGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit, isAutoProceed: Boolean)
+ fun HomeGesture(
+ onDoneButtonClicked: () -> Unit,
+ onBack: () -> Unit,
+ onAutoProceed: (suspend () -> Unit)?,
+ )
}
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt
index ee875c4..8e4e4c0 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt
@@ -108,6 +108,7 @@
actionState: TutorialActionState,
onDoneButtonClicked: () -> Unit,
config: TutorialScreenConfig,
+ onAutoProceed: (suspend () -> Unit)? = null,
) {
Column(
verticalArrangement = Arrangement.Center,
@@ -137,9 +138,12 @@
onDoneButtonClicked = onDoneButtonClicked,
modifier = Modifier.padding(horizontal = 60.dp).graphicsLayer { alpha = buttonAlpha },
enabled = actionState is Finished,
- isNext = config.hasNextButton,
+ isNext = onAutoProceed != null,
)
}
+ if (actionState is Finished) {
+ LaunchedEffect(Unit) { onAutoProceed?.invoke() }
+ }
}
@Composable
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt
index 65adc14..eda23a5 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt
@@ -28,7 +28,6 @@
val colors: Colors,
val strings: Strings,
val animations: Animations,
- val hasNextButton: Boolean = false,
) {
data class Colors(
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt
index 086705f..8cc1865 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt
@@ -147,7 +147,7 @@
.BackGesture(
onDoneButtonClicked = vm::onDoneButtonClicked,
onBack = vm::onBack,
- isAutoProceed = isAutoProceed,
+ onAutoProceed = if (isAutoProceed) vm::onAutoProceed else null,
)
HOME_GESTURE ->
touchpadScreens
@@ -155,7 +155,7 @@
.HomeGesture(
onDoneButtonClicked = vm::onDoneButtonClicked,
onBack = vm::onBack,
- isAutoProceed = isScopeAll,
+ onAutoProceed = if (isScopeAll) vm::onAutoProceed else null,
)
ACTION_KEY ->
ActionKeyTutorialScreen(
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModel.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModel.kt
index eeb4b69..90e3af4 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModel.kt
@@ -42,6 +42,8 @@
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import java.util.Optional
+import kotlin.time.Duration.Companion.seconds
+import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -49,6 +51,7 @@
import kotlinx.coroutines.flow.filterNot
import kotlinx.coroutines.flow.runningFold
+@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
class KeyboardTouchpadTutorialViewModel(
private val gesturesInteractor: Optional<TouchpadGesturesInteractor>,
private val keyboardTouchpadConnectionInteractor: KeyboardTouchpadConnectionInteractor,
@@ -149,7 +152,16 @@
clearDeviceStateForScreen(_screen.value)
}
+ suspend fun onAutoProceed() {
+ delay(AUTO_PROCEED_DELAY)
+ progressToNextScreen()
+ }
+
fun onDoneButtonClicked() {
+ progressToNextScreen()
+ }
+
+ private fun progressToNextScreen() {
var nextScreen = screenSequence.nextScreen(_screen.value)
while (nextScreen != null) {
if (requiredHardwarePresent(nextScreen)) {
@@ -250,6 +262,10 @@
private object SingleScreenOnly : ScreenSequence {
override fun nextScreen(current: Screen): Screen? = null
}
+
+ companion object {
+ private val AUTO_PROCEED_DELAY = 3.seconds
+ }
}
enum class RequiredHardware {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ResourceTrimmer.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ResourceTrimmer.kt
index b3027ed..b8ee20b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ResourceTrimmer.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ResourceTrimmer.kt
@@ -19,6 +19,7 @@
import android.annotation.WorkerThread
import android.content.ComponentCallbacks2
import android.util.Log
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
@@ -31,7 +32,6 @@
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.filter
-import com.android.app.tracing.coroutines.launchTraced as launch
/**
* Releases cached resources on allocated by keyguard.
@@ -54,7 +54,7 @@
Log.d(LOG_TAG, "Resource trimmer registered.")
applicationScope.launch(context = bgDispatcher) {
keyguardTransitionInteractor
- .isFinishedIn(scene = Scenes.Gone, stateWithoutSceneContainer = GONE)
+ .isFinishedIn(content = Scenes.Gone, stateWithoutSceneContainer = GONE)
.filter { isOnGone -> isOnGone }
.collect { onKeyguardGone() }
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
index 97ad2d7..6b1248b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
@@ -247,14 +247,13 @@
@Provides
@SysUISingleton
static BlurConfig provideBlurConfig(@Main Resources resources) {
- int minBlurRadius = resources.getDimensionPixelSize(R.dimen.min_window_blur_radius);
int maxBlurRadius =
Flags.notificationShadeBlur() || Flags.bouncerUiRevamp()
|| Flags.glanceableHubBlurredBackground()
? resources.getDimensionPixelSize(R.dimen.max_shade_window_blur_radius)
: resources.getDimensionPixelSize(R.dimen.max_window_blur_radius);
- return new BlurConfig(minBlurRadius, maxBlurRadius);
+ return new BlurConfig(0.0f, maxBlurRadius);
}
/** */
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractor.kt
index 6367b5c..65ea673 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractor.kt
@@ -22,12 +22,11 @@
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.shade.ShadeDisplayAware
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
@@ -59,9 +58,9 @@
private val isSideFpsIndicatorOnPrimaryBouncerEnabled: Boolean
get() = context.resources.getBoolean(R.bool.config_show_sidefps_hint_on_bouncer)
- private val isBouncerSceneActive: Flow<Boolean> =
+ private val isBouncerOverlayActive: Flow<Boolean> =
if (SceneContainerFlag.isEnabled) {
- sceneInteractor.currentScene.map { it == Scenes.Bouncer }.distinctUntilChanged()
+ sceneInteractor.currentOverlays.map { Overlays.Bouncer in it }.distinctUntilChanged()
} else {
flowOf(false)
}
@@ -73,7 +72,7 @@
primaryBouncerInteractor.startingToHide,
primaryBouncerInteractor.startingDisappearAnimation.filterNotNull(),
// Bouncer scene visibility changes.
- isBouncerSceneActive,
+ isBouncerOverlayActive,
deviceEntryFingerprintAuthRepository.shouldUpdateIndicatorVisibility.filter { it },
)
.map {
@@ -105,7 +104,7 @@
private fun isBouncerActive(): Boolean {
if (SceneContainerFlag.isEnabled) {
- return sceneInteractor.currentScene.value == Scenes.Bouncer
+ return Overlays.Bouncer in sceneInteractor.currentOverlays.value
}
return primaryBouncerInteractor.isBouncerShowing() &&
!primaryBouncerInteractor.isAnimatingAway()
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBypassInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBypassInteractor.kt
index d793064..762403d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBypassInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBypassInteractor.kt
@@ -21,6 +21,7 @@
import com.android.systemui.dump.DumpManager
import com.android.systemui.keyguard.data.repository.KeyguardBypassRepository
import com.android.systemui.scene.domain.interactor.SceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.util.kotlin.FlowDumperImpl
@@ -61,7 +62,9 @@
.flatMapLatest { isBypassAvailable ->
if (isBypassAvailable) {
combine(
- sceneInteractor.currentScene.map { scene -> scene == Scenes.Bouncer },
+ sceneInteractor.currentOverlays.map { overlays ->
+ Overlays.Bouncer in overlays
+ },
alternateBouncerInteractor.isVisible,
sceneInteractor.currentScene.map { scene -> scene == Scenes.Lockscreen },
keyguardQuickAffordanceInteractor.launchingAffordance,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractor.kt
index d8c707f..4c238f4 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractor.kt
@@ -101,7 +101,7 @@
.map {}
} else {
transitionInteractor
- .isFinishedIn(scene = Scenes.Gone, stateWithoutSceneContainer = GONE)
+ .isFinishedIn(content = Scenes.Gone, stateWithoutSceneContainer = GONE)
.filter { it }
.map {}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
index f84d29f..7977000 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
@@ -248,7 +248,7 @@
val topClippingBounds: Flow<Int?> by lazy {
combineTransform(
keyguardTransitionInteractor
- .transitionValue(scene = Scenes.Gone, stateWithoutSceneContainer = GONE)
+ .transitionValue(content = Scenes.Gone, stateWithoutSceneContainer = GONE)
.map { it == 1f }
.onStart { emit(false) }
.distinctUntilChanged(),
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractor.kt
index 278a98f..f2d7d91 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractor.kt
@@ -97,7 +97,7 @@
powerInteractor.detailedWakefulness
.sample(
transitionInteractor.isFinishedIn(
- scene = Scenes.Gone,
+ content = Scenes.Gone,
stateWithoutSceneContainer = KeyguardState.GONE,
),
::Pair,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractor.kt
index b9784f1..8e0cb84 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractor.kt
@@ -63,7 +63,7 @@
edgeWithoutSceneContainer = Edge.create(to = KeyguardState.GONE),
),
transitionInteractor.isFinishedIn(
- scene = Scenes.Gone,
+ content = Scenes.Gone,
stateWithoutSceneContainer = KeyguardState.GONE,
),
notificationLaunchInteractor.isLaunchAnimationRunning,
@@ -74,18 +74,14 @@
// If the notification launch animation is running, leave the alpha at 0f.
// The ActivityLaunchAnimator will morph it from the notification at the
// appropriate time.
- return@combine KeyguardSurfaceBehindModel(
- alpha = 0f,
- )
+ return@combine KeyguardSurfaceBehindModel(alpha = 0f)
} else if (
inWindowLauncherUnlockAnimationInteractor.get().isLauncherUnderneath()
) {
// The Launcher icons have their own translation/alpha animations during the
// in-window animation. We'll just make the surface visible and let Launcher
// do its thing.
- return@combine KeyguardSurfaceBehindModel(
- alpha = 1f,
- )
+ return@combine KeyguardSurfaceBehindModel(alpha = 1f)
} else {
// Otherwise, animate a surface in via alpha/translation, and apply the
// swipe velocity (if available) to the translation spring.
@@ -113,10 +109,10 @@
notificationLaunchInteractor.isLaunchAnimationRunning
.sample(
transitionInteractor.isFinishedIn(
- scene = Scenes.Gone,
+ content = Scenes.Gone,
stateWithoutSceneContainer = KeyguardState.GONE,
),
- ::Pair
+ ::Pair,
)
.map { (animationRunning, isOnGone) -> animationRunning && !isOnGone }
.onStart { emit(false) }
@@ -126,10 +122,9 @@
* means we're going to animate the surface, even if animators aren't yet running).
*/
val isAnimatingSurface =
- combine(
- repository.isAnimatingSurface,
- isNotificationLaunchAnimationRunningOnKeyguard,
- ) { animatingSurface, animatingLaunch ->
+ combine(repository.isAnimatingSurface, isNotificationLaunchAnimationRunningOnKeyguard) {
+ animatingSurface,
+ animatingLaunch ->
animatingSurface || animatingLaunch
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
index 3b4a148..af58d10 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
@@ -23,6 +23,7 @@
import com.android.app.tracing.coroutines.flow.traceAs
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.app.tracing.coroutines.traceCoroutine
+import com.android.compose.animation.scene.ContentKey
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.compose.animation.scene.SceneKey
import com.android.systemui.Flags.keyguardTransitionForceFinishOnScreenOff
@@ -236,28 +237,28 @@
if (!SceneContainerFlag.isEnabled) {
return flow
}
- if (edge.isSceneWildcardEdge()) {
+ if (edge.isContentWildcardEdge()) {
return simulateTransitionStepsForSceneTransitions(edge)
}
return flow.filterTraced("stl-filter") { step ->
- val fromScene =
+ val fromContent =
when (edge) {
- is Edge.StateToState -> edge.from?.mapToSceneContainerScene()
- is Edge.StateToScene -> edge.from?.mapToSceneContainerScene()
- is Edge.SceneToState -> edge.from
+ is Edge.StateToState -> edge.from?.mapToSceneContainerContent()
+ is Edge.StateToContent -> edge.from?.mapToSceneContainerContent()
+ is Edge.ContentToState -> edge.from
}
- val toScene =
+ val toContent =
when (edge) {
- is Edge.StateToState -> edge.to?.mapToSceneContainerScene()
- is Edge.StateToScene -> edge.to
- is Edge.SceneToState -> edge.to?.mapToSceneContainerScene()
+ is Edge.StateToState -> edge.to?.mapToSceneContainerContent()
+ is Edge.StateToContent -> edge.to
+ is Edge.ContentToState -> edge.to?.mapToSceneContainerContent()
}
val isTransitioningBetweenLockscreenStates =
- fromScene.isLockscreenOrNull() && toScene.isLockscreenOrNull()
+ fromContent.isLockscreenOrNull() && toContent.isLockscreenOrNull()
val isTransitioningBetweenDesiredScenes =
- sceneInteractor.transitionState.value.isTransitioning(fromScene, toScene)
+ sceneInteractor.transitionState.value.isTransitioning(fromContent, toContent)
// When in STL A -> B settles in A we can't do the same in KTF as KTF requires us to
// start B -> A to get back to A. [LockscreenSceneTransitionInteractor] will emit these
@@ -266,8 +267,8 @@
// this condition to not filter out the STARTED and FINISHED step of the "artificially"
// reversed B -> A transition.
val belongsToInstantReversedTransition =
- sceneInteractor.transitionState.value.isIdle(toScene) &&
- sceneTransitionPair.value.previousValue.isTransitioning(toScene, fromScene)
+ sceneInteractor.topmostContent.value == toContent &&
+ sceneTransitionPair.value.previousValue.isTransitioning(toContent, fromContent)
// We can't compare the terminal step with the current sceneTransition because
// a) STL has no guarantee that it will settle in Idle() when finished/canceled
@@ -276,7 +277,7 @@
val terminalStepBelongsToPreviousTransition =
(step.transitionState == TransitionState.FINISHED ||
step.transitionState == TransitionState.CANCELED) &&
- sceneTransitionPair.value.previousValue.isTransitioning(fromScene, toScene)
+ sceneTransitionPair.value.previousValue.isTransitioning(fromContent, toContent)
return@filterTraced isTransitioningBetweenLockscreenStates ||
isTransitioningBetweenDesiredScenes ||
@@ -285,7 +286,7 @@
}
}
- private fun SceneKey?.isLockscreenOrNull() = this == Scenes.Lockscreen || this == null
+ private fun ContentKey?.isLockscreenOrNull() = this == Scenes.Lockscreen || this == null
/**
* This function will return a flow that simulates TransitionSteps based on STL movements
@@ -317,8 +318,8 @@
when (edge) {
is Edge.StateToState ->
throw IllegalStateException("Should not be reachable.")
- is Edge.SceneToState -> it.isTransitioning(from = edge.from)
- is Edge.StateToScene -> it.isTransitioning(to = edge.to)
+ is Edge.ContentToState -> it.isTransitioning(from = edge.from)
+ is Edge.StateToContent -> it.isTransitioning(to = edge.to)
}
if (!isMatchingTransition) {
return@flatMapLatestWithFinished flowOf()
@@ -361,41 +362,43 @@
*/
private fun <T> Flow<T>.flatMapLatestWithFinished(
transform: suspend (T) -> Flow<TransitionStep>
- ): Flow<TransitionStep> = channelFlow {
- var job: Job? = null
- var startedEmitted = false
+ ): Flow<TransitionStep> =
+ channelFlow {
+ var job: Job? = null
+ var startedEmitted = false
- coroutineScope {
- collect { value ->
- traceCoroutine("cancelAndJoin") { job?.cancelAndJoin() }
+ coroutineScope {
+ collect { value ->
+ traceCoroutine("cancelAndJoin") { job?.cancelAndJoin() }
- job = launch("inner") {
- val innerFlow = transform(value)
- try {
- innerFlow.collect { step ->
- if (step.transitionState == TransitionState.STARTED) {
- startedEmitted = true
+ job =
+ launch("inner") {
+ val innerFlow = transform(value)
+ try {
+ innerFlow.collect { step ->
+ if (step.transitionState == TransitionState.STARTED) {
+ startedEmitted = true
+ }
+ traceCoroutine("send($step)") { send(step) }
+ }
+ } finally {
+ if (startedEmitted) {
+ val step =
+ TransitionStep(
+ from = UNDEFINED,
+ to = UNDEFINED,
+ value = 1f,
+ transitionState = TransitionState.FINISHED,
+ )
+ traceCoroutine("send($step)") { send(step) }
+ startedEmitted = false
+ }
+ }
}
- traceCoroutine("send($step)") { send(step) }
- }
- } finally {
- if (startedEmitted) {
- val step =
- TransitionStep(
- from = UNDEFINED,
- to = UNDEFINED,
- value = 1f,
- transitionState = TransitionState.FINISHED,
- )
- traceCoroutine("send($step)") { send(step) }
- startedEmitted = false
- }
}
}
}
- }
- }
- .traceAs("flatMapLatestWithFinished")
+ .traceAs("flatMapLatestWithFinished")
/**
* Converts old KTF states to UNDEFINED when [SceneContainerFlag] is enabled.
@@ -414,17 +417,17 @@
from = edge.from?.mapToSceneContainerState(),
to = edge.to?.mapToSceneContainerState(),
)
- is Edge.SceneToState -> Edge.create(UNDEFINED, edge.to)
- is Edge.StateToScene -> Edge.create(edge.from, UNDEFINED)
+ is Edge.ContentToState -> Edge.create(UNDEFINED, edge.to)
+ is Edge.StateToContent -> Edge.create(edge.from, UNDEFINED)
}
}
fun transitionValue(
- scene: SceneKey? = null,
+ content: ContentKey? = null,
stateWithoutSceneContainer: KeyguardState,
): Flow<Float> {
- return if (SceneContainerFlag.isEnabled && scene != null) {
- sceneInteractor.transitionProgress(scene)
+ return if (SceneContainerFlag.isEnabled && content != null) {
+ sceneInteractor.transitionProgress(content)
} else {
transitionValue(stateWithoutSceneContainer)
}
@@ -439,7 +442,7 @@
fun transitionValue(state: KeyguardState): Flow<Float> {
if (SceneContainerFlag.isEnabled && state != state.mapToSceneContainerState()) {
Log.e(TAG, "SceneContainer is enabled but a deprecated state $state is used.")
- return transitionValue(state.mapToSceneContainerScene()!!, state)
+ return transitionValue(state.mapToSceneContainerContent()!!, state)
}
return getTransitionValueFlow(state)
}
@@ -533,13 +536,13 @@
*/
fun isInTransition(edge: Edge, edgeWithoutSceneContainer: Edge? = null): Flow<Boolean> {
return if (SceneContainerFlag.isEnabled) {
- if (edge.isSceneWildcardEdge()) {
+ if (edge.isContentWildcardEdge()) {
sceneInteractor.transitionState.map {
when (edge) {
is Edge.StateToState ->
throw IllegalStateException("Should not be reachable.")
- is Edge.SceneToState -> it.isTransitioning(from = edge.from)
- is Edge.StateToScene -> it.isTransitioning(to = edge.to)
+ is Edge.ContentToState -> it.isTransitioning(from = edge.from)
+ is Edge.StateToContent -> it.isTransitioning(to = edge.to)
}
}
} else {
@@ -581,10 +584,15 @@
return finishedKeyguardState.map { stateMatcher(it) }.distinctUntilChanged()
}
- fun isFinishedIn(scene: SceneKey, stateWithoutSceneContainer: KeyguardState): Flow<Boolean> {
+ fun isFinishedIn(
+ content: ContentKey,
+ stateWithoutSceneContainer: KeyguardState,
+ ): Flow<Boolean> {
return if (SceneContainerFlag.isEnabled) {
- sceneInteractor.transitionState.map {
- it.isIdle(scene) || it.isTransitioning(from = scene)
+ combine(sceneInteractor.topmostContent, sceneInteractor.transitionState) {
+ topmostContent,
+ state ->
+ topmostContent == content || state.isTransitioning(from = content)
}
} else {
isFinishedIn(stateWithoutSceneContainer)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt
index 61cf2cd..68d595e 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt
@@ -61,7 +61,7 @@
private val defaultSurfaceBehindVisibility =
combine(
transitionInteractor.isFinishedIn(
- scene = Scenes.Gone,
+ content = Scenes.Gone,
stateWithoutSceneContainer = KeyguardState.GONE,
),
wakeToGoneInteractor.canWakeDirectlyToGone,
@@ -121,7 +121,7 @@
when {
state.isTransitioning(from = Scenes.Lockscreen, to = Scenes.Gone) ->
isDeviceEnteredDirectly
- state.isTransitioning(from = Scenes.Bouncer, to = Scenes.Gone) ->
+ state.isTransitioning(from = Overlays.Bouncer, to = Scenes.Gone) ->
(state as Transition).progress.map { progress ->
progress >
FromPrimaryBouncerTransitionInteractor
@@ -179,7 +179,7 @@
edgeWithoutSceneContainer = Edge.create(to = KeyguardState.GONE),
),
transitionInteractor.isFinishedIn(
- scene = Scenes.Gone,
+ content = Scenes.Gone,
stateWithoutSceneContainer = KeyguardState.GONE,
),
surfaceBehindInteractor.isAnimatingSurface,
@@ -202,21 +202,23 @@
when (it) {
is Idle -> {
when (it.currentScene) {
- in keyguardScenes -> flowOf(true)
- in nonKeyguardScenes -> flowOf(false)
- in keyguardAgnosticScenes -> isDeviceNotEnteredDirectly
+ in keyguardContent -> flowOf(true)
+ in nonKeyguardContent -> flowOf(false)
+ in keyguardAgnosticContent -> isDeviceNotEnteredDirectly
else ->
throw IllegalStateException("Unknown scene: ${it.currentScene}")
}
}
is Transition -> {
when {
- it.isTransitioningSets(from = keyguardScenes) -> flowOf(true)
- it.isTransitioningSets(from = nonKeyguardScenes) -> flowOf(false)
- it.isTransitioningSets(from = keyguardAgnosticScenes) ->
+ it.isTransitioningSets(from = keyguardContent) -> flowOf(true)
+ it.isTransitioningSets(from = nonKeyguardContent) -> flowOf(false)
+ it.isTransitioningSets(from = keyguardAgnosticContent) ->
isDeviceNotEnteredDirectly
else ->
- throw IllegalStateException("Unknown scene: ${it.fromContent}")
+ throw IllegalStateException(
+ "Unknown content: ${it.fromContent}"
+ )
}
}
}
@@ -330,22 +332,23 @@
companion object {
/**
- * Scenes that are part of the keyguard and are shown when the device is locked or when the
+ * Content that is part of the keyguard and are shown when the device is locked or when the
* keyguard still needs to be dismissed.
*/
- val keyguardScenes = setOf(Scenes.Lockscreen, Scenes.Bouncer, Scenes.Communal, Scenes.Dream)
+ val keyguardContent =
+ setOf(Scenes.Lockscreen, Overlays.Bouncer, Scenes.Communal, Scenes.Dream)
/**
- * Scenes that don't belong in the keyguard family and cannot show when the device is locked
- * or when the keyguard still needs to be dismissed.
+ * Content that doesn't belong in the keyguard family and cannot show when the device is
+ * locked or when the keyguard still needs to be dismissed.
*/
- private val nonKeyguardScenes = setOf(Scenes.Gone)
+ private val nonKeyguardContent = setOf(Scenes.Gone)
/**
- * Scenes that can show regardless of device lock or keyguard dismissal states. Other
+ * Content that can show regardless of device lock or keyguard dismissal states. Other
* sources of state need to be consulted to know whether the device has been entered or not.
*/
- private val keyguardAgnosticScenes =
+ private val keyguardAgnosticContent =
setOf(
Scenes.Shade,
Scenes.QuickSettings,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/Edge.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/Edge.kt
index 1306b26..4cc4d27 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/Edge.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/Edge.kt
@@ -16,7 +16,7 @@
package com.android.systemui.keyguard.shared.model
import android.util.Log
-import com.android.compose.animation.scene.SceneKey
+import com.android.compose.animation.scene.ContentKey
import com.android.systemui.keyguard.shared.model.KeyguardState.UNDEFINED
import com.android.systemui.scene.shared.flag.SceneContainerFlag
@@ -29,8 +29,8 @@
fun verifyValidKeyguardStates() {
when (this) {
is StateToState -> verifyValidKeyguardStates(from, to)
- is SceneToState -> verifyValidKeyguardStates(null, to)
- is StateToScene -> verifyValidKeyguardStates(from, null)
+ is ContentToState -> verifyValidKeyguardStates(null, to)
+ is StateToContent -> verifyValidKeyguardStates(from, null)
}
}
@@ -66,19 +66,16 @@
}
} else {
if (from == UNDEFINED || to == UNDEFINED) {
- Log.e(
- TAG,
- "UNDEFINED should not be used when scene container is disabled",
- )
+ Log.e(TAG, "UNDEFINED should not be used when scene container is disabled")
}
}
}
- fun isSceneWildcardEdge(): Boolean {
+ fun isContentWildcardEdge(): Boolean {
return when (this) {
is StateToState -> false
- is SceneToState -> to == null
- is StateToScene -> from == null
+ is ContentToState -> to == null
+ is StateToContent -> from == null
}
}
@@ -89,9 +86,9 @@
}
}
- data class StateToScene(val from: KeyguardState? = null, val to: SceneKey) : Edge()
+ data class StateToContent(val from: KeyguardState? = null, val to: ContentKey) : Edge()
- data class SceneToState(val from: SceneKey, val to: KeyguardState? = null) : Edge()
+ data class ContentToState(val from: ContentKey, val to: KeyguardState? = null) : Edge()
companion object {
private const val TAG = "Edge"
@@ -102,11 +99,11 @@
@JvmStatic
@JvmOverloads
- fun create(from: KeyguardState? = null, to: SceneKey) = StateToScene(from, to)
+ fun create(from: KeyguardState? = null, to: ContentKey) = StateToContent(from, to)
@JvmStatic
@JvmOverloads
- fun create(from: SceneKey, to: KeyguardState? = null) = SceneToState(from, to)
+ fun create(from: ContentKey, to: KeyguardState? = null) = ContentToState(from, to)
/**
* This edge is a placeholder for when an edge needs to be passed but there is no edge for
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardState.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardState.kt
index f0e79b8..21bfb5f 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardState.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardState.kt
@@ -16,8 +16,9 @@
package com.android.systemui.keyguard.shared.model
import android.util.Log
-import com.android.compose.animation.scene.SceneKey
+import com.android.compose.animation.scene.ContentKey
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
/** List of all possible states to transition to/from */
@@ -130,7 +131,7 @@
}
}
- fun mapToSceneContainerScene(): SceneKey? {
+ fun mapToSceneContainerContent(): ContentKey? {
return when (this) {
OFF,
DOZING,
@@ -140,7 +141,7 @@
OCCLUDED,
LOCKSCREEN -> Scenes.Lockscreen
GLANCEABLE_HUB -> Scenes.Communal
- PRIMARY_BOUNCER -> Scenes.Bouncer
+ PRIMARY_BOUNCER -> Overlays.Bouncer
GONE -> Scenes.Gone
UNDEFINED -> null
}
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 43cce4b..74d471c 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
@@ -27,7 +27,7 @@
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
import com.android.systemui.scene.shared.flag.SceneContainerFlag
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.ui.composable.transitions.TO_BOUNCER_FADE_FRACTION
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
@@ -49,7 +49,7 @@
animationFlow
.setup(
duration = FromAlternateBouncerTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION,
- edge = Edge.create(from = ALTERNATE_BOUNCER, to = Scenes.Bouncer),
+ edge = Edge.create(from = ALTERNATE_BOUNCER, to = Overlays.Bouncer),
)
.setupWithoutSceneContainer(
edge = Edge.create(from = ALTERNATE_BOUNCER, to = PRIMARY_BOUNCER)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModel.kt
index 8b5e3b9..a22d21a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModel.kt
@@ -26,7 +26,7 @@
import com.android.systemui.keyguard.ui.transitions.BlurConfig
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow
@@ -44,7 +44,7 @@
animationFlow
.setup(
duration = FromAodTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION,
- edge = Edge.create(from = AOD, to = Scenes.Bouncer),
+ edge = Edge.create(from = AOD, to = Overlays.Bouncer),
)
.setupWithoutSceneContainer(edge = Edge.create(from = AOD, to = PRIMARY_BOUNCER))
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 ff96e03..2c712d1 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
@@ -26,7 +26,7 @@
import com.android.systemui.keyguard.ui.transitions.BlurConfig
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow
@@ -45,7 +45,7 @@
animationFlow
.setup(
duration = TO_PRIMARY_BOUNCER_DURATION,
- edge = Edge.create(from = DOZING, to = Scenes.Bouncer),
+ edge = Edge.create(from = DOZING, to = Overlays.Bouncer),
)
.setupWithoutSceneContainer(edge = Edge.create(from = DOZING, to = PRIMARY_BOUNCER))
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
index def87a8..d4676bc 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
@@ -40,6 +40,7 @@
import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING
import com.android.systemui.keyguard.shared.model.TransitionState.STARTED
import com.android.systemui.keyguard.ui.StateToValue
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.shade.ui.viewmodel.NotificationShadeWindowModel
@@ -182,7 +183,7 @@
edgeWithoutSceneContainer = Edge.create(from = LOCKSCREEN, to = GONE),
),
keyguardTransitionInteractor.isInTransition(
- edge = Edge.create(from = Scenes.Bouncer, to = LOCKSCREEN),
+ edge = Edge.create(from = Overlays.Bouncer, to = LOCKSCREEN),
edgeWithoutSceneContainer =
Edge.create(from = PRIMARY_BOUNCER, to = LOCKSCREEN),
),
@@ -226,7 +227,7 @@
.map { it > 1f - offToLockscreenTransitionViewModel.alphaStartAt }
.onStart { emit(false) },
keyguardTransitionInteractor
- .transitionValue(scene = Scenes.Gone, stateWithoutSceneContainer = GONE)
+ .transitionValue(content = Scenes.Gone, stateWithoutSceneContainer = GONE)
.map { it == 1f }
.onStart { emit(false) },
)
@@ -361,7 +362,7 @@
.map { it > 0f }
.onStart { emit(false) },
keyguardTransitionInteractor.isFinishedIn(
- scene = Scenes.Gone,
+ content = Scenes.Gone,
stateWithoutSceneContainer = GONE,
),
deviceEntryInteractor.isBypassEnabled,
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 b96c879..3758afa 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
@@ -27,7 +27,7 @@
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
import com.android.systemui.scene.shared.flag.SceneContainerFlag
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.ui.composable.transitions.TO_BOUNCER_FADE_FRACTION
import javax.inject.Inject
import kotlin.time.Duration.Companion.milliseconds
@@ -50,7 +50,7 @@
animationFlow
.setup(
duration = FromLockscreenTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION,
- edge = Edge.create(from = LOCKSCREEN, to = Scenes.Bouncer),
+ edge = Edge.create(from = LOCKSCREEN, to = Overlays.Bouncer),
)
.setupWithoutSceneContainer(edge = Edge.create(from = LOCKSCREEN, to = PRIMARY_BOUNCER))
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt
index 06c27d3..0eeb6c6 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt
@@ -21,6 +21,7 @@
import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -60,7 +61,11 @@
occlusionInteractor.isOccludingActivityShown,
) { isDeviceUnlocked, shadeMode, isOccluded ->
buildList {
- add(Swipe.Up to if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer)
+ if (isDeviceUnlocked) {
+ add(Swipe.Up to Scenes.Gone)
+ } else {
+ add(Swipe.Up to Overlays.Bouncer)
+ }
addAll(
when (shadeMode) {
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 dc75829..32bad8e 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
@@ -26,7 +26,7 @@
import com.android.systemui.keyguard.ui.transitions.BlurConfig
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import javax.inject.Inject
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.flow.Flow
@@ -49,7 +49,7 @@
animationFlow
.setup(
duration = FromPrimaryBouncerTransitionInteractor.TO_AOD_DURATION,
- edge = Edge.create(from = Scenes.Bouncer, to = AOD),
+ edge = Edge.create(from = Overlays.Bouncer, to = AOD),
)
.setupWithoutSceneContainer(edge = Edge.create(from = PRIMARY_BOUNCER, to = AOD))
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 7f431bc..1b53344 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
@@ -26,7 +26,7 @@
import com.android.systemui.keyguard.ui.transitions.BlurConfig
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow
@@ -49,7 +49,7 @@
animationFlow
.setup(
duration = TO_DOZING_DURATION,
- edge = Edge.create(from = Scenes.Bouncer, to = DOZING),
+ edge = Edge.create(from = Overlays.Bouncer, to = DOZING),
)
.setupWithoutSceneContainer(edge = Edge.create(from = PRIMARY_BOUNCER, to = DOZING))
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 9cb0387..5a111aa 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
@@ -28,7 +28,7 @@
import com.android.systemui.keyguard.ui.transitions.BlurConfig
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import javax.inject.Inject
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.flow.Flow
@@ -50,7 +50,7 @@
animationFlow
.setup(
duration = FromPrimaryBouncerTransitionInteractor.TO_LOCKSCREEN_DURATION,
- edge = Edge.create(from = Scenes.Bouncer, to = LOCKSCREEN),
+ edge = Edge.create(from = Overlays.Bouncer, to = LOCKSCREEN),
)
.setupWithoutSceneContainer(edge = Edge.create(from = PRIMARY_BOUNCER, to = LOCKSCREEN))
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
index 55d8b8c..bfd48c8 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
@@ -683,7 +683,7 @@
internal fun listenForAnyStateToGoneKeyguardTransition(scope: CoroutineScope): Job {
return scope.launch {
keyguardTransitionInteractor
- .isFinishedIn(scene = Scenes.Gone, stateWithoutSceneContainer = GONE)
+ .isFinishedIn(content = Scenes.Gone, stateWithoutSceneContainer = GONE)
.filter { it }
.collect {
showMediaCarousel()
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
index b64cb3d..f06c4cc 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
@@ -58,6 +58,7 @@
import com.android.systemui.statusbar.CrossFadeHelper
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.SysuiStatusBarStateController
+import com.android.systemui.statusbar.featurepods.popups.StatusBarPopupChips
import com.android.systemui.statusbar.notification.stack.StackStateAnimator
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.statusbar.policy.ConfigurationController
@@ -229,7 +230,7 @@
else result.setIntersect(animationStartClipping, targetClipping)
}
- private val mediaHosts = arrayOfNulls<MediaHost>(LOCATION_COMMUNAL_HUB + 1)
+ private val mediaHosts = arrayOfNulls<MediaHost>(LOCATION_STATUS_BAR_POPUP + 1)
/**
* The last location where this view was at before going to the desired location. This is useful
@@ -374,6 +375,15 @@
}
}
+ /** Is the Media Control StatusBarPopup showing */
+ var isMediaControlPopupShowing: Boolean = false
+ set(value) {
+ if (field != value && StatusBarPopupChips.isEnabled) {
+ field = value
+ updateDesiredLocation(forceNoAnimation = true)
+ }
+ }
+
/** Are location changes currently blocked? */
private val blockLocationChanges: Boolean
get() {
@@ -1225,6 +1235,7 @@
// Keep the current location until we're allowed to again
return desiredLocation
}
+
val onLockscreen =
(!bypassController.bypassEnabled && (statusbarState == StatusBarState.KEYGUARD))
@@ -1234,6 +1245,8 @@
(onCommunalNotDreaming && qsExpansion == 0.0f) || onCommunalDreamingAndShadeExpanding
val location =
when {
+ isMediaControlPopupShowing && StatusBarPopupChips.isEnabled ->
+ LOCATION_STATUS_BAR_POPUP
dreamOverlayActive && dreamMediaComplicationActive -> LOCATION_DREAM_OVERLAY
onCommunal -> LOCATION_COMMUNAL_HUB
(qsExpansion > 0.0f || inSplitShade) && !onLockscreen -> LOCATION_QS
@@ -1377,6 +1390,9 @@
/** Attached to a view in the communal UI grid */
const val LOCATION_COMMUNAL_HUB = 4
+ /** Attached to a popup that is shown with a media control chip in the status bar */
+ const val LOCATION_STATUS_BAR_POPUP = 5
+
/** Attached at the root of the hierarchy in an overlay */
const val IN_OVERLAY = -1000
@@ -1422,6 +1438,7 @@
MediaHierarchyManager.LOCATION_LOCKSCREEN,
MediaHierarchyManager.LOCATION_DREAM_OVERLAY,
MediaHierarchyManager.LOCATION_COMMUNAL_HUB,
+ MediaHierarchyManager.LOCATION_STATUS_BAR_POPUP,
MediaHierarchyManager.LOCATION_UNKNOWN,
],
)
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaUiEventLogger.kt b/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaUiEventLogger.kt
index 09f973c..f0da226 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaUiEventLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaUiEventLogger.kt
@@ -45,7 +45,7 @@
uid: Int,
packageName: String,
instanceId: InstanceId,
- playbackLocation: Int
+ playbackLocation: Int,
) {
val event =
when (playbackLocation) {
@@ -61,7 +61,7 @@
uid: Int,
packageName: String,
instanceId: InstanceId,
- playbackLocation: Int
+ playbackLocation: Int,
) {
val event =
when (playbackLocation) {
@@ -112,7 +112,7 @@
MediaUiEvent.OPEN_SETTINGS_LONG_PRESS,
uid,
packageName,
- instanceId
+ instanceId,
)
}
@@ -156,6 +156,8 @@
MediaUiEvent.MEDIA_CAROUSEL_LOCATION_DREAM
MediaHierarchyManager.LOCATION_COMMUNAL_HUB ->
MediaUiEvent.MEDIA_CAROUSEL_LOCATION_COMMUNAL
+ MediaHierarchyManager.LOCATION_STATUS_BAR_POPUP ->
+ MediaUiEvent.MEDIA_CAROUSEL_LOCATION_STATUS_BAR_POPUP
else -> throw IllegalArgumentException("Unknown media carousel location $location")
}
logger.log(event)
@@ -166,7 +168,7 @@
MediaUiEvent.MEDIA_RECOMMENDATION_ADDED,
0,
packageName,
- instanceId
+ instanceId,
)
}
@@ -175,7 +177,7 @@
MediaUiEvent.MEDIA_RECOMMENDATION_REMOVED,
0,
packageName,
- instanceId
+ instanceId,
)
}
@@ -184,7 +186,7 @@
MediaUiEvent.MEDIA_RECOMMENDATION_ACTIVATED,
uid,
packageName,
- instanceId
+ instanceId,
)
}
@@ -194,7 +196,7 @@
0,
packageName,
instanceId,
- position
+ position,
)
}
@@ -203,7 +205,7 @@
MediaUiEvent.MEDIA_RECOMMENDATION_CARD_TAP,
0,
packageName,
- instanceId
+ instanceId,
)
}
@@ -212,7 +214,7 @@
MediaUiEvent.MEDIA_OPEN_BROADCAST_DIALOG,
uid,
packageName,
- instanceId
+ instanceId,
)
}
@@ -221,7 +223,7 @@
MediaUiEvent.MEDIA_CAROUSEL_SINGLE_PLAYER,
uid,
packageName,
- instanceId
+ instanceId,
)
}
@@ -230,7 +232,7 @@
MediaUiEvent.MEDIA_CAROUSEL_MULTIPLE_PLAYERS,
uid,
packageName,
- instanceId
+ instanceId,
)
}
}
@@ -280,6 +282,8 @@
MEDIA_CAROUSEL_LOCATION_DREAM(1040),
@UiEvent(doc = "The media carousel moved to the communal hub UI")
MEDIA_CAROUSEL_LOCATION_COMMUNAL(1520),
+ @UiEvent(doc = "The media carousel moved to the status bar popup")
+ MEDIA_CAROUSEL_LOCATION_STATUS_BAR_POPUP(2170),
@UiEvent(doc = "A media recommendation card was added to the media carousel")
MEDIA_RECOMMENDATION_ADDED(1041),
@UiEvent(doc = "A media recommendation card was removed from the media carousel")
diff --git a/packages/SystemUI/src/com/android/systemui/media/dagger/MediaModule.java b/packages/SystemUI/src/com/android/systemui/media/dagger/MediaModule.java
index 45a3a8c..662a9c7 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dagger/MediaModule.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dagger/MediaModule.java
@@ -49,6 +49,7 @@
String KEYGUARD = "media_keyguard";
String DREAM = "dream";
String COMMUNAL_HUB = "communal_Hub";
+ String POPUP = "popup";
/** */
@Provides
@@ -102,7 +103,26 @@
@Provides
@SysUISingleton
@Named(COMMUNAL_HUB)
- static MediaHost providesCommunalMediaHost(MediaHost.MediaHostStateHolder stateHolder,
+ static MediaHost providesCommunalMediaHost(
+ MediaHost.MediaHostStateHolder stateHolder,
+ MediaHierarchyManager hierarchyManager,
+ MediaDataManager dataManager,
+ MediaHostStatesManager statesManager,
+ MediaCarouselController carouselController,
+ MediaCarouselControllerLogger logger) {
+ return new MediaHost(
+ stateHolder,
+ hierarchyManager,
+ dataManager,
+ statesManager,
+ carouselController,
+ logger);
+ }
+
+ @Provides
+ @SysUISingleton
+ @Named(POPUP)
+ static MediaHost providesPopupMediaHost(MediaHost.MediaHostStateHolder stateHolder,
MediaHierarchyManager hierarchyManager, MediaDataManager dataManager,
MediaHostStatesManager statesManager, MediaCarouselController carouselController,
MediaCarouselControllerLogger logger) {
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java
index ea44184..f8e57ef 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java
@@ -36,6 +36,7 @@
import android.view.animation.LinearInterpolator;
import android.widget.CheckBox;
import android.widget.FrameLayout;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.SeekBar;
@@ -44,7 +45,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
-import androidx.core.widget.CompoundButtonCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.android.media.flags.Flags;
@@ -130,6 +130,7 @@
final ViewGroup mContainerLayout;
final FrameLayout mItemLayout;
final FrameLayout mIconAreaLayout;
+ final ViewGroup mTextContent;
final TextView mTitleText;
final TextView mSubTitleText;
final TextView mVolumeValueText;
@@ -138,7 +139,7 @@
final ImageView mStatusIcon;
final CheckBox mCheckBox;
final ViewGroup mEndTouchArea;
- final ImageView mEndClickIcon;
+ final ImageButton mEndClickIcon;
@VisibleForTesting
MediaOutputSeekbar mSeekBar;
private final float mInactiveRadius;
@@ -152,6 +153,7 @@
super(view, context);
mContainerLayout = view.requireViewById(R.id.device_container);
mItemLayout = view.requireViewById(R.id.item_layout);
+ mTextContent = view.requireViewById(R.id.text_content);
mTitleText = view.requireViewById(R.id.title);
mSubTitleText = view.requireViewById(R.id.subtitle);
mTitleIcon = view.requireViewById(R.id.title_icon);
@@ -160,7 +162,7 @@
mStatusIcon = view.requireViewById(R.id.media_output_item_status);
mCheckBox = view.requireViewById(R.id.check_box);
mEndTouchArea = view.requireViewById(R.id.end_action_area);
- mEndClickIcon = view.requireViewById(R.id.media_output_item_end_click_icon);
+ mEndClickIcon = view.requireViewById(R.id.end_area_image_button);
mVolumeValueText = view.requireViewById(R.id.volume_value);
mIconAreaLayout = view.requireViewById(R.id.icon_area);
mInactiveRadius = mContext.getResources().getDimension(
@@ -178,9 +180,7 @@
mStatusIcon.setVisibility(View.GONE);
mEndTouchArea.setVisibility(View.GONE);
mEndClickIcon.setVisibility(View.GONE);
- mEndTouchArea.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
mContainerLayout.setOnClickListener(null);
- mContainerLayout.setContentDescription(null);
mTitleText.setTextColor(mController.getColorItemContent());
mSubTitleText.setTextColor(mController.getColorItemContent());
mVolumeValueText.setTextColor(mController.getColorItemContent());
@@ -188,7 +188,7 @@
updateIconAreaClickListener(null);
mSeekBar.setProgressTintList(
ColorStateList.valueOf(mController.getColorSeekbarProgress()));
- enableFocusPropertyForView(mContainerLayout);
+ updateContainerContentA11yImportance(true /* isImportant */);
renderItem(mediaItem, position);
}
@@ -256,10 +256,10 @@
mSeekBar.setVisibility(showSeekBar ? View.VISIBLE : View.GONE);
if (showSeekBar) {
initSeekbar(device, isCurrentSeekbarInvisible);
- disableFocusPropertyForView(mContainerLayout);
+ updateContainerContentA11yImportance(false /* isImportant */);
mSeekBar.setContentDescription(contentDescription);
} else {
- enableFocusPropertyForView(mContainerLayout);
+ updateContainerContentA11yImportance(true /* isImportant */);
}
}
@@ -268,18 +268,22 @@
boolean isCurrentSeekbarInvisible = mSeekBar.getVisibility() == View.GONE;
mSeekBar.setVisibility(View.VISIBLE);
initGroupSeekbar(isCurrentSeekbarInvisible);
- disableFocusPropertyForView(mContainerLayout);
+ updateContainerContentA11yImportance(false /* isImportant */);
mSeekBar.setContentDescription(contentDescription);
}
- private void disableFocusPropertyForView(View view) {
- view.setFocusable(false);
- view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
- }
-
- private void enableFocusPropertyForView(View view) {
- view.setFocusable(true);
- view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
+ /**
+ * Sets the a11y importance for the device container and it's text content. Making the
+ * container not important for a11y is required when the seekbar is visible.
+ */
+ private void updateContainerContentA11yImportance(boolean isImportant) {
+ mContainerLayout.setFocusable(isImportant);
+ mContainerLayout.setImportantForAccessibility(
+ isImportant ? View.IMPORTANT_FOR_ACCESSIBILITY_YES
+ : View.IMPORTANT_FOR_ACCESSIBILITY_NO);
+ mTextContent.setImportantForAccessibility(
+ isImportant ? View.IMPORTANT_FOR_ACCESSIBILITY_YES
+ : View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
}
void updateSubtitle(@Nullable String subtitle) {
@@ -576,26 +580,22 @@
mEndClickIcon.setImageTintList(
ColorStateList.valueOf(mController.getColorItemContent()));
mEndClickIcon.setOnClickListener(clickListener);
- mEndTouchArea.setOnClickListener(v -> mEndClickIcon.performClick());
Drawable drawable = mContext.getDrawable(iconDrawableId);
mEndClickIcon.setImageDrawable(drawable);
if (drawable instanceof AnimatedVectorDrawable) {
((AnimatedVectorDrawable) drawable).start();
}
- if (Flags.enableOutputSwitcherDeviceGrouping()) {
- mEndClickIcon.setContentDescription(mContext.getString(accessibilityStringId));
- }
+ mEndClickIcon.setContentDescription(mContext.getString(accessibilityStringId));
}
private void updateEndAreaForGroupCheckBox(@NonNull MediaDevice device,
@NonNull GroupStatus groupStatus) {
boolean isEnabled = isGroupCheckboxEnabled(groupStatus);
- mEndTouchArea.setOnClickListener(
- isEnabled ? (v) -> mCheckBox.performClick() : null);
- mEndTouchArea.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
updateEndAreaColor(groupStatus.selected() ? mController.getColorSeekbarProgress()
: mController.getColorItemBackground());
- mEndTouchArea.setContentDescription(getDeviceItemContentDescription(device));
+ mCheckBox.setContentDescription(mContext.getString(
+ groupStatus.selected() ? R.string.accessibility_remove_device_from_group
+ : R.string.accessibility_add_device_to_group));
mCheckBox.setOnCheckedChangeListener(null);
mCheckBox.setChecked(groupStatus.selected());
mCheckBox.setOnCheckedChangeListener(
@@ -606,10 +606,7 @@
}
private void setCheckBoxColor(CheckBox checkBox, int color) {
- int[][] states = {{android.R.attr.state_checked}, {}};
- int[] colors = {color, color};
- CompoundButtonCompat.setButtonTintList(checkBox, new
- ColorStateList(states, colors));
+ checkBox.setForegroundTintList(ColorStateList.valueOf(color));
}
private boolean shouldShowGroupCheckbox(@NonNull GroupStatus groupStatus) {
diff --git a/packages/SystemUI/src/com/android/systemui/model/SceneContainerPlugin.kt b/packages/SystemUI/src/com/android/systemui/model/SceneContainerPlugin.kt
index 0bf4c7e..ea515c9 100644
--- a/packages/SystemUI/src/com/android/systemui/model/SceneContainerPlugin.kt
+++ b/packages/SystemUI/src/com/android/systemui/model/SceneContainerPlugin.kt
@@ -103,7 +103,7 @@
it.scene == Scenes.QuickSettings ||
Overlays.QuickSettingsShade in it.overlays
},
- SYSUI_STATE_BOUNCER_SHOWING to { it.scene == Scenes.Bouncer },
+ SYSUI_STATE_BOUNCER_SHOWING to { Overlays.Bouncer in it.overlays },
SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING to
{
it.scene == Scenes.Lockscreen && !it.invisibleDueToOcclusion
diff --git a/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModel.kt
index c43c1a99..18b4b7d2 100644
--- a/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModel.kt
@@ -22,7 +22,6 @@
import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
import com.android.systemui.scene.domain.interactor.SceneInteractor
-import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
import com.android.systemui.statusbar.disableflags.domain.interactor.DisableFlagsInteractor
@@ -96,18 +95,6 @@
launch { hydrator.activate() }
launch {
- sceneInteractor.currentScene.collect { currentScene ->
- when (currentScene) {
- // TODO(b/369513770): The ShadeSession should be preserved in this scenario.
- Scenes.Bouncer ->
- shadeInteractor.collapseNotificationsShade(
- loggingReason = "bouncer shown while shade is open"
- )
- }
- }
- }
-
- launch {
shadeInteractor.isShadeTouchable
.distinctUntilChanged()
.filter { !it }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
index 5930a24..6ad8bae 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
@@ -306,7 +306,6 @@
sceneState,
viewModel.containerViewModel.editModeViewModel.isEditing,
snapshotFlow { viewModel.expansionState }.map { it.progress },
- snapshotFlow { viewModel.isQSExpandingOrCollapsing },
)
}
@@ -538,10 +537,6 @@
return qqsVisible.value
}
- override fun setQSExpandingOrCollapsing(isQSExpandingOrCollapsing: Boolean) {
- viewModel.isQSExpandingOrCollapsing = isQSExpandingOrCollapsing
- }
-
private fun setListenerCollections() {
lifecycleScope.launch {
lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
@@ -882,7 +877,6 @@
state: MutableSceneTransitionLayoutState,
editMode: Flow<Boolean>,
expansion: Flow<Float>,
- isQSExpandingOrCollapsing: Flow<Boolean>,
) {
coroutineScope {
val animationScope = this
@@ -894,46 +888,31 @@
currentTransition = null
}
- var lastValidProgress = 0f
- combine(editMode, expansion, isQSExpandingOrCollapsing, ::Triple).collectLatest {
- (editMode, progress, isQSExpandingOrCollapsing) ->
+ editMode.combine(expansion, ::Pair).collectLatest { (editMode, progress) ->
if (editMode && state.currentScene != SceneKeys.EditMode) {
state.setTargetScene(SceneKeys.EditMode, animationScope)?.second?.join()
} else if (!editMode && state.currentScene == SceneKeys.EditMode) {
state.setTargetScene(SceneKeys.QuickSettings, animationScope)?.second?.join()
}
-
if (!editMode) {
- if (!isQSExpandingOrCollapsing) {
- if (progress == 0f) {
- snapTo(QuickQuickSettings)
- return@collectLatest
- }
+ when (progress) {
+ 0f -> snapTo(QuickQuickSettings)
+ 1f -> snapTo(QuickSettings)
+ else -> {
+ val transition = currentTransition
+ if (transition != null) {
+ transition.progress = progress
+ return@collectLatest
+ }
- if (progress == 1f) {
- snapTo(QuickSettings)
- return@collectLatest
+ val newTransition =
+ ExpansionTransition(progress).also { currentTransition = it }
+ state.startTransitionImmediately(
+ animationScope = animationScope,
+ transition = newTransition,
+ )
}
}
-
- var progress = progress
- if (progress >= 0f || progress <= 1f) {
- lastValidProgress = progress
- } else {
- progress = lastValidProgress
- }
-
- val transition = currentTransition
- if (transition != null) {
- transition.progress = progress
- return@collectLatest
- }
-
- val newTransition = ExpansionTransition(progress).also { currentTransition = it }
- state.startTransitionImmediately(
- animationScope = animationScope,
- transition = newTransition,
- )
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt
index b829bbc..767acc5 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt
@@ -35,6 +35,7 @@
import com.android.systemui.classifier.Classifier
import com.android.systemui.classifier.domain.interactor.FalsingInteractor
import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.Edge
@@ -60,7 +61,7 @@
import com.android.systemui.qs.panels.ui.viewmodel.QuickQuickSettingsViewModel
import com.android.systemui.qs.ui.viewmodel.QuickSettingsContainerViewModel
import com.android.systemui.res.R
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.shade.LargeScreenHeaderHelper
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -306,8 +307,6 @@
val animateTilesExpansion: Boolean
get() = inFirstPage && !mediaSuddenlyAppearingInLandscape
- var isQSExpandingOrCollapsing by mutableStateOf(false)
-
private val inFirstPage: Boolean
get() = inFirstPageViewModel.inFirstPage
@@ -434,7 +433,7 @@
initialValue = false,
source =
keyguardTransitionInteractor.isInTransition(
- Edge.create(to = Scenes.Bouncer),
+ Edge.create(to = Overlays.Bouncer),
Edge.create(to = KeyguardState.PRIMARY_BOUNCER),
),
)
@@ -541,7 +540,6 @@
println("proposedTranslation", proposedTranslation)
println("expansionState", expansionState)
println("forceQS", forceQs)
- println("isShadeExpandingOrCollapsing", isQSExpandingOrCollapsing)
printSection("Derived values") {
println("headerTranslation", headerTranslation)
println("translationScaleY", translationScaleY)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index fd5861f..7daac45 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -61,6 +61,8 @@
import com.android.systemui.res.R;
import com.android.systemui.statusbar.policy.BluetoothController;
+import dagger.Lazy;
+
import kotlinx.coroutines.Job;
import java.util.List;
@@ -84,7 +86,7 @@
private final Executor mExecutor;
- private final BluetoothDetailsContentViewModel mDetailsContentViewModel;
+ private final Lazy<BluetoothDetailsContentViewModel> mDetailsContentViewModel;
private final FeatureFlags mFeatureFlags;
@Nullable
@@ -104,7 +106,7 @@
QSLogger qsLogger,
BluetoothController bluetoothController,
FeatureFlags featureFlags,
- BluetoothDetailsContentViewModel detailsContentViewModel
+ Lazy<BluetoothDetailsContentViewModel> detailsContentViewModel
) {
super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger,
statusBarStateController, activityStarter, qsLogger);
@@ -133,7 +135,7 @@
callback.accept(new BluetoothDetailsViewModel(() -> {
longClick(null);
return null;
- }, mDetailsContentViewModel))
+ }, mDetailsContentViewModel.get()))
);
return true;
}
@@ -158,7 +160,7 @@
private void handleClickEvent(@Nullable Expandable expandable) {
if (mFeatureFlags.isEnabled(Flags.BLUETOOTH_QS_TILE_DIALOG)) {
- mDetailsContentViewModel.showDetailsContent(expandable, /* view= */ null);
+ mDetailsContentViewModel.get().showDetailsContent(expandable, /* view= */ null);
} else {
// Secondary clicks are header clicks, just toggle.
toggleBluetooth();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
index 30c2adf..c60e3da 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
@@ -54,6 +54,7 @@
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
+import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.connectivity.SignalCallback;
import com.android.systemui.statusbar.connectivity.WifiIndicators;
@@ -89,6 +90,7 @@
private final Callback mCallback = new Callback();
private final TileJavaAdapter mJavaAdapter;
private final FeatureFlags mFeatureFlags;
+ private final ShadeDialogContextInteractor mShadeDialogContextInteractor;
private boolean mCastTransportAllowed;
private boolean mHotspotConnected;
@@ -110,7 +112,8 @@
DialogTransitionAnimator dialogTransitionAnimator,
ConnectivityRepository connectivityRepository,
TileJavaAdapter javaAdapter,
- FeatureFlags featureFlags
+ FeatureFlags featureFlags,
+ ShadeDialogContextInteractor shadeDialogContextInteractor
) {
super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger,
statusBarStateController, activityStarter, qsLogger);
@@ -120,6 +123,7 @@
mDialogTransitionAnimator = dialogTransitionAnimator;
mJavaAdapter = javaAdapter;
mFeatureFlags = featureFlags;
+ mShadeDialogContextInteractor = shadeDialogContextInteractor;
mController.observe(this, mCallback);
mKeyguard.observe(this, mCallback);
if (!mFeatureFlags.isEnabled(SIGNAL_CALLBACK_DEPRECATION)) {
@@ -220,7 +224,7 @@
mUiHandler.post(() -> {
final DialogHolder holder = new DialogHolder();
final Dialog dialog = MediaRouteDialogPresenter.createDialog(
- mContext,
+ mShadeDialogContextInteractor.getContext(),
ROUTE_TYPE_REMOTE_DISPLAY,
v -> {
ActivityTransitionAnimator.Controller controller =
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModel.kt
index 0add3f5..f75dadd 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModel.kt
@@ -18,7 +18,6 @@
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.scene.domain.interactor.SceneInteractor
-import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor
import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimShape
@@ -47,18 +46,6 @@
override suspend fun onActivated(): Nothing {
coroutineScope {
launch {
- sceneInteractor.currentScene.collect { currentScene ->
- when (currentScene) {
- // TODO(b/369513770): The ShadeSession should be preserved in this scenario.
- Scenes.Bouncer ->
- shadeInteractor.collapseQuickSettingsShade(
- loggingReason = "bouncer shown while shade is open"
- )
- }
- }
- }
-
- launch {
shadeInteractor.isShadeTouchable
.distinctUntilChanged()
.filter { !it }
diff --git a/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt b/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt
index ea11d20..2dc4a8d 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt
@@ -39,7 +39,7 @@
@Module(
includes =
[
- BouncerSceneModule::class,
+ BouncerOverlayModule::class,
CommunalSceneModule::class,
DreamSceneModule::class,
EmptySceneModule::class,
@@ -98,13 +98,16 @@
Scenes.Communal,
Scenes.Dream,
Scenes.Lockscreen,
- Scenes.Bouncer,
Scenes.QuickSettings,
Scenes.Shade,
),
initialSceneKey = Scenes.Lockscreen,
overlayKeys =
- listOfNotNull(Overlays.NotificationsShade, Overlays.QuickSettingsShade),
+ listOfNotNull(
+ Overlays.NotificationsShade,
+ Overlays.QuickSettingsShade,
+ Overlays.Bouncer,
+ ),
navigationDistances =
mapOf(
Scenes.Gone to 0,
@@ -113,7 +116,6 @@
Scenes.Dream to 2,
Scenes.Shade to 3,
Scenes.QuickSettings to 4,
- Scenes.Bouncer to 5,
),
transitionsBuilder = SceneContainerTransitions(),
)
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt b/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt
index 8845bb7..a982f70 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt
@@ -18,6 +18,7 @@
import com.android.systemui.scene.domain.SceneDomainModule
import com.android.systemui.scene.domain.resolver.HomeSceneFamilyResolverModule
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.SceneContainerConfig
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.composable.SceneContainerTransitions
@@ -28,7 +29,7 @@
@Module(
includes =
[
- BouncerSceneModule::class,
+ BouncerOverlayModule::class,
EmptySceneModule::class,
GoneSceneModule::class,
LockscreenSceneModule::class,
@@ -47,11 +48,10 @@
return SceneContainerConfig(
// Note that this list is in z-order. The first one is the bottom-most and the last one
// is top-most.
- sceneKeys = listOf(Scenes.Gone, Scenes.Lockscreen, Scenes.Bouncer),
+ sceneKeys = listOf(Scenes.Gone, Scenes.Lockscreen),
initialSceneKey = Scenes.Lockscreen,
- overlayKeys = emptyList(),
- navigationDistances =
- mapOf(Scenes.Gone to 0, Scenes.Lockscreen to 0, Scenes.Bouncer to 1),
+ overlayKeys = listOf(Overlays.Bouncer),
+ navigationDistances = mapOf(Scenes.Gone to 0, Scenes.Lockscreen to 0),
transitionsBuilder = SceneContainerTransitions(),
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneContainerOcclusionInteractor.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneContainerOcclusionInteractor.kt
index c96ea03..64abb84 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneContainerOcclusionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneContainerOcclusionInteractor.kt
@@ -136,7 +136,7 @@
when (this) {
Overlays.NotificationsShade -> false
Overlays.QuickSettingsShade -> false
- Scenes.Bouncer -> false
+ Overlays.Bouncer -> false
Scenes.Communal -> true
Scenes.Dream -> false
Scenes.Gone -> true
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
index 0118085..07f13cb 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
@@ -42,6 +42,7 @@
import dagger.Lazy
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
@@ -203,20 +204,30 @@
repository.isSceneContainerUserInputOngoing
/**
- * The amount of transition into or out of the given [scene].
+ * The amount of transition into or out of the given [content].
*
* The value will be `0` if not in this scene or `1` when fully in the given scene.
*/
- fun transitionProgress(scene: SceneKey): Flow<Float> {
+ @OptIn(ExperimentalCoroutinesApi::class)
+ fun transitionProgress(content: ContentKey): Flow<Float> {
return transitionState.flatMapLatest { transition ->
when (transition) {
is ObservableTransitionState.Idle -> {
- flowOf(if (transition.currentScene == scene) 1f else 0f)
+ flowOf(
+ if (
+ transition.currentScene == content ||
+ content in transition.currentOverlays
+ ) {
+ 1f
+ } else {
+ 0f
+ }
+ )
}
is ObservableTransitionState.Transition -> {
when {
- transition.toContent == scene -> transition.progress
- transition.fromContent == scene -> transition.progress.map { 1f - it }
+ transition.toContent == content -> transition.progress
+ transition.fromContent == content -> transition.progress.map { 1f - it }
else -> flowOf(0f)
}
}
@@ -238,6 +249,9 @@
* If [forceSettleToTargetScene] is `true` and the target scene is the same as the current
* scene, any current transition will be canceled and an animation to the target scene will be
* started.
+ *
+ * If [Overlays.Bouncer] is showing, we trigger an instant scene change as it will not be user-
+ * visible, and trigger a transition to hide the bouncer.
*/
@JvmOverloads
fun changeScene(
@@ -249,6 +263,7 @@
) {
val currentSceneKey = currentScene.value
val resolvedScene = sceneFamilyResolvers.get()[toScene]?.resolvedScene?.value ?: toScene
+ val bouncerShowing = Overlays.Bouncer in currentOverlays.value
if (resolvedScene == currentSceneKey && forceSettleToTargetScene) {
logger.logSceneChangeCancellation(scene = resolvedScene, sceneState = sceneState)
@@ -265,6 +280,12 @@
loggingReason = loggingReason,
)
) {
+ if (bouncerShowing) {
+ hideOverlay(
+ Overlays.Bouncer,
+ "Scene change cancelled but hiding bouncer for: ($loggingReason)",
+ )
+ }
return
}
@@ -278,14 +299,20 @@
isInstant = false,
)
- repository.changeScene(resolvedScene, transitionKey)
+ if (bouncerShowing) {
+ repository.snapToScene(resolvedScene)
+ hideOverlay(Overlays.Bouncer, "Hiding on changeScene for: ($loggingReason)")
+ } else {
+ repository.changeScene(resolvedScene, transitionKey)
+ }
}
/**
* Requests a scene change to the given scene.
*
* The change is instantaneous and not animated; it will be observable in the next frame and
- * there will be no transition animation.
+ * there will be no transition animation. If [Overlays.Bouncer] is showing, it will instantly be
+ * hidden.
*/
fun snapToScene(toScene: SceneKey, loggingReason: String) {
val currentSceneKey = currentScene.value
@@ -316,6 +343,7 @@
)
repository.snapToScene(resolvedScene)
+ instantlyHideOverlay(Overlays.Bouncer, "Hiding on snapToScene for: ($loggingReason)")
}
/**
@@ -662,6 +690,16 @@
false
}
+ to == Overlays.Bouncer && currentScene.value == Scenes.Gone -> {
+ logger.logSceneChangeRejection(
+ from = from,
+ to = to,
+ originalChangeReason = loggingReason,
+ rejectionReason = "Cannot show Bouncer over Gone scene",
+ )
+ false
+ }
+
else -> true
}
}
@@ -767,4 +805,41 @@
)
}
}
+
+ /**
+ * Based off of the ordering of [allContentKeys], returns the key of the highest z-order content
+ * out of [content].
+ */
+ private fun determineTopmostContent(content: Set<ContentKey>): ContentKey {
+ // Assuming allContentKeys is sorted by ascending z-order.
+ return checkNotNull(allContentKeys.findLast { it in content }) {
+ "Could not find unknown content $content in allContentKeys $allContentKeys"
+ }
+ }
+
+ /** Optimization for common case where overlays is empty. */
+ private fun determineTopmostContent(scene: SceneKey, overlays: Set<OverlayKey>): ContentKey {
+ return if (overlays.isEmpty()) {
+ scene
+ } else {
+ determineTopmostContent(overlays)
+ }
+ }
+
+ /**
+ * The current content that has the highest z-order out of all currently shown scenes and
+ * overlays.
+ *
+ * Note that during a transition between content, a different content may have the highest z-
+ * order. Only the one provided by this flow is considered the current logical topmost content.
+ */
+ @Deprecated("Only to be used for compatibility with KeyguardTransitionFramework")
+ val topmostContent: StateFlow<ContentKey> =
+ combine(currentScene, currentOverlays, ::determineTopmostContent)
+ .stateInTraced(
+ name = "topmostContent",
+ scope = applicationScope,
+ started = SharingStarted.Eagerly,
+ initialValue = determineTopmostContent(currentScene.value, currentOverlays.value),
+ )
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/WindowRootViewVisibilityInteractor.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/WindowRootViewVisibilityInteractor.kt
index 7922613..68ce269 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/WindowRootViewVisibilityInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/WindowRootViewVisibilityInteractor.kt
@@ -87,7 +87,7 @@
)
is ObservableTransitionState.Transition ->
if (
- state.fromContent == Scenes.Bouncer &&
+ state.fromContent == Overlays.Bouncer &&
state.toContent == Scenes.Lockscreen
) {
// Lockscreen is not visible during preview stage of predictive back
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
index 218ad47..4753b9a 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
@@ -18,6 +18,7 @@
import android.app.StatusBarManager
import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.OverlayKey
import com.android.compose.animation.scene.SceneKey
import com.android.internal.logging.UiEventLogger
import com.android.keyguard.AuthInteractionProperties
@@ -45,7 +46,7 @@
import com.android.systemui.keyguard.domain.interactor.KeyguardEnabledInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.domain.interactor.TrustInteractor
-import com.android.systemui.keyguard.domain.interactor.WindowManagerLockscreenVisibilityInteractor.Companion.keyguardScenes
+import com.android.systemui.keyguard.domain.interactor.WindowManagerLockscreenVisibilityInteractor.Companion.keyguardContent
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.model.SceneContainerPlugin
import com.android.systemui.model.SysUiState
@@ -98,7 +99,6 @@
import kotlinx.coroutines.flow.distinctUntilChangedBy
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.filterIsInstance
-import kotlinx.coroutines.flow.filterNot
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
@@ -345,12 +345,10 @@
applicationScope.launch {
// TODO (b/308001302): Move this to a bouncer specific interactor.
bouncerInteractor.onImeHiddenByUser.collectLatest {
- if (sceneInteractor.currentScene.value == Scenes.Bouncer) {
- sceneInteractor.changeScene(
- toScene = Scenes.Lockscreen,
- loggingReason = "IME hidden",
- )
- }
+ sceneInteractor.hideOverlay(
+ overlay = Overlays.Bouncer,
+ loggingReason = "IME hidden.",
+ )
}
}
}
@@ -364,26 +362,28 @@
.collect { (isAnySimLocked, unlockStatus) ->
when {
isAnySimLocked -> {
- switchToScene(
- targetSceneKey = Scenes.Bouncer,
+ sceneInteractor.showOverlay(
+ overlay = Overlays.Bouncer,
loggingReason = "Need to authenticate locked SIM card.",
)
}
unlockStatus.isUnlocked &&
deviceEntryInteractor.canSwipeToEnter.value == false -> {
+ val loggingReason =
+ "All SIM cards unlocked and device already unlocked and " +
+ "lockscreen doesn't require a swipe to dismiss."
switchToScene(
targetSceneKey = Scenes.Gone,
- loggingReason =
- "All SIM cards unlocked and device already unlocked and " +
- "lockscreen doesn't require a swipe to dismiss.",
+ loggingReason = loggingReason,
)
}
else -> {
+ val loggingReason =
+ "All SIM cards unlocked and device still locked" +
+ " or lockscreen still requires a swipe to dismiss."
switchToScene(
targetSceneKey = Scenes.Lockscreen,
- loggingReason =
- "All SIM cards unlocked and device still locked" +
- " or lockscreen still requires a swipe to dismiss.",
+ loggingReason = loggingReason,
)
}
}
@@ -393,26 +393,40 @@
private fun handleDeviceUnlockStatus() {
applicationScope.launch {
- // Track the previous scene (sans Bouncer), so that we know where to go when the device
- // is unlocked whilst on the bouncer.
+ // Track the previous scene, so that we know where to go when the device is unlocked
+ // whilst on the bouncer.
val previousScene =
- sceneBackInteractor.backScene
- .filterNot { it == Scenes.Bouncer }
- .stateIn(this, SharingStarted.Eagerly, initialValue = null)
+ sceneBackInteractor.backScene.stateIn(
+ this,
+ SharingStarted.Eagerly,
+ initialValue = null,
+ )
deviceUnlockedInteractor.deviceUnlockStatus
.mapNotNull { deviceUnlockStatus ->
- val renderedScenes =
+ val (renderedScenes: List<SceneKey>, renderedOverlays) =
when (val transitionState = sceneInteractor.transitionState.value) {
- is ObservableTransitionState.Idle -> setOf(transitionState.currentScene)
- is ObservableTransitionState.Transition ->
- setOf(transitionState.fromContent, transitionState.toContent)
+ is ObservableTransitionState.Idle ->
+ listOf(transitionState.currentScene) to
+ transitionState.currentOverlays
+ is ObservableTransitionState.Transition.ChangeScene ->
+ listOf(transitionState.fromScene, transitionState.toScene) to
+ transitionState.currentOverlays
+ is ObservableTransitionState.Transition.OverlayTransition ->
+ listOf(transitionState.currentScene) to
+ setOfNotNull(
+ transitionState.toContent.takeIf { it is OverlayKey },
+ transitionState.fromContent.takeIf { it is OverlayKey },
+ )
}
val isOnLockscreen = renderedScenes.contains(Scenes.Lockscreen)
val isAlternateBouncerVisible = alternateBouncerInteractor.isVisibleState()
- val isOnPrimaryBouncer = renderedScenes.contains(Scenes.Bouncer)
+ val isOnPrimaryBouncer = Overlays.Bouncer in renderedOverlays
if (!deviceUnlockStatus.isUnlocked) {
- return@mapNotNull if (renderedScenes.any { it in keyguardScenes }) {
- // Already on a keyguard scene, no need to change scenes.
+ return@mapNotNull if (
+ renderedScenes.any { it in keyguardContent } ||
+ Overlays.Bouncer in renderedOverlays
+ ) {
+ // Already on a keyguard scene or bouncer, no need to change scenes.
null
} else {
// The device locked while on a scene that's not a keyguard scene, go
@@ -450,24 +464,25 @@
}
isOnPrimaryBouncer -> {
// When the device becomes unlocked in primary Bouncer,
- // notify dismiss succeeded and go to previous scene or Gone.
+ // notify dismiss succeeded and remain in current scene or switch to
+ // Gone.
dismissCallbackRegistry.notifyDismissSucceeded()
+ // if transition is a scene change, take the destination scene
+ val targetScene = renderedScenes.last()
if (
- previousScene.value == Scenes.Lockscreen ||
+ targetScene == Scenes.Lockscreen ||
!statusBarStateController.leaveOpenOnKeyguardHide()
) {
Scenes.Gone to
"device was unlocked with bouncer showing and shade" +
" didn't need to be left open"
} else {
- val prevScene = previousScene.value
- val targetScene = prevScene ?: Scenes.Gone
- if (targetScene != Scenes.Gone) {
+ if (previousScene.value != Scenes.Gone) {
replaceLockscreenSceneOnBackStack()
}
targetScene to
"device was unlocked with primary bouncer showing," +
- " from sceneKey=$prevScene"
+ " from sceneKey=$targetScene"
}
}
isOnLockscreen ->
@@ -575,8 +590,8 @@
authenticationInteractor.get().getAuthenticationMethod() ==
AuthenticationMethodModel.Sim
) {
- switchToScene(
- targetSceneKey = Scenes.Bouncer,
+ sceneInteractor.showOverlay(
+ overlay = Overlays.Bouncer,
loggingReason = "device is starting to wake up with a locked sim",
)
}
@@ -791,11 +806,11 @@
}
applicationScope.launch {
- sceneInteractor.currentScene
- .map { it == Scenes.Bouncer }
+ sceneInteractor.currentOverlays
+ .map { Overlays.Bouncer in it }
.distinctUntilChanged()
- .collect { switchedToBouncerScene ->
- if (switchedToBouncerScene) {
+ .collect { switchedToBouncerOverlay ->
+ if (switchedToBouncerOverlay) {
falsingCollector.onBouncerShown()
} else {
falsingCollector.onBouncerHidden()
@@ -812,7 +827,10 @@
falsingManager.addFalsingBeliefListener(listener)
awaitClose { falsingManager.removeFalsingBeliefListener(listener) }
}
- .collect { switchToScene(Scenes.Lockscreen, "Falsing detected.") }
+ .collect {
+ val loggingReason = "Falsing detected."
+ switchToScene(Scenes.Lockscreen, loggingReason)
+ }
}
}
@@ -827,7 +845,7 @@
.mapNotNull { it as? ObservableTransitionState.Idle }
.map { it.currentScene to it.currentOverlays }
.distinctUntilChanged()
- .map { (sceneKey, currentOverlays) ->
+ .map { (currentScene, currentOverlays) ->
when {
// When locked, showing the lockscreen scene should be reported
// as "interacting" while showing other scenes should report as
@@ -837,9 +855,9 @@
// implementation. The real reason why is lost to lore and myth.
Overlays.NotificationsShade in currentOverlays -> false
Overlays.QuickSettingsShade in currentOverlays -> null
- sceneKey == Scenes.Lockscreen -> true
- sceneKey == Scenes.Bouncer -> false
- sceneKey == Scenes.Shade -> false
+ Overlays.Bouncer in currentOverlays -> false
+ currentScene == Scenes.Lockscreen -> true
+ currentScene == Scenes.Shade -> false
else -> null
}
}
@@ -865,7 +883,7 @@
.filterIsInstance<ObservableTransitionState.Transition>()
// Only consider user-initiated (e.g. drags) that go from bouncer to lockscreen.
.filter { transition ->
- transition.fromContent == Scenes.Bouncer &&
+ transition.fromContent == Overlays.Bouncer &&
transition.toContent == Scenes.Lockscreen &&
transition.isInitiatedByUserInput
}
@@ -954,14 +972,13 @@
private fun notifyKeyguardDismissCancelledCallbacks() {
applicationScope.launch {
- combine(deviceEntryInteractor.isUnlocked, sceneInteractor.currentScene.pairwise()) {
+ combine(deviceEntryInteractor.isUnlocked, sceneInteractor.currentOverlays.pairwise()) {
isUnlocked,
- (from, to) ->
- when {
- from != Scenes.Bouncer -> false
- to != Scenes.Gone && !isUnlocked -> true
- else -> false
- }
+ overlayChange ->
+ val difference = overlayChange.previousValue - overlayChange.newValue
+ !isUnlocked &&
+ sceneInteractor.currentScene.value != Scenes.Gone &&
+ Overlays.Bouncer in difference
}
.collect { notifyKeyguardDismissCancelled ->
if (notifyKeyguardDismissCancelled) {
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/ScrimStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/ScrimStartable.kt
index 522dfab..305dcfb 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/ScrimStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/ScrimStartable.kt
@@ -17,6 +17,7 @@
package com.android.systemui.scene.domain.startable
import androidx.annotation.VisibleForTesting
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.compose.animation.scene.ContentKey
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.compose.animation.scene.OverlayKey
@@ -49,7 +50,6 @@
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
-import com.android.app.tracing.coroutines.launchTraced as launch
@SysUISingleton
class ScrimStartable
@@ -108,12 +108,12 @@
// This is true when the lockscreen scene is either the current scene or somewhere
// in the navigation back stack of scenes.
val isOnKeyguard = !isDeviceEntered
- val isCurrentSceneBouncer = currentScene == Scenes.Bouncer
- // This is true when moving away from one of the keyguard scenes to the gone scene.
+ val isOnBouncer = Overlays.Bouncer in currentOverlays
+ // This is true when moving away from the lockscreen scene to the gone scene.
// It happens only when unlocking or when dismissing a dismissible lockscreen.
val isTransitioningAwayFromKeyguard =
transitionState is ObservableTransitionState.Transition.ChangeScene &&
- transitionState.fromScene.isKeyguard() &&
+ transitionState.fromScene == Scenes.Lockscreen &&
transitionState.toScene == Scenes.Gone
// This is true when any of the shade scenes or overlays is the current content.
@@ -144,7 +144,7 @@
// Assume scrim state for shade is already correct and do nothing
null
}
- } else if (isCurrentSceneBouncer && !unlocking) {
+ } else if (isOnBouncer && !unlocking) {
// Bouncer needs the front scrim when it's on top of an activity, tapping on a
// notification, editing QS or being dismissed by
// FLAG_DISMISS_KEYGUARD_ACTIVITY.
@@ -215,10 +215,6 @@
}
}
- private fun SceneKey.isKeyguard(): Boolean {
- return this == Scenes.Lockscreen || this == Scenes.Bouncer
- }
-
private fun ContentKey.isShade(): Boolean {
return this == Scenes.Shade ||
this == Scenes.QuickSettings ||
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/StatusBarStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/StatusBarStartable.kt
index 7d09c45..4c8926a 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/StatusBarStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/StatusBarStartable.kt
@@ -24,6 +24,8 @@
import android.os.RemoteException
import android.provider.DeviceConfig
import android.util.Log
+import com.android.app.tracing.coroutines.launchTraced as launch
+import com.android.compose.animation.scene.OverlayKey
import com.android.compose.animation.scene.SceneKey
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags
import com.android.internal.statusbar.IStatusBarService
@@ -43,14 +45,13 @@
import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
-import com.android.app.tracing.coroutines.launchTraced as launch
import kotlinx.coroutines.withContext
@SysUISingleton
@@ -93,6 +94,7 @@
navigationInteractor.isGesturalMode,
authenticationInteractor.authenticationMethod,
powerInteractor.detailedWakefulness,
+ sceneInteractor.currentOverlays,
) { values ->
val selectedUserId = values[0] as Int
val currentScene = values[1] as SceneKey
@@ -102,8 +104,9 @@
val isGesturalMode = values[5] as Boolean
val authenticationMethod = values[6] as AuthenticationMethodModel
val wakefulnessModel = values[7] as WakefulnessModel
+ val overlays = values[8] as Set<OverlayKey>
- val isForceHideHomeAndRecents = currentScene == Scenes.Bouncer
+ val isForceHideHomeAndRecents = Overlays.Bouncer in overlays
val isKeyguardShowing = !isDeviceEntered
val isPowerGestureIntercepted =
with(wakefulnessModel) {
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/Overlays.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/Overlays.kt
index c47a850..238de4a 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/model/Overlays.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/Overlays.kt
@@ -25,6 +25,12 @@
*/
object Overlays {
/**
+ * The bouncer is the overlay that displays authentication challenges like PIN, password, or
+ * pattern.
+ */
+ @JvmField val Bouncer = OverlayKey("bouncer")
+
+ /**
* The notifications shade overlay primarily shows a scrollable list of notifications.
*
* It's used only in the dual shade configuration, where there are two separate shades: one for
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scenes.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scenes.kt
index 16492ef..8332522 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scenes.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scenes.kt
@@ -24,12 +24,6 @@
* PLEASE KEEP THE KEYS SORTED ALPHABETICALLY.
*/
object Scenes {
- /**
- * The bouncer is the scene that displays authentication challenges like PIN, password, or
- * pattern.
- */
- @JvmField val Bouncer = SceneKey("bouncer")
-
/** The communal scene shows the glanceable hub when device is locked and docked. */
@JvmField val Communal = SceneKey("communal")
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneJankMonitor.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneJankMonitor.kt
index 48a49c6..48a3ded 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneJankMonitor.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneJankMonitor.kt
@@ -27,7 +27,7 @@
import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.Hydrator
-import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Overlays
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
@@ -95,7 +95,7 @@
private fun calculatedCuj(from: ContentKey, to: ContentKey): Int? {
val isDeviceUnlocked = deviceUnlockedInteractor.deviceUnlockStatus.value.isUnlocked
return when {
- to == Scenes.Bouncer ->
+ to == Overlays.Bouncer ->
when (authMethod) {
is AuthenticationMethodModel.Pin,
is AuthenticationMethodModel.Sim -> Cuj.CUJ_LOCKSCREEN_PIN_APPEAR
@@ -104,7 +104,7 @@
is AuthenticationMethodModel.None -> null
null -> null
}
- from == Scenes.Bouncer && isDeviceUnlocked ->
+ from == Overlays.Bouncer && isDeviceUnlocked ->
when (authMethod) {
is AuthenticationMethodModel.Pin,
is AuthenticationMethodModel.Sim -> Cuj.CUJ_LOCKSCREEN_PIN_DISAPPEAR
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
index efdf5be..a81fcec 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
@@ -318,7 +318,7 @@
private fun isInteractionAllowedByFalsing(content: ContentKey): Boolean {
val interactionTypeOrNull =
when (content) {
- Scenes.Bouncer -> Classifier.BOUNCER_UNLOCK
+ Overlays.Bouncer -> Classifier.BOUNCER_UNLOCK
Scenes.Gone -> Classifier.UNLOCK
Scenes.Shade,
Overlays.NotificationsShade -> Classifier.NOTIFICATION_DRAG_DOWN
diff --git a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java
index 34b3324..d058372 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java
@@ -105,14 +105,15 @@
import dalvik.annotation.optimization.NeverCompile;
+import dagger.Lazy;
+
+import kotlin.Unit;
+
import java.io.PrintWriter;
import javax.inject.Inject;
import javax.inject.Provider;
-import dagger.Lazy;
-import kotlin.Unit;
-
/** Handles QuickSettings touch handling, expansion and animation state. */
@SysUISingleton
public class QuickSettingsControllerImpl implements QuickSettingsController, Dumpable {
@@ -2365,16 +2366,8 @@
return;
}
if (startTracing) {
- if (mQs != null) {
- mQs.setQSExpandingOrCollapsing(true);
- }
-
monitor.begin(mPanelView, Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE);
} else {
- if (mQs != null) {
- mQs.setQSExpandingOrCollapsing(false);
- }
-
if (wasCancelled) {
monitor.cancel(Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE);
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModel.kt
index 9655d92..a3bfbbc 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModel.kt
@@ -28,6 +28,7 @@
import com.android.systemui.keyguard.shared.model.KeyguardState.OCCLUDED
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.util.kotlin.BooleanFlowOperators.any
import com.android.systemui.util.kotlin.sample
@@ -92,7 +93,7 @@
val isBouncerShowing: Flow<Boolean> =
when {
SceneContainerFlag.isEnabled -> {
- sceneInteractor.get().transitionState.map { it.isIdle(Scenes.Bouncer) }
+ sceneInteractor.get().transitionState.map { it.isIdle(Overlays.Bouncer) }
}
ComposeBouncerFlags.isOnlyComposeBouncerEnabled() -> primaryBouncerInteractor.isShowing
else ->
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt b/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt
index f30043e..f45971b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt
@@ -45,7 +45,7 @@
private val crossWindowBlurListeners: CrossWindowBlurListeners,
dumpManager: DumpManager
) : Dumpable {
- val minBlurRadius = blurConfig.minBlurRadiusPx
+ val minBlurRadius = resources.getDimensionPixelSize(R.dimen.min_window_blur_radius).toFloat();
val maxBlurRadius = if (Flags.notificationShadeBlur()) {
blurConfig.maxBlurRadiusPx
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
index 6aa2fe2..84266e8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
@@ -38,13 +38,13 @@
import com.android.systemui.Flags.spatialModelAppPushback
import com.android.systemui.animation.ShadeInterpolation
import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dump.DumpManager
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.ShadeExpansionChangeEvent
import com.android.systemui.shade.ShadeExpansionListener
-import com.android.systemui.shared.Flags.ambientAod
import com.android.systemui.statusbar.phone.BiometricUnlockController
import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK
import com.android.systemui.statusbar.phone.DozeParameters
@@ -53,8 +53,11 @@
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.statusbar.policy.SplitShadeStateController
import com.android.systemui.util.WallpaperController
+import com.android.systemui.wallpapers.domain.interactor.WallpaperInteractor
import com.android.systemui.window.domain.interactor.WindowRootViewBlurInteractor
import com.android.wm.shell.appzoomout.AppZoomOut
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.launch
import java.io.PrintWriter
import java.util.Optional
import javax.inject.Inject
@@ -76,12 +79,14 @@
private val keyguardInteractor: KeyguardInteractor,
private val choreographer: Choreographer,
private val wallpaperController: WallpaperController,
+ private val wallpaperInteractor: WallpaperInteractor,
private val notificationShadeWindowController: NotificationShadeWindowController,
private val dozeParameters: DozeParameters,
@ShadeDisplayAware private val context: Context,
private val splitShadeStateController: SplitShadeStateController,
private val windowRootViewBlurInteractor: WindowRootViewBlurInteractor,
private val appZoomOutOptional: Optional<AppZoomOut>,
+ @Application private val applicationScope: CoroutineScope,
dumpManager: DumpManager,
configurationController: ConfigurationController,
) : ShadeExpansionListener, Dumpable {
@@ -110,6 +115,12 @@
private var prevTimestamp: Long = -1
private var prevShadeDirection = 0
private var prevShadeVelocity = 0f
+ private var prevDozeAmount: Float = 0f
+ @VisibleForTesting var wallpaperSupportsAmbientMode: Boolean = false
+ // tracks whether app launch transition is in progress. This involves two independent factors
+ // that control blur, shade expansion and app launch animation from outside sysui.
+ // They can complete out of order, this flag will be reset by the animation that finishes later.
+ private var appLaunchTransitionIsInProgress = false
// Only for dumpsys
private var lastAppliedBlur = 0
@@ -158,6 +169,18 @@
if (field == value) {
return
}
+ // Set this to true now, this will be reset when the next shade expansion finishes or
+ // when the app launch finishes, whichever happens later.
+ if (value) {
+ appLaunchTransitionIsInProgress = true
+ } else {
+ // App was launching and now it has finished launching
+ if (shadeExpansion == 0.0f) {
+ // this means shade expansion finished before app launch was done.
+ // reset the flag here
+ appLaunchTransitionIsInProgress = false
+ }
+ }
field = value
scheduleUpdate()
@@ -172,6 +195,12 @@
shadeAnimation.animateTo(0)
shadeAnimation.finishIfRunning()
}
+ @Deprecated(
+ message =
+ "This might get reset to false before shade expansion is fully done, " +
+ "consider using areBlursDisabledForAppLaunch"
+ )
+ get() = field
private var zoomOutCalculatedFromShadeRadius: Float = 0.0f
@@ -183,6 +212,11 @@
scheduleUpdate()
}
+ private val areBlursDisabledForAppLaunch: Boolean
+ get() =
+ blursDisabledForAppLaunch ||
+ (Flags.bouncerUiRevamp() && appLaunchTransitionIsInProgress)
+
/** Force stop blur effect when necessary. */
private var scrimsVisible: Boolean = false
set(value) {
@@ -192,7 +226,15 @@
}
/** Blur radius of the wake-up animation on this frame. */
- private var wakeAndUnlockBlurRadius = 0f
+ private var wakeBlurRadius = 0f
+ set(value) {
+ if (field == value) return
+ field = value
+ scheduleUpdate()
+ }
+
+ /** Blur radius of the unlock animation on this frame. */
+ private var unlockBlurRadius = 0f
set(value) {
if (field == value) return
field = value
@@ -219,14 +261,16 @@
ShadeInterpolation.getNotificationScrimAlpha(qsPanelExpansion) * shadeExpansion
combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(qsExpandedRatio))
combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(transitionToFullShadeProgress))
- var shadeRadius = max(combinedBlur, wakeAndUnlockBlurRadius)
+ var shadeRadius = max(combinedBlur, max(wakeBlurRadius, unlockBlurRadius))
- if (blursDisabledForAppLaunch || blursDisabledForUnlock) {
+ if (areBlursDisabledForAppLaunch || blursDisabledForUnlock) {
shadeRadius = 0f
}
var blur = shadeRadius.toInt()
- val zoomOut = blurRadiusToZoomOut(blurRadius = shadeRadius)
+ // If the blur comes from waking up, we don't want to zoom out the background
+ val zoomOut =
+ if (shadeRadius != wakeBlurRadius) blurRadiusToZoomOut(blurRadius = shadeRadius) else 0f
// Make blur be 0 if it is necessary to stop blur effect.
if (scrimsVisible) {
if (!Flags.notificationShadeBlur()) {
@@ -259,7 +303,7 @@
private val shouldBlurBeOpaque: Boolean
get() =
if (Flags.notificationShadeBlur()) false
- else scrimsVisible && !blursDisabledForAppLaunch
+ else scrimsVisible && !areBlursDisabledForAppLaunch
/** Callback that updates the window blur value and is called only once per frame. */
@VisibleForTesting
@@ -311,14 +355,14 @@
startDelay = keyguardStateController.keyguardFadingAwayDelay
interpolator = Interpolators.FAST_OUT_SLOW_IN
addUpdateListener { animation: ValueAnimator ->
- wakeAndUnlockBlurRadius =
+ unlockBlurRadius =
blurUtils.blurRadiusOfRatio(animation.animatedValue as Float)
}
addListener(
object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) {
keyguardAnimator = null
- wakeAndUnlockBlurRadius = 0f
+ unlockBlurRadius = 0f
}
}
)
@@ -354,15 +398,20 @@
}
override fun onDozeAmountChanged(linear: Float, eased: Float) {
- wakeAndUnlockBlurRadius =
- if (ambientAod()) {
- 0f
- } else {
- blurUtils.blurRadiusOfRatio(eased)
- }
+ prevDozeAmount = eased
+ updateWakeBlurRadius(prevDozeAmount)
}
}
+ private fun updateWakeBlurRadius(ratio: Float) {
+ wakeBlurRadius =
+ if (!wallpaperSupportsAmbientMode) {
+ 0f
+ } else {
+ blurUtils.blurRadiusOfRatio(ratio)
+ }
+ }
+
init {
dumpManager.registerCriticalDumpable(javaClass.name, this)
if (WAKE_UP_ANIMATION_ENABLED) {
@@ -384,6 +433,12 @@
}
}
)
+ applicationScope.launch {
+ wallpaperInteractor.wallpaperSupportsAmbientMode.collect { supported ->
+ wallpaperSupportsAmbientMode = supported
+ updateWakeBlurRadius(prevDozeAmount)
+ }
+ }
initBlurListeners()
}
@@ -442,6 +497,13 @@
val shadeDirection = sign(diff).toInt()
val shadeVelocity =
MathUtils.constrain(VELOCITY_SCALE * diff / deltaTime, MIN_VELOCITY, MAX_VELOCITY)
+ if (expansion == 0.0f && appLaunchTransitionIsInProgress && !blursDisabledForAppLaunch) {
+ // Shade expansion finished but the app launch is already done, then this should mark
+ // the transition as done.
+ Log.d(TAG, "appLaunchTransitionIsInProgress is now false from shade expansion event")
+ appLaunchTransitionIsInProgress = false
+ }
+
updateShadeAnimationBlur(expansion, tracking, shadeVelocity, shadeDirection)
prevShadeDirection = shadeDirection
@@ -551,8 +613,10 @@
it.println("shouldApplyShadeBlur: ${shouldApplyShadeBlur()}")
it.println("shadeAnimation: ${shadeAnimation.radius}")
it.println("brightnessMirrorRadius: ${brightnessMirrorSpring.radius}")
- it.println("wakeAndUnlockBlur: $wakeAndUnlockBlurRadius")
+ it.println("wakeBlur: $wakeBlurRadius")
+ it.println("unlockBlur: $wakeBlurRadius")
it.println("blursDisabledForAppLaunch: $blursDisabledForAppLaunch")
+ it.println("appLaunchTransitionIsInProgress: $appLaunchTransitionIsInProgress")
it.println("qsPanelExpansion: $qsPanelExpansion")
it.println("transitionToFullShadeProgress: $transitionToFullShadeProgress")
it.println("lastAppliedBlur: $lastAppliedBlur")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
index 0dfc63e..08ecc64 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
@@ -627,7 +627,6 @@
boolean alternateBouncerIsVisible) {
SceneContainerFlag.isUnexpectedlyInLegacyMode();
- final boolean onBouncer = currentScene.equals(Scenes.Bouncer);
final boolean onCommunal = currentScene.equals(Scenes.Communal);
final boolean onGone = currentScene.equals(Scenes.Gone);
final boolean onDream = currentScene.equals(Scenes.Dream);
@@ -635,8 +634,8 @@
final boolean onQuickSettings = currentScene.equals(Scenes.QuickSettings);
final boolean onShade = currentScene.equals(Scenes.Shade);
+ final boolean overlaidBouncer = currentOverlays.contains(Overlays.Bouncer);
final boolean overCommunal = SceneStackKt.contains(backStack, Scenes.Communal);
- final boolean overLockscreen = SceneStackKt.contains(backStack, Scenes.Lockscreen);
final boolean overShade = SceneStackKt.contains(backStack, Scenes.Shade);
final boolean overlaidShade = currentOverlays.contains(Overlays.NotificationsShade);
@@ -669,14 +668,13 @@
// 3. backStack contains a keyguardish scene (Lockscreen or Communal).
// 4. the alternate bouncer is visible.
- final boolean onKeyguardish = onLockscreen || onBouncer || onCommunal;
- final boolean overKeyguardish = overLockscreen || overCommunal;
+ final boolean onKeyguardish = onLockscreen || overlaidBouncer || onCommunal;
if (isOccluded) {
// Occlusion is special; even though the device is still technically on the lockscreen,
// the UI behaves as if it is unlocked.
newState = StatusBarState.SHADE;
- } else if (onKeyguardish || overKeyguardish || alternateBouncerIsVisible) {
+ } else if (onKeyguardish || overCommunal || alternateBouncerIsVisible) {
// We get here if we are on or over a keyguardish scene, even if isUnlocked is true; we
// want to return SHADE_LOCKED or KEYGUARD until we are also neither on nor over a
// keyguardish scene.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChip.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChip.kt
index efd402e..95e454a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChip.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChip.kt
@@ -211,10 +211,6 @@
modifier.size(dimensionResource(id = R.dimen.ongoing_activity_chip_icon_size)),
)
}
-
- // TODO(b/372657935): Add recommended architecture implementation for
- // StatusBarNotificationIcons
- is OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon -> {}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/domain/interactor/StatusBarKeyguardViewManagerInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/domain/interactor/StatusBarKeyguardViewManagerInteractor.kt
index 9ca110e..352d660 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/domain/interactor/StatusBarKeyguardViewManagerInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/domain/interactor/StatusBarKeyguardViewManagerInteractor.kt
@@ -37,10 +37,7 @@
/**
* Whether to set the status bar keyguard view occluded or not, and whether to animate that change.
*/
-data class OccludedState(
- val occluded: Boolean,
- val animate: Boolean = false,
-)
+data class OccludedState(val occluded: Boolean, val animate: Boolean = false)
/** Handles logic around calls to [StatusBarKeyguardViewManager] in legacy code. */
@Deprecated("Will be removed once all of SBKVM's responsibilies are refactored.")
@@ -93,12 +90,12 @@
private val occlusionStateFromFinishedStep =
combine(
keyguardTransitionInteractor.isFinishedIn(
- scene = Scenes.Gone,
+ content = Scenes.Gone,
stateWithoutSceneContainer = KeyguardState.GONE,
),
keyguardTransitionInteractor.isFinishedIn(KeyguardState.OCCLUDED),
keyguardOcclusionInteractor.isShowWhenLockedActivityOnTop,
- ::Triple
+ ::Triple,
)
.map { (isOnGone, isOnOccluded, showWhenLockedOnTop) ->
// If we're FINISHED in OCCLUDED, we want to render as occluded. We also need to
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/media/ui/compose/MediaControlPopup.kt b/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/media/ui/compose/MediaControlPopup.kt
new file mode 100644
index 0000000..80bdb7f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/media/ui/compose/MediaControlPopup.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2025 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.featurepods.media.ui.compose
+
+import android.widget.FrameLayout
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.res.dimensionResource
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.viewinterop.AndroidView
+import com.android.systemui.media.controls.ui.view.MediaHost
+import com.android.systemui.res.R
+
+/** Displays a popup containing media controls. Embeds the MediaCarousel within a Compose popup. */
+@Composable
+fun MediaControlPopup(mediaHost: MediaHost, modifier: Modifier = Modifier) {
+ AndroidView(
+ modifier =
+ modifier
+ .width(400.dp)
+ .height(200.dp)
+ .clip(
+ shape =
+ RoundedCornerShape(dimensionResource(R.dimen.notification_corner_radius))
+ ),
+ factory = { _ ->
+ mediaHost.hostView.apply {
+ layoutParams =
+ FrameLayout.LayoutParams(
+ FrameLayout.LayoutParams.MATCH_PARENT,
+ FrameLayout.LayoutParams.MATCH_PARENT,
+ )
+ }
+ mediaHost.hostView
+ },
+ onReset = {},
+ )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopup.kt b/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopup.kt
index 8a66904..ead5148 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopup.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopup.kt
@@ -28,7 +28,9 @@
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Popup
import androidx.compose.ui.window.PopupProperties
+import com.android.systemui.media.controls.ui.view.MediaHost
import com.android.systemui.res.R
+import com.android.systemui.statusbar.featurepods.media.ui.compose.MediaControlPopup
import com.android.systemui.statusbar.featurepods.popups.shared.model.PopupChipId
import com.android.systemui.statusbar.featurepods.popups.shared.model.PopupChipModel
@@ -37,7 +39,7 @@
* status bar.
*/
@Composable
-fun StatusBarPopup(viewModel: PopupChipModel.Shown) {
+fun StatusBarPopup(viewModel: PopupChipModel.Shown, mediaHost: MediaHost) {
val density = Density(LocalContext.current)
Popup(
properties =
@@ -56,7 +58,7 @@
Box(modifier = Modifier.padding(8.dp).wrapContentSize()) {
when (viewModel.chipId) {
is PopupChipId.MediaControl -> {
- // TODO(b/385202114): Populate MediaControlPopup contents.
+ MediaControlPopup(mediaHost = mediaHost)
}
}
// Future popup types will be handled here.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopupChip.kt b/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopupChip.kt
index eb85d2f..c77decd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopupChip.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopupChip.kt
@@ -16,33 +16,49 @@
package com.android.systemui.statusbar.featurepods.popups.ui.compose
-import androidx.compose.animation.animateContentSize
+import androidx.compose.foundation.LocalIndication
import androidx.compose.foundation.background
+import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
-import androidx.compose.foundation.hoverable
+import androidx.compose.foundation.indication
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.interaction.collectIsHoveredAsState
import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.contentColorFor
+import androidx.compose.material3.minimumInteractiveComponentSize
import androidx.compose.material3.ripple
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.draw.drawWithCache
+import androidx.compose.ui.graphics.BlendMode
+import androidx.compose.ui.graphics.Brush
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.CompositingStrategy
+import androidx.compose.ui.layout.layout
+import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.semantics.Role
-import androidx.compose.ui.text.style.TextOverflow
+import androidx.compose.ui.text.rememberTextMeasurer
+import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.android.compose.modifiers.thenIf
import com.android.systemui.common.ui.compose.Icon
+import com.android.systemui.res.R
import com.android.systemui.statusbar.featurepods.popups.shared.model.HoverBehavior
import com.android.systemui.statusbar.featurepods.popups.shared.model.PopupChipModel
@@ -54,31 +70,48 @@
@Composable
fun StatusBarPopupChip(viewModel: PopupChipModel.Shown, modifier: Modifier = Modifier) {
val hasHoverBehavior = viewModel.hoverBehavior !is HoverBehavior.None
- val hoverInteractionSource = remember { MutableInteractionSource() }
- val isHovered by hoverInteractionSource.collectIsHoveredAsState()
+ val interactionSource = remember { MutableInteractionSource() }
+ val hoveredState by interactionSource.collectIsHoveredAsState()
+ val isHovered = hasHoverBehavior && hoveredState
val isPopupShown = viewModel.isPopupShown
-
+ val indication = if (hoveredState) null else LocalIndication.current
+ val chipShape =
+ RoundedCornerShape(dimensionResource(id = R.dimen.ongoing_activity_chip_corner_radius))
val chipBackgroundColor =
if (isPopupShown) {
- MaterialTheme.colorScheme.primaryContainer
+ MaterialTheme.colorScheme.primary
} else {
- MaterialTheme.colorScheme.surfaceContainerHighest
+ MaterialTheme.colorScheme.surfaceDim
}
- Surface(
- shape = RoundedCornerShape(16.dp),
+
+ // Use a Box with `fillMaxHeight` to create a larger click surface for the chip. The visible
+ // height of the chip is determined by the height of the background of the Row below. The
+ // `indication` for Clicks is applied in the Row below as well.
+ Box(
+ contentAlignment = Alignment.Center,
modifier =
- modifier
- .widthIn(max = 120.dp)
- .padding(vertical = 4.dp)
- .animateContentSize()
- .thenIf(hasHoverBehavior) { Modifier.hoverable(hoverInteractionSource) }
- .thenIf(!isPopupShown) { Modifier.clickable { viewModel.showPopup() } },
- color = chipBackgroundColor,
+ modifier.minimumInteractiveComponentSize().thenIf(!isPopupShown) {
+ Modifier.clickable(
+ onClick = { viewModel.showPopup() },
+ indication = null,
+ interactionSource = interactionSource,
+ )
+ },
) {
Row(
- modifier = Modifier.padding(start = 4.dp, end = 8.dp),
- verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(4.dp),
+ verticalAlignment = Alignment.CenterVertically,
+ modifier =
+ Modifier.height(dimensionResource(R.dimen.ongoing_appops_chip_height))
+ .clip(chipShape)
+ .background(chipBackgroundColor)
+ .border(
+ width = dimensionResource(id = R.dimen.ongoing_activity_chip_outline_width),
+ color = MaterialTheme.colorScheme.outlineVariant,
+ shape = chipShape,
+ )
+ .indication(interactionSource, indication)
+ .padding(start = 4.dp, end = 8.dp),
) {
val iconColor =
if (isHovered) chipBackgroundColor else contentColorFor(chipBackgroundColor)
@@ -92,9 +125,11 @@
else -> viewModel.icon
},
modifier =
- Modifier.thenIf(isHovered) {
- Modifier.padding(3.dp)
- .background(color = iconBackgroundColor, shape = CircleShape)
+ Modifier.height(20.dp)
+ .width(20.dp)
+ .thenIf(isHovered) {
+ Modifier.background(color = iconBackgroundColor, shape = CircleShape)
+ .padding(2.dp)
}
.thenIf(hoverBehavior is HoverBehavior.Button) {
Modifier.clickable(
@@ -102,18 +137,67 @@
onClick = (hoverBehavior as HoverBehavior.Button).onIconPressed,
indication = ripple(),
interactionSource = iconInteractionSource,
+ enabled = isHovered,
)
- }
- .padding(3.dp),
+ },
tint = iconColor,
)
+ val text = viewModel.chipText
+ val textStyle = MaterialTheme.typography.labelLarge
+ val textMeasurer = rememberTextMeasurer()
+ var textOverflow by remember { mutableStateOf(false) }
+
Text(
- text = viewModel.chipText,
- style = MaterialTheme.typography.labelLarge,
+ text = text,
+ style = textStyle,
softWrap = false,
- overflow = TextOverflow.Ellipsis,
+ modifier =
+ Modifier.widthIn(
+ max =
+ dimensionResource(id = R.dimen.ongoing_activity_chip_max_text_width)
+ )
+ .layout { measurables, constraints ->
+ val placeable = measurables.measure(constraints)
+ val intrinsicWidth =
+ textMeasurer.measure(text, textStyle, softWrap = false).size.width
+ textOverflow = intrinsicWidth > constraints.maxWidth
+
+ layout(placeable.width, placeable.height) {
+ if (textOverflow) {
+ placeable.placeWithLayer(0, 0) {
+ compositingStrategy = CompositingStrategy.Offscreen
+ }
+ } else {
+ placeable.place(0, 0)
+ }
+ }
+ }
+ .overflowFadeOut(
+ hasOverflow = { textOverflow },
+ fadeLength =
+ dimensionResource(
+ id = R.dimen.ongoing_activity_chip_text_fading_edge_length
+ ),
+ ),
)
}
}
}
+
+private fun Modifier.overflowFadeOut(hasOverflow: () -> Boolean, fadeLength: Dp): Modifier {
+ return drawWithCache {
+ val width = size.width
+ val start = (width - fadeLength.toPx()).coerceAtLeast(0f)
+ val gradient =
+ Brush.horizontalGradient(
+ colors = listOf(Color.Black, Color.Transparent),
+ startX = start,
+ endX = width,
+ )
+ onDrawWithContent {
+ drawContent()
+ if (hasOverflow()) drawRect(brush = gradient, blendMode = BlendMode.DstIn)
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopupChipsContainer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopupChipsContainer.kt
index 16538c9..f5f1f20 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopupChipsContainer.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/featurepods/popups/ui/compose/StatusBarPopupChipsContainer.kt
@@ -20,14 +20,37 @@
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
+import com.android.systemui.media.controls.ui.view.MediaHost
+import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.statusbar.featurepods.popups.shared.model.PopupChipId
import com.android.systemui.statusbar.featurepods.popups.shared.model.PopupChipModel
/** Container view that holds all right hand side chips in the status bar. */
@Composable
-fun StatusBarPopupChipsContainer(chips: List<PopupChipModel.Shown>, modifier: Modifier = Modifier) {
+fun StatusBarPopupChipsContainer(
+ chips: List<PopupChipModel.Shown>,
+ mediaHost: MediaHost,
+ onMediaControlPopupVisibilityChanged: (Boolean) -> Unit,
+ modifier: Modifier = Modifier,
+) {
+ if (!SceneContainerFlag.isEnabled) {
+ val isMediaControlPopupShown =
+ remember(chips) {
+ chips.any { it.chipId == PopupChipId.MediaControl && it.isPopupShown }
+ }
+
+ LaunchedEffect(isMediaControlPopupShown) {
+ onMediaControlPopupVisibilityChanged(isMediaControlPopupShown)
+ }
+ }
+
// TODO(b/385353140): Add padding and spacing for this container according to UX specs.
Box {
Row(
@@ -37,7 +60,7 @@
chips.forEach { chip ->
StatusBarPopupChip(chip)
if (chip.isPopupShown) {
- StatusBarPopup(chip)
+ StatusBarPopup(viewModel = chip, mediaHost = mediaHost)
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorController.kt
index 383227d..ab40582 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorController.kt
@@ -21,6 +21,7 @@
import com.android.internal.jank.InteractionJankMonitor
import com.android.systemui.animation.ActivityTransitionAnimator
import com.android.systemui.animation.TransitionAnimator
+import com.android.systemui.statusbar.notification.collection.GroupEntry
import com.android.systemui.statusbar.notification.domain.interactor.NotificationLaunchAnimationInteractor
import com.android.systemui.statusbar.notification.headsup.HeadsUpManager
import com.android.systemui.statusbar.notification.headsup.HeadsUpUtil
@@ -157,8 +158,8 @@
private val headsUpNotificationRow: ExpandableNotificationRow?
get() {
- val summaryEntry = notificationEntry.parent?.summary
-
+ val pipelineParent = notificationEntry.parent
+ val summaryEntry = (pipelineParent as? GroupEntry)?.summary
return when {
headsUpManager.isHeadsUpEntry(notificationKey) -> notification
summaryEntry == null -> null
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java
index c6775d6..31bcf2b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java
@@ -26,6 +26,7 @@
import com.android.systemui.res.R;
import com.android.systemui.statusbar.notification.collection.EntryAdapter;
import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.util.Compile;
@@ -80,7 +81,7 @@
private static final boolean INCLUDE_HASH_CODE_IN_LIST_ENTRY_LOG_KEY = false;
/** Get the notification key, reformatted for logging, for the (optional) entry */
- public static String logKey(ListEntry entry) {
+ public static String logKey(PipelineEntry entry) {
if (entry == null) {
return "null";
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.kt
index 432bac4..2c29e30 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.kt
@@ -17,10 +17,10 @@
package com.android.systemui.statusbar.notification
import android.service.notification.StatusBarNotification
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
/** Get the notification key, reformatted for logging, for the (optional) entry */
-val ListEntry?.logKey: String?
+val PipelineEntry?.logKey: String?
get() = this?.let { NotificationUtils.logKey(it) }
/** Get the notification key, reformatted for logging, for the (optional) sbn */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/BundleEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/BundleEntry.java
index 24ab695..35a2828 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/BundleEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/BundleEntry.java
@@ -29,26 +29,54 @@
import androidx.annotation.VisibleForTesting;
import com.android.systemui.statusbar.notification.icon.IconPack;
+import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import java.util.List;
/**
- * Abstract class to represent notification section bundled by AI.
+ * Class to represent notifications bundled by classification.
*/
public class BundleEntry extends PipelineEntry {
- private final String mKey;
private final BundleEntryAdapter mEntryAdapter;
// TODO (b/389839319): implement the row
private ExpandableNotificationRow mRow;
public BundleEntry(String key) {
- mKey = key;
+ super(key);
mEntryAdapter = new BundleEntryAdapter();
}
+ @Nullable
+ @Override
+ public NotificationEntry getRepresentativeEntry() {
+ return null;
+ }
+
+ @Nullable
+ @Override
+ public NotifSection getSection() {
+ return null;
+ }
+
+ @Override
+ public int getSectionIndex() {
+ return 0;
+ }
+
+ @Nullable
+ @Override
+ public PipelineEntry getParent() {
+ return null;
+ }
+
+ @Override
+ public boolean wasAttachedInPreviousPass() {
+ return false;
+ }
+
@VisibleForTesting
public BundleEntryAdapter getEntryAdapter() {
return mEntryAdapter;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/GroupEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/GroupEntry.java
index 918843c..8726e83 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/GroupEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/GroupEntry.java
@@ -75,6 +75,7 @@
return mChildren;
}
+ // TODO(b/394483200) Change ROOT_ENTRY to PipelineEntry
public static final GroupEntry ROOT_ENTRY = new GroupEntry("<root>", 0);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListAttachState.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListAttachState.kt
index b5fce41..4a1b956 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListAttachState.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListAttachState.kt
@@ -21,14 +21,14 @@
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter
/**
- * Stores the state that [ShadeListBuilder] assigns to this [ListEntry]
+ * Stores the state that [ShadeListBuilder] assigns to this [PipelineEntry]
*/
data class ListAttachState private constructor(
/**
* Null if not attached to the current shade list. If top-level, then the shade list root. If
* part of a group, then that group's GroupEntry.
*/
- var parent: GroupEntry?,
+ var parent: PipelineEntry?,
/**
* The section that this ListEntry was sorted into. If the child of the group, this will be the
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListDumper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListDumper.java
index f6a572e..60b75b1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListDumper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListDumper.java
@@ -39,14 +39,14 @@
* entry to be in its current state (ie: filter, lifeExtender)
*/
public static String dumpTree(
- List<ListEntry> entries,
+ List<PipelineEntry> entries,
NotificationInteractionTracker interactionTracker,
boolean includeRecordKeeping,
String indent) {
StringBuilder sb = new StringBuilder();
final String childEntryIndent = indent + INDENT;
for (int topEntryIndex = 0; topEntryIndex < entries.size(); topEntryIndex++) {
- ListEntry entry = entries.get(topEntryIndex);
+ PipelineEntry entry = entries.get(topEntryIndex);
dumpEntry(entry,
Integer.toString(topEntryIndex),
indent,
@@ -106,7 +106,7 @@
}
private static void dumpEntry(
- ListEntry entry,
+ PipelineEntry entry,
String index,
String indent,
StringBuilder sb,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListEntry.java
index c8e3be4..697d0a0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListEntry.java
@@ -21,28 +21,18 @@
import androidx.annotation.Nullable;
-import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection;
-
/**
* Abstract superclass for top-level entries, i.e. things that can appear in the final notification
* list shown to users. In practice, this means either GroupEntries or NotificationEntries.
*/
public abstract class ListEntry extends PipelineEntry {
- private final String mKey;
private final long mCreationTime;
- private final ListAttachState mPreviousAttachState = ListAttachState.create();
- private final ListAttachState mAttachState = ListAttachState.create();
-
protected ListEntry(String key, long creationTime) {
- mKey = key;
+ super(key);
mCreationTime = creationTime;
}
- public String getKey() {
- return mKey;
- }
-
/**
* The SystemClock.uptimeMillis() when this object was created. In general, this means the
* moment when NotificationManager notifies our listener about the existence of this entry.
@@ -64,34 +54,22 @@
*/
public abstract @Nullable NotificationEntry getRepresentativeEntry();
- @Nullable public GroupEntry getParent() {
+ @Nullable public PipelineEntry getParent() {
return mAttachState.getParent();
}
- void setParent(@Nullable GroupEntry parent) {
+ void setParent(@Nullable PipelineEntry parent) {
mAttachState.setParent(parent);
}
- @Nullable public GroupEntry getPreviousParent() {
+ @Nullable public PipelineEntry getPreviousParent() {
return mPreviousAttachState.getParent();
}
- @Nullable public NotifSection getSection() {
- return mAttachState.getSection();
- }
-
public int getSectionIndex() {
return mAttachState.getSection() != null ? mAttachState.getSection().getIndex() : -1;
}
- ListAttachState getAttachState() {
- return mAttachState;
- }
-
- ListAttachState getPreviousAttachState() {
- return mPreviousAttachState;
- }
-
/**
* Stores the current attach state into {@link #getPreviousAttachState()}} and then starts a
* fresh attach state (all entries will be null/default-initialized).
@@ -100,11 +78,4 @@
mPreviousAttachState.clone(mAttachState);
mAttachState.reset();
}
-
- /**
- * True if this entry was attached in the last pass, else false.
- */
- public boolean wasAttachedInPreviousPass() {
- return getPreviousAttachState().getParent() != null;
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
index 698a563..e5b72d4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
@@ -305,8 +305,10 @@
if (isTopLevelEntry() || getParent() == null) {
return null;
}
- if (NotificationEntry.this.getParent().getSummary() != null) {
- return NotificationEntry.this.getParent().getSummary().mEntryAdapter;
+ if (NotificationEntry.this.getParent() instanceof GroupEntry parentGroupEntry) {
+ if (parentGroupEntry.getSummary() != null) {
+ return parentGroupEntry.getSummary().mEntryAdapter;
+ }
}
return null;
}
@@ -588,7 +590,7 @@
* Get the children that are actually attached to this notification's row.
*
* TODO: Seems like most callers here should probably be using
- * {@link GroupMembershipManager#getChildren(ListEntry)}
+ * {@link GroupMembershipManager#getChildren(PipelineEntry)}
*/
public @Nullable List<NotificationEntry> getAttachedNotifChildren() {
if (row == null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.java
index c5a4791..78652cc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.java
@@ -16,8 +16,74 @@
package com.android.systemui.statusbar.notification.collection;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection;
+
/**
* Class to represent a notification, group, or bundle in the pipeline.
*/
public abstract class PipelineEntry {
+
+ final String mKey;
+ final ListAttachState mAttachState = ListAttachState.create();
+ final ListAttachState mPreviousAttachState = ListAttachState.create();
+
+ public PipelineEntry(String key) {
+ this.mKey = key;
+ }
+
+ /**
+ * Key of the representative entry.
+ */
+ public @NonNull String getKey() {
+ return mKey;
+ }
+
+ /**
+ * @return The representative NotificationEntry:
+ * for NotificationEntry, return itself
+ * for GroupEntry, return the summary NotificationEntry, or null if it does not exist
+ * for BundleEntry, return null
+ */
+ public abstract @Nullable NotificationEntry getRepresentativeEntry();
+
+ /**
+ * @return NotifSection that ShadeListBuilder assigned to this PipelineEntry.
+ */
+ @Nullable public NotifSection getSection() {
+ return mAttachState.getSection();
+ }
+
+ /**
+ * @return True if this entry was attached in the last pass, else false.
+ */
+ public boolean wasAttachedInPreviousPass() {
+ return getPreviousAttachState().getParent() != null;
+ }
+
+ /**
+ * @return Index of section assigned to this entry.
+ */
+ public abstract int getSectionIndex();
+
+ /**
+ * @return Parent PipelineEntry
+ */
+ public abstract @Nullable PipelineEntry getParent();
+
+ /**
+ * @return Current state that ShadeListBuilder assigned to this PipelineEntry.
+ */
+ final ListAttachState getAttachState() {
+ return mAttachState;
+ }
+
+ /**
+ * @return Previous state that ShadeListBuilder assigned to this PipelineEntry.
+ */
+ final ListAttachState getPreviousAttachState() {
+ return mPreviousAttachState;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
index ac11c15..bb84ab8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
@@ -100,15 +100,15 @@
private final DumpManager mDumpManager;
// used exclusivly by ShadeListBuilder#notifySectionEntriesUpdated
// TODO replace temp with collection pool for readability
- private final ArrayList<ListEntry> mTempSectionMembers = new ArrayList<>();
+ private final ArrayList<PipelineEntry> mTempSectionMembers = new ArrayList<>();
private NotifPipelineFlags mFlags;
private final boolean mAlwaysLogList;
- private List<ListEntry> mNotifList = new ArrayList<>();
- private List<ListEntry> mNewNotifList = new ArrayList<>();
+ private List<PipelineEntry> mNotifList = new ArrayList<>();
+ private List<PipelineEntry> mNewNotifList = new ArrayList<>();
private final SemiStableSort mSemiStableSort = new SemiStableSort();
- private final StableOrder<ListEntry> mStableOrder = this::getStableOrderRank;
+ private final StableOrder<PipelineEntry> mStableOrder = this::getStableOrderRank;
private final PipelineState mPipelineState = new PipelineState();
private final Map<String, GroupEntry> mGroups = new ArrayMap<>();
private Collection<NotificationEntry> mAllEntries = Collections.emptyList();
@@ -133,8 +133,8 @@
mOnBeforeRenderListListeners = new NamedListenerSet<>();
@Nullable private OnRenderListListener mOnRenderListListener;
- private List<ListEntry> mReadOnlyNotifList = Collections.unmodifiableList(mNotifList);
- private List<ListEntry> mReadOnlyNewNotifList = Collections.unmodifiableList(mNewNotifList);
+ private List<PipelineEntry> mReadOnlyNotifList = Collections.unmodifiableList(mNotifList);
+ private List<PipelineEntry> mReadOnlyNewNotifList = Collections.unmodifiableList(mNewNotifList);
private final NotifPipelineChoreographer mChoreographer;
private int mConsecutiveReentrantRebuilds = 0;
@@ -308,7 +308,7 @@
}
}
- List<ListEntry> getShadeList() {
+ List<PipelineEntry> getShadeList() {
Assert.isMainThread();
// NOTE: Accessing this method when the pipeline is running is generally going to provide
// incorrect results, and indicates a poorly behaved component of the pipeline.
@@ -493,7 +493,7 @@
Trace.beginSection("ShadeListBuilder.notifySectionEntriesUpdated");
mTempSectionMembers.clear();
for (NotifSection section : mNotifSections) {
- for (ListEntry entry : mNotifList) {
+ for (PipelineEntry entry : mNotifList) {
if (section == entry.getSection()) {
mTempSectionMembers.add(entry);
}
@@ -514,11 +514,11 @@
*/
private void applyNewNotifList() {
mNotifList.clear();
- List<ListEntry> emptyList = mNotifList;
+ List<PipelineEntry> emptyList = mNotifList;
mNotifList = mNewNotifList;
mNewNotifList = emptyList;
- List<ListEntry> readOnlyNotifList = mReadOnlyNotifList;
+ List<PipelineEntry> readOnlyNotifList = mReadOnlyNotifList;
mReadOnlyNotifList = mReadOnlyNewNotifList;
mReadOnlyNewNotifList = readOnlyNotifList;
}
@@ -538,12 +538,12 @@
}
private void filterNotifs(
- Collection<? extends ListEntry> entries,
- List<ListEntry> out,
+ Collection<? extends PipelineEntry> entries,
+ List<PipelineEntry> out,
List<NotifFilter> filters) {
Trace.beginSection("ShadeListBuilder.filterNotifs");
final long now = mSystemClock.uptimeMillis();
- for (ListEntry entry : entries) {
+ for (PipelineEntry entry : entries) {
if (entry instanceof GroupEntry) {
final GroupEntry groupEntry = (GroupEntry) entry;
@@ -576,11 +576,11 @@
Trace.endSection();
}
- private void groupNotifs(List<ListEntry> entries, List<ListEntry> out) {
+ private void groupNotifs(List<PipelineEntry> entries, List<PipelineEntry> out) {
Trace.beginSection("ShadeListBuilder.groupNotifs");
- for (ListEntry listEntry : entries) {
+ for (PipelineEntry PipelineEntry : entries) {
// since grouping hasn't happened yet, all notifs are NotificationEntries
- NotificationEntry entry = (NotificationEntry) listEntry;
+ NotificationEntry entry = (NotificationEntry) PipelineEntry;
if (entry.getSbn().isGroup()) {
final String topLevelKey = entry.getSbn().getGroupKey();
@@ -631,14 +631,14 @@
Trace.endSection();
}
- private void stabilizeGroupingNotifs(List<ListEntry> topLevelList) {
+ private void stabilizeGroupingNotifs(List<PipelineEntry> topLevelList) {
if (getStabilityManager().isEveryChangeAllowed()) {
return;
}
Trace.beginSection("ShadeListBuilder.stabilizeGroupingNotifs");
for (int i = 0; i < topLevelList.size(); i++) {
- final ListEntry tle = topLevelList.get(i);
+ final PipelineEntry tle = topLevelList.get(i);
if (tle instanceof GroupEntry) {
// maybe put children back into their old group (including moving back to top-level)
GroupEntry groupEntry = (GroupEntry) tle;
@@ -667,13 +667,13 @@
/**
* Returns true if the group change was suppressed, else false
*/
- private boolean maybeSuppressGroupChange(NotificationEntry entry, List<ListEntry> out) {
- final GroupEntry prevParent = entry.getPreviousAttachState().getParent();
+ private boolean maybeSuppressGroupChange(NotificationEntry entry, List<PipelineEntry> out) {
+ final PipelineEntry prevParent = entry.getPreviousAttachState().getParent();
if (prevParent == null) {
// New entries are always allowed.
return false;
}
- final GroupEntry assignedParent = entry.getParent();
+ final PipelineEntry assignedParent = entry.getParent();
if (prevParent == assignedParent) {
// Nothing to change.
return false;
@@ -691,21 +691,22 @@
entry.setParent(prevParent);
if (prevParent == ROOT_ENTRY) {
out.add(entry);
- } else {
- prevParent.addChild(entry);
+ } else if (prevParent instanceof GroupEntry) {
+ ((GroupEntry) prevParent).addChild(entry);
if (!mGroups.containsKey(prevParent.getKey())) {
- mGroups.put(prevParent.getKey(), prevParent);
+ mGroups.put(prevParent.getKey(), (GroupEntry) prevParent);
}
}
+ // TODO(b/394483200): Revisit group stability for BundleEntry
return true;
}
return false;
}
- private void promoteNotifs(List<ListEntry> list) {
+ private void promoteNotifs(List<PipelineEntry> list) {
Trace.beginSection("ShadeListBuilder.promoteNotifs");
for (int i = 0; i < list.size(); i++) {
- final ListEntry tle = list.get(i);
+ final PipelineEntry tle = list.get(i);
if (tle instanceof GroupEntry) {
final GroupEntry group = (GroupEntry) tle;
@@ -725,7 +726,7 @@
Trace.endSection();
}
- private void pruneIncompleteGroups(List<ListEntry> shadeList) {
+ private void pruneIncompleteGroups(List<PipelineEntry> shadeList) {
Trace.beginSection("ShadeListBuilder.pruneIncompleteGroups");
// Any group which lost a child on this run to stability is exempt from being pruned or
// having its summary promoted, regardless of how many children it has
@@ -742,7 +743,7 @@
// Iterate backwards, so that we can remove elements without affecting indices of
// yet-to-be-accessed entries.
for (int i = shadeList.size() - 1; i >= 0; i--) {
- final ListEntry tle = shadeList.get(i);
+ final PipelineEntry tle = shadeList.get(i);
if (tle instanceof GroupEntry) {
final GroupEntry group = (GroupEntry) tle;
@@ -793,7 +794,7 @@
Trace.endSection();
}
- private void pruneGroupAtIndexAndPromoteSummary(List<ListEntry> shadeList,
+ private void pruneGroupAtIndexAndPromoteSummary(List<PipelineEntry> shadeList,
GroupEntry group, int index) {
// Validate that the group has no children
checkArgument(group.getChildren().isEmpty(), "group should have no children");
@@ -801,7 +802,7 @@
NotificationEntry summary = group.getSummary();
summary.setParent(ROOT_ENTRY);
// The list may be sorted; replace the group with the summary, in its place
- ListEntry oldEntry = shadeList.set(index, summary);
+ PipelineEntry oldEntry = shadeList.set(index, summary);
// Validate that the replaced entry was the group entry
checkState(oldEntry == group);
@@ -812,10 +813,10 @@
"SUMMARY with no children @ " + mPipelineState.getStateName());
}
- private void pruneGroupAtIndexAndPromoteAnyChildren(List<ListEntry> shadeList,
+ private void pruneGroupAtIndexAndPromoteAnyChildren(List<PipelineEntry> shadeList,
GroupEntry group, int index) {
// REMOVE the GroupEntry at this index
- ListEntry oldEntry = shadeList.remove(index);
+ PipelineEntry oldEntry = shadeList.remove(index);
// Validate that the replaced entry was the group entry
checkState(oldEntry == group);
@@ -868,14 +869,14 @@
* top level (ungrouped) notifications.
*/
@NonNull
- private Set<String> getGroupsWithChildrenLostToStability(List<ListEntry> shadeList) {
+ private Set<String> getGroupsWithChildrenLostToStability(List<PipelineEntry> shadeList) {
if (getStabilityManager().isEveryChangeAllowed()) {
return Collections.emptySet();
}
ArraySet<String> groupsWithChildrenLostToStability = new ArraySet<>();
for (int i = 0; i < shadeList.size(); i++) {
- final ListEntry tle = shadeList.get(i);
- final GroupEntry suppressedParent =
+ final PipelineEntry tle = shadeList.get(i);
+ final PipelineEntry suppressedParent =
tle.getAttachState().getSuppressedChanges().getParent();
if (suppressedParent != null) {
// This top-level-entry was supposed to be attached to this group,
@@ -892,9 +893,10 @@
*
* These groups will be exempt from appearing without any children.
*/
- private void addGroupsWithChildrenLostToPromotion(List<ListEntry> shadeList, Set<String> out) {
+ private void addGroupsWithChildrenLostToPromotion(List<PipelineEntry> shadeList,
+ Set<String> out) {
for (int i = 0; i < shadeList.size(); i++) {
- final ListEntry tle = shadeList.get(i);
+ final PipelineEntry tle = shadeList.get(i);
if (tle.getAttachState().getPromoter() != null) {
// This top-level-entry was part of a group, but was promoted out of it.
final String groupKey = tle.getRepresentativeEntry().getSbn().getGroupKey();
@@ -910,7 +912,7 @@
* These groups will be exempt from appearing without any children.
*/
private void addGroupsWithChildrenLostToFiltering(Set<String> out) {
- for (ListEntry tle : mAllEntries) {
+ for (PipelineEntry tle : mAllEntries) {
StatusBarNotification sbn = tle.getRepresentativeEntry().getSbn();
if (sbn.isGroup()
&& !sbn.getNotification().isGroupSummary()
@@ -921,14 +923,14 @@
}
/**
- * If a ListEntry was added to the shade list and then later removed (e.g. because it was a
+ * If a PipelineEntry was added to the shade list and then later removed (e.g. because it was a
* group that was broken up), this method will erase any bookkeeping traces of that addition
* and/or check that they were already erased.
*
* Before calling this method, the entry must already have been removed from its parent. If
* it's a group, its summary must be null and its children must be empty.
*/
- private void annulAddition(ListEntry entry, List<ListEntry> shadeList) {
+ private void annulAddition(PipelineEntry entry, List<PipelineEntry> shadeList) {
// This function does very little, but if any of its assumptions are violated (and it has a
// lot of them), it will put the system into an inconsistent state. So we check all of them
@@ -956,9 +958,11 @@
throw new IllegalStateException(
"Cannot nullify group " + ge.getKey() + ": still has children");
}
- } else if (entry instanceof NotificationEntry) {
- if (entry == entry.getParent().getSummary()
- || entry.getParent().getChildren().contains(entry)) {
+ } else if (entry instanceof NotificationEntry
+ && entry.getParent() instanceof GroupEntry) {
+ GroupEntry parentGroupEntry = (GroupEntry) entry.getParent();
+ if (entry == parentGroupEntry.getSummary()
+ || parentGroupEntry.getChildren().contains(entry)) {
throw new IllegalStateException("Cannot nullify addition of child "
+ entry.getKey() + ": it's still attached to its parent.");
}
@@ -973,14 +977,14 @@
* This can happen if the entry is removed from a group that was broken up or if the entry was
* filtered out during any of the filtering steps.
*/
- private void annulAddition(ListEntry entry) {
+ private void annulAddition(PipelineEntry entry) {
entry.getAttachState().detach();
}
private void assignSections() {
Trace.beginSection("ShadeListBuilder.assignSections");
// Assign sections to top-level elements and their children
- for (ListEntry entry : mNotifList) {
+ for (PipelineEntry entry : mNotifList) {
NotifSection section = applySections(entry);
if (entry instanceof GroupEntry) {
GroupEntry parent = (GroupEntry) entry;
@@ -1001,7 +1005,7 @@
private void sortWithSemiStableSort() {
// Sort each group's children
boolean allSorted = true;
- for (ListEntry entry : mNotifList) {
+ for (PipelineEntry entry : mNotifList) {
if (entry instanceof GroupEntry) {
GroupEntry parent = (GroupEntry) entry;
allSorted &= sortGroupChildren(parent.getRawChildren());
@@ -1010,7 +1014,7 @@
// Sort each section within the top level list
mNotifList.sort(mTopLevelComparator);
if (!getStabilityManager().isEveryChangeAllowed()) {
- for (List<ListEntry> subList : getSectionSubLists(mNotifList)) {
+ for (List<PipelineEntry> subList : getSectionSubLists(mNotifList)) {
allSorted &= mSemiStableSort.stabilizeTo(subList, mStableOrder, mNewNotifList);
}
applyNewNotifList();
@@ -1022,7 +1026,7 @@
}
}
- private Iterable<List<ListEntry>> getSectionSubLists(List<ListEntry> entries) {
+ private Iterable<List<PipelineEntry>> getSectionSubLists(List<PipelineEntry> entries) {
return ShadeListBuilderHelper.INSTANCE.getSectionSubLists(entries);
}
@@ -1057,12 +1061,12 @@
/**
* Assign the index of each notification relative to the total order
*/
- private void assignIndexes(List<ListEntry> notifList) {
+ private void assignIndexes(List<PipelineEntry> notifList) {
if (notifList.size() == 0) return;
NotifSection currentSection = requireNonNull(notifList.get(0).getSection());
int sectionMemberIndex = 0;
for (int i = 0; i < notifList.size(); i++) {
- final ListEntry entry = notifList.get(i);
+ final PipelineEntry entry = notifList.get(i);
NotifSection section = requireNonNull(entry.getSection());
if (section.getIndex() != currentSection.getIndex()) {
sectionMemberIndex = 0;
@@ -1099,7 +1103,7 @@
Trace.endSection();
}
- private void logAttachStateChanges(ListEntry entry) {
+ private void logAttachStateChanges(PipelineEntry entry) {
final ListAttachState curr = entry.getAttachState();
final ListAttachState prev = entry.getPreviousAttachState();
@@ -1115,8 +1119,8 @@
mLogger.logParentChanged(mIterationCount, prev.getParent(), curr.getParent());
}
- GroupEntry currSuppressedParent = curr.getSuppressedChanges().getParent();
- GroupEntry prevSuppressedParent = prev.getSuppressedChanges().getParent();
+ PipelineEntry currSuppressedParent = curr.getSuppressedChanges().getParent();
+ PipelineEntry prevSuppressedParent = prev.getSuppressedChanges().getParent();
if (currSuppressedParent != null && (prevSuppressedParent == null
|| !prevSuppressedParent.getKey().equals(currSuppressedParent.getKey()))) {
mLogger.logParentChangeSuppressedStarted(
@@ -1210,7 +1214,7 @@
@Nullable
private NotifComparator getSectionComparator(
- @NonNull ListEntry o1, @NonNull ListEntry o2) {
+ @NonNull PipelineEntry o1, @NonNull PipelineEntry o2) {
final NotifSection section = o1.getSection();
if (section != o2.getSection()) {
throw new RuntimeException("Entry ordering should only be done within sections");
@@ -1221,7 +1225,7 @@
return null;
}
- private final Comparator<ListEntry> mTopLevelComparator = (o1, o2) -> {
+ private final Comparator<PipelineEntry> mTopLevelComparator = (o1, o2) -> {
int cmp = Integer.compare(
o1.getSectionIndex(),
o2.getSectionIndex());
@@ -1264,7 +1268,7 @@
};
@Nullable
- private Integer getStableOrderRank(ListEntry entry) {
+ private Integer getStableOrderRank(PipelineEntry entry) {
if (getStabilityManager().isEntryReorderingAllowed(entry)) {
// let the stability manager constrain or allow reordering
return null;
@@ -1323,7 +1327,7 @@
return null;
}
- private NotifSection applySections(ListEntry entry) {
+ private NotifSection applySections(PipelineEntry entry) {
final NotifSection newSection = findSection(entry);
final ListAttachState prevAttachState = entry.getPreviousAttachState();
@@ -1346,7 +1350,7 @@
return finalSection;
}
- private void setEntrySection(ListEntry entry, NotifSection finalSection) {
+ private void setEntrySection(PipelineEntry entry, NotifSection finalSection) {
entry.getAttachState().setSection(finalSection);
NotificationEntry representativeEntry = entry.getRepresentativeEntry();
if (representativeEntry != null) {
@@ -1358,7 +1362,7 @@
}
@NonNull
- private NotifSection findSection(ListEntry entry) {
+ private NotifSection findSection(PipelineEntry entry) {
for (int i = 0; i < mNotifSections.size(); i++) {
NotifSection section = mNotifSections.get(i);
if (section.getSectioner().isInSection(entry)) {
@@ -1428,10 +1432,10 @@
mChoreographer.schedule();
}
- private static int countChildren(List<ListEntry> entries) {
+ private static int countChildren(List<PipelineEntry> entries) {
int count = 0;
for (int i = 0; i < entries.size(); i++) {
- final ListEntry entry = entries.get(i);
+ final PipelineEntry entry = entries.get(i);
if (entry instanceof GroupEntry) {
count += ((GroupEntry) entry).getChildren().size();
}
@@ -1439,7 +1443,7 @@
return count;
}
- private void dispatchOnBeforeTransformGroups(List<ListEntry> entries) {
+ private void dispatchOnBeforeTransformGroups(List<PipelineEntry> entries) {
Trace.beginSection("ShadeListBuilder.dispatchOnBeforeTransformGroups");
mOnBeforeTransformGroupsListeners.forEachTraced(listener -> {
listener.onBeforeTransformGroups(entries);
@@ -1447,7 +1451,7 @@
Trace.endSection();
}
- private void dispatchOnBeforeSort(List<ListEntry> entries) {
+ private void dispatchOnBeforeSort(List<PipelineEntry> entries) {
Trace.beginSection("ShadeListBuilder.dispatchOnBeforeSort");
mOnBeforeSortListeners.forEachTraced(listener -> {
listener.onBeforeSort(entries);
@@ -1455,7 +1459,7 @@
Trace.endSection();
}
- private void dispatchOnBeforeFinalizeFilter(List<ListEntry> entries) {
+ private void dispatchOnBeforeFinalizeFilter(List<PipelineEntry> entries) {
Trace.beginSection("ShadeListBuilder.dispatchOnBeforeFinalizeFilter");
mOnBeforeFinalizeFilterListeners.forEachTraced(listener -> {
listener.onBeforeFinalizeFilter(entries);
@@ -1463,7 +1467,7 @@
Trace.endSection();
}
- private void dispatchOnBeforeRenderList(List<ListEntry> entries) {
+ private void dispatchOnBeforeRenderList(List<PipelineEntry> entries) {
Trace.beginSection("ShadeListBuilder.dispatchOnBeforeRenderList");
mOnBeforeRenderListListeners.forEachTraced(listener -> {
listener.onBeforeRenderList(entries);
@@ -1508,13 +1512,13 @@
* @param entries A read-only view into the current notif list. Note that this list is
* backed by the live list and will change in response to new pipeline runs.
*/
- void onRenderList(@NonNull List<ListEntry> entries);
+ void onRenderList(@NonNull List<PipelineEntry> entries);
}
private static final NotifSectioner DEFAULT_SECTIONER = new NotifSectioner("UnknownSection",
NotificationPriorityBucketKt.BUCKET_UNKNOWN) {
@Override
- public boolean isInSection(ListEntry entry) {
+ public boolean isInSection(PipelineEntry entry) {
return true;
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/SuppressedAttachState.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/SuppressedAttachState.kt
index 584563b..c942954 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/SuppressedAttachState.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/SuppressedAttachState.kt
@@ -19,7 +19,7 @@
import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection
/**
- * Stores the suppressed state that [ShadeListBuilder] assigned to this [ListEntry] before the
+ * Stores the suppressed state that [ShadeListBuilder] assigned to this [PipelineEntry] before the
* VisualStabilityManager suppressed group and section changes.
*/
data class SuppressedAttachState private constructor(
@@ -35,7 +35,7 @@
* - Root if suppressing group change to top-level
* - GroupEntry if suppressing group change to a different group
*/
- var parent: GroupEntry?,
+ var parent: PipelineEntry?,
/**
* Whether the ListEntry would have been pruned had its group change not been suppressed.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BundleCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BundleCoordinator.kt
index 244c594..e6d5f41 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BundleCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BundleCoordinator.kt
@@ -20,7 +20,7 @@
import android.app.NotificationChannel.PROMOTIONS_ID
import android.app.NotificationChannel.RECS_ID
import android.app.NotificationChannel.SOCIAL_MEDIA_ID
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
@@ -48,7 +48,7 @@
val newsSectioner =
object : NotifSectioner("News", BUCKET_NEWS) {
- override fun isInSection(entry: ListEntry): Boolean {
+ override fun isInSection(entry: PipelineEntry): Boolean {
return entry.representativeEntry?.channel?.id == NEWS_ID
}
@@ -59,7 +59,7 @@
val socialSectioner =
object : NotifSectioner("Social", BUCKET_SOCIAL) {
- override fun isInSection(entry: ListEntry): Boolean {
+ override fun isInSection(entry: PipelineEntry): Boolean {
return entry.representativeEntry?.channel?.id == SOCIAL_MEDIA_ID
}
@@ -70,7 +70,7 @@
val recsSectioner =
object : NotifSectioner("Recommendations", BUCKET_RECS) {
- override fun isInSection(entry: ListEntry): Boolean {
+ override fun isInSection(entry: PipelineEntry): Boolean {
return entry.representativeEntry?.channel?.id == RECS_ID
}
@@ -81,7 +81,7 @@
val promoSectioner =
object : NotifSectioner("Promotions", BUCKET_PROMO) {
- override fun isInSection(entry: ListEntry): Boolean {
+ override fun isInSection(entry: PipelineEntry): Boolean {
return entry.representativeEntry?.channel?.id == PROMOTIONS_ID
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java
index 9df4bf4..afba85b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java
@@ -25,6 +25,7 @@
import com.android.systemui.dagger.qualifiers.Application;
import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope;
@@ -96,7 +97,7 @@
private final NotifSectioner mNotifSectioner = new NotifSectioner("ColorizedSectioner",
NotificationPriorityBucketKt.BUCKET_FOREGROUND_SERVICE) {
@Override
- public boolean isInSection(ListEntry entry) {
+ public boolean isInSection(PipelineEntry entry) {
NotificationEntry notificationEntry = entry.getRepresentativeEntry();
if (notificationEntry != null) {
return isRichOngoing(notificationEntry);
@@ -117,7 +118,7 @@
private final NotifComparator mOngoingComparator = new NotifComparator(
"OngoingComparator") {
@Override
- public int compare(@NonNull ListEntry o1, @NonNull ListEntry o2) {
+ public int compare(@NonNull PipelineEntry o1, @NonNull PipelineEntry o2) {
return Integer.compare(
getSortKey(o1.getRepresentativeEntry()),
getSortKey(o2.getRepresentativeEntry())
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt
index af2c197..248b528 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt
@@ -16,7 +16,8 @@
package com.android.systemui.statusbar.notification.collection.coordinator
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.GroupEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.SortBySectionTimeFlag
@@ -61,6 +62,7 @@
originalGroup == null -> null
originalGroup == promoted.parent -> null
originalGroup.parent == null -> null
+ originalGroup !is GroupEntry -> summary.key
originalGroup.summary != summary -> null
originalGroup.children.any { it.channel == summary.channel } -> null
else -> summary.key
@@ -74,7 +76,7 @@
override fun shouldPromoteToTopLevel(entry: NotificationEntry): Boolean {
val shouldPromote = entry.channel?.isImportantConversation == true
if (shouldPromote) {
- val summary = entry.parent?.summary
+ val summary = (entry.parent as? GroupEntry)?.summary
if (summary != null && entry.channel == summary.channel) {
promotedEntriesToSummaryOfSameChannel[entry] = summary
}
@@ -85,14 +87,14 @@
val priorityPeopleSectioner =
object : NotifSectioner("Priority People", BUCKET_PRIORITY_PEOPLE) {
- override fun isInSection(entry: ListEntry): Boolean {
+ override fun isInSection(entry: PipelineEntry): Boolean {
return getPeopleType(entry) == TYPE_IMPORTANT_PERSON
}
}
// TODO(b/330193582): Rename to just "People"
val peopleAlertingSectioner = object : NotifSectioner("People(alerting)", BUCKET_PEOPLE) {
- override fun isInSection(entry: ListEntry): Boolean {
+ override fun isInSection(entry: PipelineEntry): Boolean {
if (SortBySectionTimeFlag.isEnabled) {
return highPriorityProvider.isHighPriorityConversation(entry)
|| isConversation(entry)
@@ -111,7 +113,7 @@
val peopleSilentSectioner = object : NotifSectioner("People(silent)", BUCKET_PEOPLE) {
// Because the peopleAlertingSectioner is above this one, it will claim all conversations that are alerting.
// All remaining conversations must be silent.
- override fun isInSection(entry: ListEntry): Boolean {
+ override fun isInSection(entry: PipelineEntry): Boolean {
SortBySectionTimeFlag.assertInLegacyMode()
return isConversation(entry)
}
@@ -132,17 +134,17 @@
pipeline.addOnBeforeRenderListListener(onBeforeRenderListListener)
}
- private fun isConversation(entry: ListEntry): Boolean =
+ private fun isConversation(entry: PipelineEntry): Boolean =
getPeopleType(entry) != TYPE_NON_PERSON
@PeopleNotificationType
- private fun getPeopleType(entry: ListEntry): Int =
+ private fun getPeopleType(entry: PipelineEntry): Int =
entry.representativeEntry?.let {
peopleNotificationIdentifier.getPeopleNotificationType(it)
} ?: TYPE_NON_PERSON
private val notifComparator: NotifComparator = object : NotifComparator("People") {
- override fun compare(entry1: ListEntry, entry2: ListEntry): Int {
+ override fun compare(entry1: PipelineEntry, entry2: PipelineEntry): Int {
val type1 = getPeopleType(entry1)
val type2 = getPeopleType(entry2)
return type2.compareTo(type1)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinator.kt
index 034a4fd..e4ec76c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinator.kt
@@ -17,7 +17,7 @@
package com.android.systemui.statusbar.notification.collection.coordinator
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifLiveDataStoreImpl
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
@@ -43,12 +43,12 @@
d.dump("notifLiveDataStoreImpl", notifLiveDataStoreImpl)
}
- private fun onAfterRenderList(entries: List<ListEntry>) {
+ private fun onAfterRenderList(entries: List<PipelineEntry>) {
val flatEntryList = flattenedEntryList(entries)
notifLiveDataStoreImpl.setActiveNotifList(flatEntryList)
}
- private fun flattenedEntryList(entries: List<ListEntry>) =
+ private fun flattenedEntryList(entries: List<PipelineEntry>) =
mutableListOf<NotificationEntry>().also { list ->
entries.forEach { entry ->
when (entry) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DismissibilityCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DismissibilityCoordinator.kt
index 0a9dddc..6bed0cf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DismissibilityCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DismissibilityCoordinator.kt
@@ -17,7 +17,7 @@
package com.android.systemui.statusbar.notification.collection.coordinator
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProviderImpl
@@ -37,7 +37,7 @@
pipeline.addOnBeforeRenderListListener(::onBeforeRenderListListener)
}
- private fun onBeforeRenderListListener(entries: List<ListEntry>) {
+ private fun onBeforeRenderListListener(entries: List<PipelineEntry>) {
val isLocked = !keyguardStateController.isUnlocked
val nonDismissableEntryKeys = mutableSetOf<String>()
markNonDismissibleEntries(nonDismissableEntryKeys, entries, isLocked)
@@ -54,7 +54,7 @@
*/
private fun markNonDismissibleEntries(
markedKeys: MutableSet<String>,
- entries: List<ListEntry>,
+ entries: List<PipelineEntry>,
isLocked: Boolean
): Boolean {
var anyNonDismissableEntries = false
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinator.kt
index 02bf3b3..2f0701f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinator.kt
@@ -18,7 +18,7 @@
import android.util.ArrayMap
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
import com.android.systemui.statusbar.notification.collection.render.NotifGroupController
@@ -34,7 +34,7 @@
pipeline.addOnAfterRenderGroupListener(::onAfterRenderGroup)
}
- private fun onBeforeFinalizeFilter(entries: List<ListEntry>) {
+ private fun onBeforeFinalizeFilter(entries: List<PipelineEntry>) {
// save untruncated child counts to our internal map
untruncatedChildCounts.clear()
entries.asSequence().filterIsInstance<GroupEntry>().forEach { groupEntry ->
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinator.kt
index f253100..d0411b5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinator.kt
@@ -18,7 +18,7 @@
import android.util.ArrayMap
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator
@@ -52,7 +52,7 @@
pipeline.addPreRenderInvalidator(invalidator)
}
- private fun onBeforeFinalizeFilterListener(entries: List<ListEntry>) {
+ private fun onBeforeFinalizeFilterListener(entries: List<PipelineEntry>) {
cancelListInvalidation()
notificationGroupTimes.clear()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt
index b200136..9045aac 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt
@@ -18,7 +18,7 @@
import android.util.ArraySet
import com.android.systemui.Dumpable
import com.android.systemui.dump.DumpManager
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
@@ -113,7 +113,7 @@
}
}
- private fun isCurrentlyShowingGuts(entry: ListEntry) =
+ private fun isCurrentlyShowingGuts(entry: PipelineEntry) =
notifsWithOpenGuts.contains(entry.key)
private fun closeGutsAndEndLifetimeExtension(entry: NotificationEntry) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt
index eb5a370..611e0ef 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt
@@ -27,7 +27,7 @@
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips
import com.android.systemui.statusbar.notification.NotifPipelineFlags
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifCollection
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
@@ -103,7 +103,7 @@
mNotifPipeline = pipeline
mHeadsUpManager.addListener(mOnHeadsUpChangedListener)
pipeline.addCollectionListener(mNotifCollectionListener)
- pipeline.addOnBeforeTransformGroupsListener(::onBeforeTransformGroups)
+ pipeline.addOnBeforeTransformGroupsListener { onBeforeTransformGroups() }
pipeline.addOnBeforeFinalizeFilterListener(::onBeforeFinalizeFilter)
pipeline.addPromoter(mNotifPromoter)
pipeline.addNotificationLifetimeExtender(mLifetimeExtender)
@@ -170,7 +170,7 @@
* Once the pipeline starts running, we can look through posted entries and quickly process any
* that don't have groups, and thus will never gave a group heads up edge case.
*/
- fun onBeforeTransformGroups(list: List<ListEntry>) {
+ fun onBeforeTransformGroups() {
mNow = mSystemClock.currentTimeMillis()
if (mPostedEntries.isEmpty()) {
return
@@ -191,7 +191,7 @@
* we know that stability and [NotifPromoter]s have been applied, so we can use the location of
* notifications in this list to determine what kind of group heads up behavior should happen.
*/
- fun onBeforeFinalizeFilter(list: List<ListEntry>) =
+ fun onBeforeFinalizeFilter(list: List<PipelineEntry>) =
mHeadsUpManager.modifyHuns { hunMutator ->
// Nothing to do if there are no other adds/updates
if (mPostedEntries.isEmpty()) {
@@ -410,7 +410,7 @@
)
.firstOrNull()
- private fun getGroupLocationsByKey(list: List<ListEntry>): Map<String, GroupLocation> =
+ private fun getGroupLocationsByKey(list: List<PipelineEntry>): Map<String, GroupLocation> =
mutableMapOf<String, GroupLocation>().also { map ->
list.forEach { topLevelEntry ->
when (topLevelEntry) {
@@ -833,13 +833,13 @@
val sectioner =
object : NotifSectioner("HeadsUp", BUCKET_HEADS_UP) {
- override fun isInSection(entry: ListEntry): Boolean =
+ override fun isInSection(entry: PipelineEntry): Boolean =
// TODO: This check won't notice if a child of the group is going to HUN...
isGoingToShowHunNoRetract(entry)
override fun getComparator(): NotifComparator {
return object : NotifComparator("HeadsUp") {
- override fun compare(o1: ListEntry, o2: ListEntry): Int =
+ override fun compare(o1: PipelineEntry, o2: PipelineEntry): Int =
mHeadsUpManager.compare(o1.representativeEntry, o2.representativeEntry)
}
}
@@ -867,7 +867,7 @@
private fun isSticky(entry: NotificationEntry) = mHeadsUpManager.isSticky(entry.key)
- private fun isEntryBinding(entry: ListEntry): Boolean {
+ private fun isEntryBinding(entry: PipelineEntry): Boolean {
val bindingUntil = mEntriesBindingUntil[entry.key]
return bindingUntil != null && bindingUntil >= mNow
}
@@ -875,12 +875,12 @@
/**
* Whether the notification is already heads up or binding so that it can imminently heads up
*/
- private fun isAttemptingToShowHun(entry: ListEntry) =
+ private fun isAttemptingToShowHun(entry: PipelineEntry) =
mHeadsUpManager.isHeadsUpEntry(entry.key) ||
isEntryBinding(entry) ||
isHeadsUpAnimatingAway(entry)
- private fun isHeadsUpAnimatingAway(entry: ListEntry): Boolean {
+ private fun isHeadsUpAnimatingAway(entry: PipelineEntry): Boolean {
if (!GroupHunAnimationFix.isEnabled) return false
return entry.representativeEntry?.row?.isHeadsUpAnimatingAway ?: false
}
@@ -891,7 +891,7 @@
* returns `true` even if the update would (in isolation of its group) cause the heads up to be
* retracted. This is important for not retracting transferred group heads ups.
*/
- private fun isGoingToShowHunNoRetract(entry: ListEntry) =
+ private fun isGoingToShowHunNoRetract(entry: PipelineEntry) =
mPostedEntries[entry.key]?.calculateShouldBeHeadsUpNoRetract ?: isAttemptingToShowHun(entry)
/**
@@ -900,7 +900,7 @@
* strict because any update which would revoke the heads up supersedes the current heads
* up/binding state.
*/
- private fun isGoingToShowHunStrict(entry: ListEntry) =
+ private fun isGoingToShowHunStrict(entry: PipelineEntry) =
mPostedEntries[entry.key]?.calculateShouldBeHeadsUpStrict ?: isAttemptingToShowHun(entry)
private fun endNotifLifetimeExtensionIfExtended(entry: NotificationEntry) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinator.kt
index e232849..56deb18 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinator.kt
@@ -27,7 +27,7 @@
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
@@ -176,7 +176,7 @@
}
}
- private fun pickOutTopUnseenNotifs(list: List<ListEntry>) {
+ private fun pickOutTopUnseenNotifs(list: List<PipelineEntry>) {
if (NotificationMinimalism.isUnexpectedlyInLegacyMode()) return
if (!minimalismEnabled) return
// Only ever elevate a top unseen notification on keyguard, not even locked shade
@@ -224,7 +224,7 @@
val topOngoingSectioner =
object : NotifSectioner("TopOngoing", BUCKET_TOP_ONGOING) {
- override fun isInSection(entry: ListEntry): Boolean {
+ override fun isInSection(entry: PipelineEntry): Boolean {
if (NotificationMinimalism.isUnexpectedlyInLegacyMode()) return false
if (!minimalismEnabled) return false
return entry.anyEntry { notificationEntry ->
@@ -235,7 +235,7 @@
val topUnseenSectioner =
object : NotifSectioner("TopUnseen", BUCKET_TOP_UNSEEN) {
- override fun isInSection(entry: ListEntry): Boolean {
+ override fun isInSection(entry: PipelineEntry): Boolean {
if (NotificationMinimalism.isUnexpectedlyInLegacyMode()) return false
if (!minimalismEnabled) return false
return entry.anyEntry { notificationEntry ->
@@ -244,7 +244,7 @@
}
}
- private fun ListEntry.anyEntry(predicate: (NotificationEntry?) -> Boolean) =
+ private fun PipelineEntry.anyEntry(predicate: (NotificationEntry?) -> Boolean) =
when {
predicate(representativeEntry) -> true
this !is GroupEntry -> false
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt
index de6f257..660ee40 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt
@@ -30,6 +30,7 @@
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.expansionChanges
+import com.android.systemui.statusbar.notification.collection.GroupEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
@@ -313,7 +314,7 @@
unseenNotifications.contains(entry) -> false
// Don't apply the filter to (non-promoted) group summaries
// - summary will be pruned if necessary, depending on if children are filtered
- entry.parent?.summary == entry -> false
+ (entry.parent as? GroupEntry)?.summary == entry -> false
// Check that the entry satisfies certain characteristics that would bypass the
// filter
shouldIgnoreUnseenCheck(entry) -> false
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java
index 2ecce1f..20c6736 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java
@@ -35,7 +35,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.statusbar.notification.collection.GroupEntry;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.ShadeListBuilder;
@@ -232,9 +232,10 @@
*/
@Override
public boolean shouldFilterOut(NotificationEntry entry, long now) {
- final GroupEntry parent = requireNonNull(entry.getParent());
- Boolean isMemberOfDelayedGroup = mIsDelayedGroupCache.get(parent);
- if (isMemberOfDelayedGroup == null) {
+ final PipelineEntry pipelineEntryParent = requireNonNull(entry.getParent());
+ Boolean isMemberOfDelayedGroup = mIsDelayedGroupCache.get(pipelineEntryParent);
+ if (isMemberOfDelayedGroup == null && pipelineEntryParent instanceof GroupEntry) {
+ GroupEntry parent = (GroupEntry) pipelineEntryParent;
isMemberOfDelayedGroup = shouldWaitForGroupToInflate(parent, now);
mIsDelayedGroupCache.put(parent, isMemberOfDelayedGroup);
}
@@ -279,7 +280,7 @@
}
};
- private void purgeCaches(Collection<ListEntry> entries) {
+ private void purgeCaches(Collection<PipelineEntry> entries) {
Set<String> wantedPackages = getPackages(entries);
mAppIconProvider.purgeCache(wantedPackages);
mNotificationIconStyleProvider.purgeCache(wantedPackages);
@@ -288,9 +289,9 @@
/**
* Get all app packages present in {@param entries}.
*/
- private static @NonNull Set<String> getPackages(Collection<ListEntry> entries) {
+ private static @NonNull Set<String> getPackages(Collection<PipelineEntry> entries) {
Set<String> packages = new HashSet<>();
- for (ListEntry entry : entries) {
+ for (PipelineEntry entry : entries) {
NotificationEntry notificationEntry = entry.getRepresentativeEntry();
if (notificationEntry == null) {
Log.wtf(TAG, "notification entry " + entry.getKey()
@@ -302,9 +303,9 @@
return packages;
}
- private void inflateAllRequiredViews(List<ListEntry> entries) {
+ private void inflateAllRequiredViews(List<PipelineEntry> entries) {
for (int i = 0, size = entries.size(); i < size; i++) {
- ListEntry entry = entries.get(i);
+ PipelineEntry entry = entries.get(i);
if (entry instanceof GroupEntry) {
GroupEntry groupEntry = (GroupEntry) entry;
inflateRequiredGroupViews(groupEntry);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java
index 69b069d..d1063d9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java
@@ -20,7 +20,7 @@
import android.annotation.Nullable;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope;
@@ -97,7 +97,7 @@
private final NotifSectioner mAlertingNotifSectioner = new NotifSectioner("Alerting",
NotificationPriorityBucketKt.BUCKET_ALERTING) {
@Override
- public boolean isInSection(ListEntry entry) {
+ public boolean isInSection(PipelineEntry entry) {
return mHighPriorityProvider.isHighPriority(entry);
}
@@ -115,8 +115,9 @@
private final NotifSectioner mSilentNotifSectioner = new NotifSectioner("Silent",
NotificationPriorityBucketKt.BUCKET_SILENT) {
@Override
- public boolean isInSection(ListEntry entry) {
+ public boolean isInSection(PipelineEntry entry) {
return !mHighPriorityProvider.isHighPriority(entry)
+ && entry.getRepresentativeEntry() != null
&& !entry.getRepresentativeEntry().isAmbient();
}
@@ -128,7 +129,7 @@
@Nullable
@Override
- public void onEntriesUpdated(@NonNull List<ListEntry> entries) {
+ public void onEntriesUpdated(@NonNull List<PipelineEntry> entries) {
mHasSilentEntries = false;
for (int i = 0; i < entries.size(); i++) {
if (entries.get(i).getRepresentativeEntry().getSbn().isClearable()) {
@@ -144,7 +145,7 @@
private final NotifSectioner mMinimizedNotifSectioner = new NotifSectioner("Minimized",
NotificationPriorityBucketKt.BUCKET_SILENT) {
@Override
- public boolean isInSection(ListEntry entry) {
+ public boolean isInSection(PipelineEntry entry) {
return !mHighPriorityProvider.isHighPriority(entry)
&& entry.getRepresentativeEntry().isAmbient();
}
@@ -157,7 +158,7 @@
@Nullable
@Override
- public void onEntriesUpdated(@NonNull List<ListEntry> entries) {
+ public void onEntriesUpdated(@NonNull List<PipelineEntry> entries) {
mHasMinimizedEntries = false;
for (int i = 0; i < entries.size(); i++) {
if (entries.get(i).getRepresentativeEntry().getSbn().isClearable()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinator.kt
index 4a7b7ca..930e52a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinator.kt
@@ -17,7 +17,7 @@
import android.util.ArrayMap
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
@@ -39,7 +39,7 @@
pipeline.addOnAfterRenderEntryListener(::onAfterRenderEntry)
}
- private fun onBeforeFinalizeFilterListener(entries: List<ListEntry>) {
+ private fun onBeforeFinalizeFilterListener(entries: List<PipelineEntry>) {
latestAlertTimeBySummary.clear()
entries.asSequence().filterIsInstance<GroupEntry>().forEach { groupEntry ->
val summary = checkNotNull(groupEntry.summary)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinator.kt
index df8e56e..a987c54 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAppearanceCoordinator.kt
@@ -20,7 +20,7 @@
import com.android.systemui.res.R
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.statusbar.notification.AssistantFeedbackController
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
@@ -63,7 +63,7 @@
pipeline.addOnAfterRenderEntryListener(::onAfterRenderEntry)
}
- private fun onBeforeRenderList(list: List<ListEntry>) {
+ private fun onBeforeRenderList(list: List<PipelineEntry>) {
entryToExpand =
list.firstOrNull()?.representativeEntry?.takeIf { entry ->
!mSectionStyleProvider.isMinimizedSection(entry.section!!)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinator.kt
index 90916d1..db24e7d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinator.kt
@@ -32,7 +32,7 @@
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.notification.DynamicPrivacyController
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
@@ -155,7 +155,7 @@
}
}
- override fun onBeforeRenderList(entries: List<ListEntry>) {
+ override fun onBeforeRenderList(entries: List<PipelineEntry>) {
if (
isKeyguardGoingAway ||
statusBarStateController.state == StatusBarState.KEYGUARD &&
@@ -220,13 +220,15 @@
}
}
-private fun extractAllRepresentativeEntries(entries: List<ListEntry>): Sequence<NotificationEntry> =
+private fun extractAllRepresentativeEntries(entries: List<PipelineEntry>): Sequence<NotificationEntry> =
entries.asSequence().flatMap(::extractAllRepresentativeEntries)
-private fun extractAllRepresentativeEntries(listEntry: ListEntry): Sequence<NotificationEntry> =
+private fun extractAllRepresentativeEntries(
+ pipelineEntry: PipelineEntry,
+): Sequence<NotificationEntry> =
sequence {
- listEntry.representativeEntry?.let { yield(it) }
- if (listEntry is GroupEntry) {
- yieldAll(extractAllRepresentativeEntries(listEntry.children))
+ pipelineEntry.representativeEntry?.let { yield(it) }
+ if (pipelineEntry is GroupEntry) {
+ yieldAll(extractAllRepresentativeEntries(pipelineEntry.children))
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ShadeEventCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ShadeEventCoordinator.kt
index 1c66db7..29a8eb0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ShadeEventCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ShadeEventCoordinator.kt
@@ -19,7 +19,7 @@
import android.service.notification.NotificationListenerService
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener
@@ -67,7 +67,7 @@
mShadeEmptiedCallback = callback
}
- private fun onBeforeRenderList(entries: List<ListEntry>) {
+ private fun onBeforeRenderList(entries: List<PipelineEntry>) {
if (mEntryRemoved && entries.isEmpty()) {
mLogger.logShadeEmptied()
// TODO(b/206023518): This was bad. Do not copy this.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinator.kt
index 1cb2366..53a73f4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinator.kt
@@ -19,7 +19,7 @@
import com.android.app.tracing.traceSection
import com.android.server.notification.Flags.screenshareNotificationHiding
import com.android.systemui.Flags.screenshareNotificationHidingBugFix
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManagerImpl
@@ -50,14 +50,14 @@
groupExpansionManagerImpl.attach(pipeline)
}
- private fun onAfterRenderList(entries: List<ListEntry>) =
+ private fun onAfterRenderList(entries: List<PipelineEntry>) =
traceSection("StackCoordinator.onAfterRenderList") {
val notifStats = calculateNotifStats(entries)
activeNotificationsInteractor.setNotifStats(notifStats)
renderListInteractor.setRenderedList(entries)
}
- private fun calculateNotifStats(entries: List<ListEntry>): NotifStats {
+ private fun calculateNotifStats(entries: List<PipelineEntry>): NotifStats {
var hasNonClearableAlertingNotifs = false
var hasClearableAlertingNotifs = false
var hasNonClearableSilentNotifs = false
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java
index 49d5029..3e5655a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java
@@ -39,7 +39,7 @@
import com.android.systemui.shade.domain.interactor.ShadeInteractor;
import com.android.systemui.statusbar.notification.VisibilityLocationProvider;
import com.android.systemui.statusbar.notification.collection.GroupEntry;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener;
@@ -253,21 +253,20 @@
return false;
}
- final GroupEntry parent = entry.getParent();
+ final PipelineEntry parent = entry.getParent();
if (parent == null) {
return false;
}
-
return isHeadsUpGroup(parent);
}
- private boolean isHeadsUpGroup(GroupEntry groupEntry) {
- if (StabilizeHeadsUpGroup.isUnexpectedlyInLegacyMode()) {
+ private boolean isHeadsUpGroup(PipelineEntry pipelineEntry) {
+ if (!(pipelineEntry instanceof GroupEntry groupEntry)) {
return false;
}
- if (groupEntry == null) {
+ if (StabilizeHeadsUpGroup.isUnexpectedlyInLegacyMode()) {
return false;
}
@@ -370,7 +369,7 @@
}
@Override
- public boolean isEntryReorderingAllowed(@NonNull ListEntry entry) {
+ public boolean isEntryReorderingAllowed(@NonNull PipelineEntry entry) {
if (StabilizeHeadsUpGroup.isEnabled()) {
if (isEveryChangeAllowed()) {
return true;
@@ -403,7 +402,7 @@
private final OnBeforeRenderListListener mOnBeforeRenderListListener =
new OnBeforeRenderListListener() {
@Override
- public void onBeforeRenderList(List<ListEntry> entries) {
+ public void onBeforeRenderList(List<PipelineEntry> entries) {
if (StabilizeHeadsUpGroup.isUnexpectedlyInLegacyMode()) {
return;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProvider.kt
index 465bc28..adcc3ec 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProvider.kt
@@ -124,7 +124,7 @@
val parent = entry.parent ?: error("Entry must have a parent to determine if minimized")
val isMinimizedSection = sectionStyleProvider.isMinimizedSection(section)
val isTopLevelEntry = parent == GroupEntry.ROOT_ENTRY
- val isGroupSummary = parent.summary == entry
+ val isGroupSummary = (parent as? GroupEntry)?.summary == entry
return isMinimizedSection && (isTopLevelEntry || isGroupSummary)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnAfterRenderListListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnAfterRenderListListener.java
index ac450c0..e3ab81c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnAfterRenderListListener.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnAfterRenderListListener.java
@@ -18,7 +18,7 @@
import androidx.annotation.NonNull;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import java.util.List;
@@ -31,5 +31,5 @@
* @param entries The current list of top-level entries. Note that this is a live view into the
* current list and will change whenever the pipeline is rerun.
*/
- void onAfterRenderList(@NonNull List<ListEntry> entries);
+ void onAfterRenderList(@NonNull List<PipelineEntry> entries);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeFinalizeFilterListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeFinalizeFilterListener.java
index 086661e..3c4f422 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeFinalizeFilterListener.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeFinalizeFilterListener.java
@@ -16,7 +16,7 @@
package com.android.systemui.statusbar.notification.collection.listbuilder;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import java.util.List;
@@ -30,5 +30,5 @@
* @param entries The current list of top-level entries. Note that this is a live view into the
* current list and will change whenever the pipeline is rerun.
*/
- void onBeforeFinalizeFilter(List<ListEntry> entries);
+ void onBeforeFinalizeFilter(List<PipelineEntry> entries);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeRenderListListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeRenderListListener.java
index 44a27a4..6ceb7d5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeRenderListListener.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeRenderListListener.java
@@ -16,7 +16,7 @@
package com.android.systemui.statusbar.notification.collection.listbuilder;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import java.util.List;
@@ -30,5 +30,5 @@
* @param entries The current list of top-level entries. Note that this is a live view into the
* current list and will change whenever the pipeline is rerun.
*/
- void onBeforeRenderList(List<ListEntry> entries);
+ void onBeforeRenderList(List<PipelineEntry> entries);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeSortListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeSortListener.java
index 56cfe5c..858cec1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeSortListener.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeSortListener.java
@@ -16,7 +16,7 @@
package com.android.systemui.statusbar.notification.collection.listbuilder;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import java.util.List;
@@ -30,5 +30,5 @@
* @param entries The current list of top-level entries. Note that this is a live view into the
* current list and will change whenever the pipeline is rerun.
*/
- void onBeforeSort(List<ListEntry> entries);
+ void onBeforeSort(List<PipelineEntry> entries);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeTransformGroupsListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeTransformGroupsListener.java
index 0dc4df0..eb525c7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeTransformGroupsListener.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/OnBeforeTransformGroupsListener.java
@@ -16,7 +16,7 @@
package com.android.systemui.statusbar.notification.collection.listbuilder;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter;
@@ -35,5 +35,5 @@
* a live view into the current notif list and will change as the list moves through
* the pipeline.
*/
- void onBeforeTransformGroups(List<ListEntry> list);
+ void onBeforeTransformGroups(List<PipelineEntry> list);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderHelper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderHelper.kt
index d8f75f6..0d8a64a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderHelper.kt
@@ -16,10 +16,10 @@
package com.android.systemui.statusbar.notification.collection.listbuilder
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
object ShadeListBuilderHelper {
- fun getSectionSubLists(entries: List<ListEntry>): Iterable<List<ListEntry>> =
+ fun getSectionSubLists(entries: List<PipelineEntry>): Iterable<List<PipelineEntry>> =
getContiguousSubLists(entries, minLength = 1) { it.sectionIndex }
inline fun <T : Any, K : Any> getContiguousSubLists(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderLogger.kt
index a8409d0c..8a9548f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderLogger.kt
@@ -23,7 +23,7 @@
import com.android.systemui.log.core.LogLevel.WARNING
import com.android.systemui.statusbar.notification.NotifPipelineFlags
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.listbuilder.PipelineState.StateName
import com.android.systemui.statusbar.notification.collection.listbuilder.PipelineState.getStateName
@@ -152,9 +152,9 @@
fun logEntryAttachStateChanged(
buildId: Int,
- entry: ListEntry,
- prevParent: GroupEntry?,
- newParent: GroupEntry?
+ entry: PipelineEntry,
+ prevParent: PipelineEntry?,
+ newParent: PipelineEntry?
) {
buffer.log(TAG, INFO, {
long1 = buildId.toLong()
@@ -177,7 +177,7 @@
})
}
- fun logParentChanged(buildId: Int, prevParent: GroupEntry?, newParent: GroupEntry?) {
+ fun logParentChanged(buildId: Int, prevParent: PipelineEntry?, newParent: PipelineEntry?) {
buffer.log(TAG, INFO, {
long1 = buildId.toLong()
str1 = prevParent?.logKey
@@ -195,8 +195,8 @@
fun logParentChangeSuppressedStarted(
buildId: Int,
- suppressedParent: GroupEntry?,
- keepingParent: GroupEntry?
+ suppressedParent: PipelineEntry?,
+ keepingParent: PipelineEntry?
) {
buffer.log(TAG, INFO, {
long1 = buildId.toLong()
@@ -209,8 +209,8 @@
fun logParentChangeSuppressedStopped(
buildId: Int,
- previouslySuppressedParent: GroupEntry?,
- previouslyKeptParent: GroupEntry?
+ previouslySuppressedParent: PipelineEntry?,
+ previouslyKeptParent: PipelineEntry?
) {
buffer.log(TAG, INFO, {
long1 = buildId.toLong()
@@ -224,7 +224,7 @@
fun logGroupPruningSuppressed(
buildId: Int,
- keepingParent: GroupEntry?
+ keepingParent: PipelineEntry?
) {
buffer.log(TAG, INFO, {
long1 = buildId.toLong()
@@ -310,7 +310,7 @@
val logRankInFinalList = Compile.IS_DEBUG && notifPipelineFlags.isDevLoggingEnabled()
- fun logFinalList(entries: List<ListEntry>) {
+ fun logFinalList(entries: List<PipelineEntry>) {
if (entries.isEmpty()) {
buffer.log(TAG, DEBUG, {}, { "(empty list)" })
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifComparator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifComparator.java
index f7bbd28..f7c74c2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifComparator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifComparator.java
@@ -18,7 +18,7 @@
import androidx.annotation.NonNull;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import java.util.Comparator;
@@ -29,7 +29,7 @@
*/
public abstract class NotifComparator
extends Pluggable<NotifComparator>
- implements Comparator<ListEntry> {
+ implements Comparator<PipelineEntry> {
protected NotifComparator(String name) {
super(name);
@@ -41,5 +41,5 @@
* @return a negative integer, zero, or a positive integer as the first argument is less than
* equal to, or greater than the second (same as standard Comparator<> interface).
*/
- public abstract int compare(@NonNull ListEntry o1, @NonNull ListEntry o2);
+ public abstract int compare(@NonNull PipelineEntry o1, @NonNull PipelineEntry o2);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifSectioner.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifSectioner.java
index 8c52c53..4a856a5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifSectioner.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifSectioner.java
@@ -18,7 +18,7 @@
import android.annotation.Nullable;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.ShadeListBuilder;
import com.android.systemui.statusbar.notification.collection.render.NodeController;
import com.android.systemui.statusbar.notification.collection.render.NodeSpec;
@@ -52,11 +52,11 @@
* However, this doesn't necessarily mean that your section will get called on each top-level
* notification. The first section to return true determines the section of the notification.
*/
- public abstract boolean isInSection(ListEntry entry);
+ public abstract boolean isInSection(PipelineEntry entry);
/**
* Returns an optional {@link NotifComparator} to sort entries only in this section.
- * {@link ListEntry} instances passed to this comparator are guaranteed to have this section,
+ * {@link PipelineEntry} instances passed to this comparator are guaranteed to have this section,
* and this ordering will take precedence over any global comparators supplied to {@link
* com.android.systemui.statusbar.notification.collection.NotifPipeline#setComparators(List)}.
*
@@ -80,5 +80,5 @@
* Notify of children of this section being updated
* @param entries of this section that are borrowed (must clone to store)
*/
- public void onEntriesUpdated(List<ListEntry> entries) {}
+ public void onEntriesUpdated(List<PipelineEntry> entries) {}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifStabilityManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifStabilityManager.kt
index 58bbca8..e1e2bcf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifStabilityManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/listbuilder/pluggable/NotifStabilityManager.kt
@@ -16,7 +16,7 @@
package com.android.systemui.statusbar.notification.collection.listbuilder.pluggable
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
/**
@@ -75,7 +75,7 @@
* being suppressed. However, if an order change is suppressed, that will be reported to ths
* implementation by calling [onEntryReorderSuppressed] after ordering is complete.
*/
- abstract fun isEntryReorderingAllowed(entry: ListEntry): Boolean
+ abstract fun isEntryReorderingAllowed(entry: PipelineEntry): Boolean
/**
* Called by the pipeline to determine if every call to the other stability methods would
@@ -100,7 +100,7 @@
override fun isGroupChangeAllowed(entry: NotificationEntry): Boolean = true
override fun isGroupPruneAllowed(entry: GroupEntry): Boolean = true
override fun isSectionChangeAllowed(entry: NotificationEntry): Boolean = true
- override fun isEntryReorderingAllowed(entry: ListEntry): Boolean = true
+ override fun isEntryReorderingAllowed(entry: PipelineEntry): Boolean = true
override fun isEveryChangeAllowed(): Boolean = true
override fun onEntryReorderSuppressed() {}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt
index 014ac54..ae2c70a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt
@@ -27,6 +27,7 @@
import com.android.systemui.log.core.LogLevel.INFO
import com.android.systemui.log.core.LogLevel.WARNING
import com.android.systemui.log.core.LogLevel.WTF
+import com.android.systemui.statusbar.notification.collection.GroupEntry
import com.android.systemui.statusbar.notification.collection.NotifCollection
import com.android.systemui.statusbar.notification.collection.NotifCollection.CancellationReason
import com.android.systemui.statusbar.notification.collection.NotifCollection.FutureDismissal
@@ -421,6 +422,14 @@
})
}
+ private fun getParentLogKey(childEntry: NotificationEntry): String {
+ return if (childEntry.parent is GroupEntry) {
+ (childEntry.parent as? GroupEntry)?.summary?.logKey ?: "(null)"
+ } else {
+ "(null)"
+ }
+ }
+
fun logDismissAlreadyParentDismissedNotif(
childEntry: NotificationEntry,
childIndex: Int,
@@ -430,7 +439,7 @@
str1 = childEntry.logKey
int1 = childIndex
int2 = childCount
- str2 = childEntry.parent?.summary?.logKey ?: "(null)"
+ str2 = getParentLogKey(childEntry)
}, {
"DISMISS Already Parent-Dismissed $str1 ($int1/$int2) with summary $str2"
})
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/HighPriorityProvider.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/HighPriorityProvider.java
index 2e3ab92..051bd3a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/HighPriorityProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/HighPriorityProvider.java
@@ -23,7 +23,7 @@
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.GroupEntry;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
@@ -53,7 +53,7 @@
}
/**
- * @return true if the ListEntry is high priority, else false
+ * @return true if the PipelineEntry is high priority, else false
*
* A NotificationEntry is considered high priority if it:
* - has importance greater than or equal to IMPORTANCE_DEFAULT
@@ -67,12 +67,12 @@
* A GroupEntry is considered high priority if its representativeEntry (summary) or any of its
* children are high priority.
*/
- public boolean isHighPriority(@Nullable ListEntry entry) {
+ public boolean isHighPriority(@Nullable PipelineEntry entry) {
return isHighPriority(entry, /* allowImplicit = */ true);
}
/**
- * @return true if the ListEntry is explicitly high priority, else false
+ * @return true if the PipelineEntry is explicitly high priority, else false
*
* A NotificationEntry is considered explicitly high priority if has importance greater than or
* equal to IMPORTANCE_DEFAULT.
@@ -80,11 +80,11 @@
* A GroupEntry is considered explicitly high priority if its representativeEntry (summary) or
* any of its children are explicitly high priority.
*/
- public boolean isExplicitlyHighPriority(@Nullable ListEntry entry) {
+ public boolean isExplicitlyHighPriority(@Nullable PipelineEntry entry) {
return isHighPriority(entry, /* allowImplicit= */ false);
}
- private boolean isHighPriority(@Nullable ListEntry entry, boolean allowImplicit) {
+ private boolean isHighPriority(@Nullable PipelineEntry entry, boolean allowImplicit) {
if (entry == null) {
return false;
}
@@ -100,9 +100,9 @@
}
/**
- * @return true if the ListEntry is high priority conversation, else false
+ * @return true if the PipelineEntry is high priority conversation, else false
*/
- public boolean isHighPriorityConversation(@NonNull ListEntry entry) {
+ public boolean isHighPriorityConversation(@NonNull PipelineEntry entry) {
final NotificationEntry notifEntry = entry.getRepresentativeEntry();
if (notifEntry == null) {
return false;
@@ -119,7 +119,7 @@
return isNotificationEntryWithAtLeastOneImportantChild(entry);
}
- private boolean isNotificationEntryWithAtLeastOneImportantChild(@NonNull ListEntry entry) {
+ private boolean isNotificationEntryWithAtLeastOneImportantChild(@NonNull PipelineEntry entry) {
if (!(entry instanceof GroupEntry)) {
return false;
}
@@ -134,7 +134,7 @@
* Returns whether the given ListEntry has a high priority child or is in a group with a child
* that's high priority
*/
- private boolean hasHighPriorityChild(ListEntry entry, boolean allowImplicit) {
+ private boolean hasHighPriorityChild(PipelineEntry entry, boolean allowImplicit) {
if (NotificationBundleUi.isEnabled()) {
GroupEntry representativeGroupEntry = null;
if (entry instanceof GroupEntry) {
@@ -142,9 +142,10 @@
} else if (entry instanceof NotificationEntry){
final NotificationEntry notificationEntry = entry.getRepresentativeEntry();
if (notificationEntry.getParent() != null
- && notificationEntry.getParent().getSummary() != null
- && notificationEntry.getParent().getSummary() == notificationEntry) {
- representativeGroupEntry = notificationEntry.getParent();
+ && notificationEntry.getParent() instanceof GroupEntry parent
+ && parent.getSummary() != null
+ && parent.getSummary() == notificationEntry) {
+ representativeGroupEntry = parent;
}
}
return representativeGroupEntry != null &&
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionStyleProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionStyleProvider.kt
index ea9f295..f418bb6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionStyleProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SectionStyleProvider.kt
@@ -17,7 +17,7 @@
package com.android.systemui.statusbar.notification.collection.provider
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.SortBySectionTimeFlag
import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
@@ -53,7 +53,7 @@
* Determine if the given entry is minimized.
*/
@JvmOverloads
- fun isMinimized(entry: ListEntry, ifNotInSection: Boolean = true): Boolean {
+ fun isMinimized(entry: PipelineEntry, ifNotInSection: Boolean = true): Boolean {
val section = entry.section ?: return ifNotInSection
return isMinimizedSection(section)
}
@@ -77,7 +77,7 @@
* Determine if the given entry is silent.
*/
@JvmOverloads
- fun isSilent(entry: ListEntry, ifNotInSection: Boolean = true): Boolean {
+ fun isSilent(entry: PipelineEntry, ifNotInSection: Boolean = true): Boolean {
val section = entry.section ?: return ifNotInSection
if (SortBySectionTimeFlag.isEnabled) {
if (entry.section?.bucket == BUCKET_PEOPLE) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupExpansionManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupExpansionManagerImpl.java
index 16b98e2..b179a69 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupExpansionManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupExpansionManagerImpl.java
@@ -25,7 +25,7 @@
import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.notification.collection.EntryAdapter;
import com.android.systemui.statusbar.notification.collection.GroupEntry;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener;
@@ -81,7 +81,7 @@
}
final Set<NotificationEntry> renderingSummaries = new HashSet<>();
- for (ListEntry entry : entries) {
+ for (PipelineEntry entry : entries) {
if (entry instanceof GroupEntry) {
renderingSummaries.add(entry.getRepresentativeEntry());
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupMembershipManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupMembershipManager.java
index 69267e5..3edbfaf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupMembershipManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupMembershipManager.java
@@ -22,6 +22,7 @@
import com.android.systemui.statusbar.notification.collection.EntryAdapter;
import com.android.systemui.statusbar.notification.collection.ListEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import java.util.List;
@@ -78,5 +79,5 @@
* @return list of the children
*/
@Nullable
- List<NotificationEntry> getChildren(@NonNull ListEntry summary);
+ List<NotificationEntry> getChildren(@NonNull PipelineEntry summary);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupMembershipManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupMembershipManagerImpl.java
index 80a9f8ad..a1a23e3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupMembershipManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupMembershipManagerImpl.java
@@ -24,7 +24,7 @@
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.EntryAdapter;
import com.android.systemui.statusbar.notification.collection.GroupEntry;
-import com.android.systemui.statusbar.notification.collection.ListEntry;
+import com.android.systemui.statusbar.notification.collection.PipelineEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.shared.NotificationBundleUi;
@@ -48,8 +48,13 @@
// The entry is not attached, so it doesn't count.
return false;
}
+ PipelineEntry pipelineEntry = entry.getParent();
+ if (!(pipelineEntry instanceof GroupEntry groupEntry)) {
+ return false;
+ }
+
// If entry is a summary, its parent is a GroupEntry with summary = entry.
- return entry.getParent().getSummary() == entry;
+ return groupEntry.getSummary() == entry;
}
@Override
@@ -65,7 +70,10 @@
if (isTopLevelEntry(entry) || entry.getParent() == null) {
return null;
}
- return entry.getParent().getSummary();
+ if (entry.getParent() instanceof GroupEntry parent) {
+ return parent.getSummary();
+ }
+ return null;
}
@Nullable
@@ -91,8 +99,9 @@
@Nullable
@Override
- public List<NotificationEntry> getChildren(@NonNull ListEntry entry) {
+ public List<NotificationEntry> getChildren(@NonNull PipelineEntry entry) {
NotificationBundleUi.assertInLegacyMode();
+
if (entry instanceof GroupEntry) {
return ((GroupEntry) entry).getChildren();
}
@@ -100,8 +109,7 @@
NotificationEntry representativeEntry = entry.getRepresentativeEntry();
if (representativeEntry != null && isGroupSummary(representativeEntry)) {
// maybe we were actually passed the summary
- GroupEntry parent = representativeEntry.getParent();
- if (parent != null) {
+ if (representativeEntry.getParent() instanceof GroupEntry parent) {
return parent.getChildren();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt
index 9fc4e40..e173194 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt
@@ -18,12 +18,12 @@
import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection
import com.android.systemui.statusbar.notification.collection.provider.SectionHeaderVisibilityProvider
import com.android.systemui.util.Compile
import com.android.app.tracing.traceSection
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
/**
* Converts a notif list (the output of the ShadeListBuilder) into a NodeSpec, an abstract
@@ -45,7 +45,7 @@
fun buildNodeSpec(
rootController: NodeController,
- notifList: List<ListEntry>
+ notifList: List<PipelineEntry>
): NodeSpec = traceSection("NodeSpecBuilder.buildNodeSpec") {
val root = NodeSpecImpl(null, rootController)
@@ -100,7 +100,7 @@
return@traceSection root
}
- private fun buildNotifNode(parent: NodeSpec, entry: ListEntry): NodeSpec = when (entry) {
+ private fun buildNotifNode(parent: NodeSpec, entry: PipelineEntry): NodeSpec = when (entry) {
is NotificationEntry -> NodeSpecImpl(parent, viewBarn.requireNodeController(entry))
is GroupEntry ->
NodeSpecImpl(parent, viewBarn.requireNodeController(checkNotNull(entry.summary)))
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewBarn.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewBarn.kt
index fd91d5a..56662f1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewBarn.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewBarn.kt
@@ -18,18 +18,18 @@
import android.view.textclassifier.Log
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import javax.inject.Inject
/**
- * The ViewBarn is just a map from [ListEntry] to an instance of a [NodeController].
+ * The ViewBarn is just a map from [PipelineEntry] to an instance of a [NodeController].
*/
@SysUISingleton
class NotifViewBarn @Inject constructor() {
private val rowMap = mutableMapOf<String, NotifViewController>()
- fun requireNodeController(entry: ListEntry): NodeController {
+ fun requireNodeController(entry: PipelineEntry): NodeController {
if (DEBUG) {
Log.d(TAG, "requireNodeController: ${entry.key}")
}
@@ -50,14 +50,14 @@
return rowMap[entry.key] ?: error("No view has been registered for entry: ${entry.key}")
}
- fun registerViewForEntry(entry: ListEntry, controller: NotifViewController) {
+ fun registerViewForEntry(entry: PipelineEntry, controller: NotifViewController) {
if (DEBUG) {
Log.d(TAG, "registerViewForEntry: ${entry.key}")
}
rowMap[entry.key] = controller
}
- fun removeViewForEntry(entry: ListEntry) {
+ fun removeViewForEntry(entry: PipelineEntry) {
if (DEBUG) {
Log.d(TAG, "removeViewForEntry: ${entry.key}")
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewRenderer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewRenderer.kt
index 8284022..396d47e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewRenderer.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewRenderer.kt
@@ -17,7 +17,7 @@
package com.android.systemui.statusbar.notification.collection.render
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
/**
@@ -34,7 +34,7 @@
* also ensure that future calls to [getStackController], [getGroupController], and
* [getRowController] will provide valid results.
*/
- fun onRenderList(notifList: List<ListEntry>)
+ fun onRenderList(notifList: List<PipelineEntry>)
/**
* Provides an interface for the pipeline to update individual groups. This will be called at
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt
index 21e6837..93e844d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt
@@ -19,7 +19,7 @@
import com.android.app.tracing.traceSection
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.PipelineDumpable
import com.android.systemui.statusbar.notification.collection.PipelineDumper
@@ -46,7 +46,7 @@
listBuilder.setOnRenderListListener(::onRenderList)
}
- private fun onRenderList(notifList: List<ListEntry>) {
+ private fun onRenderList(notifList: List<PipelineEntry>) {
traceSection("RenderStageManager.onRenderList") {
val viewRenderer = viewRenderer ?: return
viewRenderer.onRenderList(notifList)
@@ -85,7 +85,7 @@
dump("onAfterRenderEntryListeners", onAfterRenderEntryListeners)
}
- private fun dispatchOnAfterRenderList(entries: List<ListEntry>) {
+ private fun dispatchOnAfterRenderList(entries: List<PipelineEntry>) {
traceSection("RenderStageManager.dispatchOnAfterRenderList") {
onAfterRenderListListeners.forEach { listener -> listener.onAfterRenderList(entries) }
}
@@ -93,7 +93,7 @@
private fun dispatchOnAfterRenderGroups(
viewRenderer: NotifViewRenderer,
- entries: List<ListEntry>,
+ entries: List<PipelineEntry>,
) {
traceSection("RenderStageManager.dispatchOnAfterRenderGroups") {
if (onAfterRenderGroupListeners.isEmpty()) {
@@ -110,7 +110,7 @@
private fun dispatchOnAfterRenderEntries(
viewRenderer: NotifViewRenderer,
- entries: List<ListEntry>,
+ entries: List<PipelineEntry>,
) {
traceSection("RenderStageManager.dispatchOnAfterRenderEntries") {
if (onAfterRenderEntryListeners.isEmpty()) {
@@ -129,7 +129,7 @@
* Performs a forward, depth-first traversal of the list where the group's summary immediately
* precedes the group's children.
*/
- private inline fun List<ListEntry>.forEachNotificationEntry(
+ private inline fun List<PipelineEntry>.forEachNotificationEntry(
action: (NotificationEntry) -> Unit
) {
forEach { entry ->
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewManager.kt
index 72316bf..9532d6d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewManager.kt
@@ -22,7 +22,7 @@
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.PipelineDumpable
import com.android.systemui.statusbar.notification.collection.PipelineDumper
@@ -76,7 +76,7 @@
private val viewRenderer =
object : NotifViewRenderer {
- override fun onRenderList(notifList: List<ListEntry>) {
+ override fun onRenderList(notifList: List<PipelineEntry>) {
traceSection("ShadeViewManager.onRenderList") {
viewDiffer.applySpec(specBuilder.buildNodeSpec(rootController, notifList))
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractor.kt
index bde3c4d..adc049e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractor.kt
@@ -29,7 +29,7 @@
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.statusbar.StatusBarIconView
import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.provider.SectionStyleProvider
import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationListRepository
@@ -57,11 +57,11 @@
/**
* Sets the current list of rendered notification entries as displayed in the notification list.
*/
- fun setRenderedList(entries: List<ListEntry>) {
+ fun setRenderedList(entries: List<PipelineEntry>) {
traceSection("RenderNotificationListInteractor.setRenderedList") {
repository.activeNotifications.update { existingModels ->
buildActiveNotificationsStore(existingModels, sectionStyleProvider, context) {
- entries.forEach(::addListEntry)
+ entries.forEach(::addPipelineEntry)
setRankingsMap(entries)
}
}
@@ -89,11 +89,11 @@
fun build(): ActiveNotificationsStore = builder.build()
/**
- * Convert a [ListEntry] into [ActiveNotificationEntryModel]s, and add them to the
+ * Convert a [PipelineEntry] into [ActiveNotificationEntryModel]s, and add them to the
* [ActiveNotificationsStore]. Special care is taken to avoid re-allocating models if the result
* would be identical to an existing model (at the expense of additional computations).
*/
- fun addListEntry(entry: ListEntry) {
+ fun addPipelineEntry(entry: PipelineEntry) {
when (entry) {
is GroupEntry -> {
entry.summary?.let { summary ->
@@ -116,11 +116,11 @@
}
}
- fun setRankingsMap(entries: List<ListEntry>) {
+ fun setRankingsMap(entries: List<PipelineEntry>) {
builder.setRankingsMap(flatMapToRankingsMap(entries))
}
- fun flatMapToRankingsMap(entries: List<ListEntry>): Map<String, Int> {
+ fun flatMapToRankingsMap(entries: List<PipelineEntry>): Map<String, Int> {
val result = ArrayMap<String, Int>()
for (entry in entries) {
if (entry is NotificationEntry) {
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 eb55856..5760b5f 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
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.notification.icon.ui.viewbinder
+import android.util.Log
import com.android.systemui.display.domain.interactor.DisplayWindowPropertiesInteractor
import com.android.systemui.lifecycle.Activatable
import com.android.systemui.statusbar.StatusBarIconView
@@ -61,9 +62,16 @@
}
override fun iconView(key: String): StatusBarIconView? {
- val entry = notifCollection.getEntry(key) ?: return null
- val displayWindowProperties =
- displayWindowPropertiesInteractor.getForStatusBar(displayId) ?: return null
+ val entry = notifCollection.getEntry(key)
+ if (entry == null) {
+ Log.w(TAG, "No notification entry found for key: $key")
+ return null
+ }
+ val displayWindowProperties = displayWindowPropertiesInteractor.getForStatusBar(displayId)
+ if (displayWindowProperties == null) {
+ Log.w(TAG, "No display properties found for display id: $displayId")
+ return null
+ }
return cachedIcons.computeIfAbsent(key) {
val context = displayWindowProperties.context
iconManager.createSbIconView(context, entry)
@@ -93,4 +101,8 @@
interface Factory {
fun create(displayId: Int): ConnectedDisplaysStatusBarNotificationIconViewStore
}
+
+ companion object {
+ private const val TAG = "ConnectedDisplaysNotifIconViewStore"
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt
index c7548aa..5096894 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt
@@ -19,7 +19,7 @@
import com.android.systemui.statusbar.NotificationLockscreenUserManager
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.SysuiStatusBarStateController
-import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.PipelineEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider
import com.android.systemui.statusbar.policy.KeyguardStateController
@@ -198,7 +198,7 @@
else -> false
}
- private fun shouldHideIfEntrySilent(entry: ListEntry): Boolean =
+ private fun shouldHideIfEntrySilent(entry: PipelineEntry): Boolean =
when {
// Show if explicitly high priority (not hidden)
highPriorityProvider.isExplicitlyHighPriority(entry) -> false
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt
index f755dbb..002230e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt
@@ -20,6 +20,7 @@
import android.service.notification.NotificationListenerService.Ranking
import android.service.notification.StatusBarNotification
import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.statusbar.notification.collection.GroupEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.PeopleNotificationType
@@ -117,8 +118,8 @@
if (!entry.sbn.notification.isGroupSummary) {
return TYPE_NON_PERSON;
}
-
- return getPeopleTypeForChildList(entry.parent?.children)
+ val parent = entry.parent as? GroupEntry ?: return TYPE_NON_PERSON
+ return getPeopleTypeForChildList(parent.children)
} else {
if (!groupManager.isGroupSummary(entry)) {
return TYPE_NON_PERSON
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
index b077327..4ed9dce 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
@@ -16,8 +16,10 @@
package com.android.systemui.statusbar.notification.row;
+import static com.android.systemui.Flags.notificationAppearNonlinear;
import static com.android.systemui.Flags.notificationBackgroundTintOptimization;
import static com.android.systemui.Flags.notificationRowTransparency;
+import static com.android.systemui.Flags.physicalNotificationMovement;
import static com.android.systemui.statusbar.notification.row.ExpandableView.ClipSide.BOTTOM;
import static com.android.systemui.statusbar.notification.row.ExpandableView.ClipSide.TOP;
@@ -71,7 +73,8 @@
* #ALPHA_APPEAR_START_FRACTION.
*/
- private static final float ALPHA_APPEAR_START_FRACTION = .7f;
+ private static final float ALPHA_APPEAR_START_FRACTION =
+ notificationAppearNonlinear() ? .55f : .7f;
/**
* The content should show fully with progress at #ALPHA_APPEAR_END_FRACTION
* The start of the animation is at #ALPHA_APPEAR_START_FRACTION
@@ -111,6 +114,7 @@
private float mOverrideAmount;
private boolean mShadowHidden;
private boolean mIsHeadsUpAnimation;
+ private boolean mIsHeadsUpCycling;
/* In order to track headsup longpress coorindate. */
protected Point mTargetPoint;
private boolean mDismissed;
@@ -349,10 +353,12 @@
@Override
public long performRemoveAnimation(long duration, long delay, float translationDirection,
- boolean isHeadsUpAnimation, Runnable onStartedRunnable, Runnable onFinishedRunnable,
- AnimatorListenerAdapter animationListener, ClipSide clipSide) {
+ boolean isHeadsUpAnimation, boolean isHeadsUpCycling, Runnable onStartedRunnable,
+ Runnable onFinishedRunnable, AnimatorListenerAdapter animationListener,
+ ClipSide clipSide) {
enableAppearDrawing(true);
mIsHeadsUpAnimation = isHeadsUpAnimation;
+ mIsHeadsUpCycling = isHeadsUpCycling;
if (mDrawingAppearAnimation) {
startAppearAnimation(false /* isAppearing */, translationDirection,
delay, duration, onStartedRunnable, onFinishedRunnable, animationListener,
@@ -370,9 +376,10 @@
@Override
public void performAddAnimation(long delay, long duration, boolean isHeadsUpAppear,
- Runnable onFinishRunnable) {
+ boolean isHeadsUpCycling, Runnable onFinishRunnable) {
enableAppearDrawing(true);
mIsHeadsUpAnimation = isHeadsUpAppear;
+ mIsHeadsUpCycling = isHeadsUpCycling;
if (mDrawingAppearAnimation) {
startAppearAnimation(true /* isAppearing */, isHeadsUpAppear ? 0.0f : -1.0f, delay,
duration, null, null, null, ClipSide.BOTTOM);
@@ -404,14 +411,14 @@
targetValue = 0.0f;
}
- if (NotificationHeadsUpCycling.isEnabled()) {
- // TODO(b/316404716): add avalanche filtering
+ if (NotificationHeadsUpCycling.isEnabled() && !useNonLinearAnimation()) {
mCurrentAppearInterpolator = Interpolators.LINEAR;
}
mAppearAnimator = ValueAnimator.ofFloat(mAppearAnimationFraction,
targetValue);
- mAppearAnimator.setInterpolator(mCurrentAppearInterpolator);
+ mAppearAnimator.setInterpolator(
+ useNonLinearAnimation() ? Interpolators.LINEAR : mCurrentAppearInterpolator);
mAppearAnimator.setDuration(
(long) (duration * Math.abs(mAppearAnimationFraction - targetValue)));
mAppearAnimator.addUpdateListener(animation -> {
@@ -530,7 +537,13 @@
* @param clipSide Which side if view we want to clip from
*/
private void updateAppearRect(ClipSide clipSide) {
- float interpolatedFraction = mAppearAnimationFraction;
+ float interpolatedFraction;
+ if (useNonLinearAnimation()) {
+ interpolatedFraction = mCurrentAppearInterpolator.getInterpolation(
+ mAppearAnimationFraction);
+ } else {
+ interpolatedFraction = mAppearAnimationFraction;
+ }
mAppearAnimationTranslation = (1.0f - interpolatedFraction) * mAnimationTranslationY;
final int fullHeight = getActualHeight();
float height = fullHeight * interpolatedFraction;
@@ -558,6 +571,11 @@
}
}
+ private boolean useNonLinearAnimation() {
+ return notificationAppearNonlinear() && (!mIsHeadsUpCycling
+ || physicalNotificationMovement());
+ }
+
private void updateAppearRect() {
updateAppearRect(ClipSide.BOTTOM);
}
@@ -567,7 +585,7 @@
mAppearAnimationFraction,
ALPHA_APPEAR_START_FRACTION,
ALPHA_APPEAR_END_FRACTION,
- Interpolators.ALPHA_IN
+ notificationAppearNonlinear() ? mCurrentAppearInterpolator : Interpolators.ALPHA_IN
);
}
@@ -813,6 +831,7 @@
pw.print("mDrawingAppearAnimation", mDrawingAppearAnimation);
pw.print("mAppearAnimationFraction", mAppearAnimationFraction);
pw.print("mIsHeadsUpAnimation", mIsHeadsUpAnimation);
+ pw.print("mIsHeadsUpCycling", mIsHeadsUpCycling);
pw.print("mTargetPoint", mTargetPoint);
pw.println();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index 6f7eade1..4c74408 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -2182,7 +2182,7 @@
R.dimen.notification_min_height);
}
mMaxSmallHeightWithSummarization = NotificationUtils.getFontScaledHeight(mContext,
- com.android.internal.R.dimen.notification_collapsed_height_with_summarization);
+ com.android.internal.R.dimen.notification_min_height);
mMaxExpandedHeight = NotificationUtils.getFontScaledHeight(mContext,
R.dimen.notification_max_height);
mMaxExpandedHeightForPromotedOngoing = NotificationUtils.getFontScaledHeight(mContext,
@@ -3494,20 +3494,17 @@
@Override
public void performAddAnimation(long delay, long duration, boolean isHeadsUpAppear,
- Runnable onFinishRunnable) {
+ boolean isHeadsUpCycling, Runnable onFinishRunnable) {
mLogger.logStartAppearAnimation(mLoggingKey, /* isAppear = */ true);
- super.performAddAnimation(delay, duration, isHeadsUpAppear, onFinishRunnable);
+ super.performAddAnimation(delay, duration, isHeadsUpAppear, isHeadsUpCycling,
+ onFinishRunnable);
}
@Override
- public long performRemoveAnimation(
- long duration,
- long delay,
- float translationDirection,
- boolean isHeadsUpAnimation,
- Runnable onStartedRunnable,
- Runnable onFinishedRunnable,
- AnimatorListenerAdapter animationListener, ClipSide clipSide) {
+ public long performRemoveAnimation(long duration, long delay, float translationDirection,
+ boolean isHeadsUpAnimation, boolean isHeadsUpCycling, Runnable onStartedRunnable,
+ Runnable onFinishedRunnable, AnimatorListenerAdapter animationListener,
+ ClipSide clipSide) {
mLogger.logStartAppearAnimation(mLoggingKey, /* isAppear = */ false);
if (mMenuRow != null && mMenuRow.isMenuVisible()) {
Animator anim = getTranslateViewAnimator(0f, null /* listener */);
@@ -3522,9 +3519,9 @@
@Override
public void onAnimationEnd(Animator animation) {
- ExpandableNotificationRow.super.performRemoveAnimation(
- duration, delay, translationDirection, isHeadsUpAnimation,
- null, onFinishedRunnable, animationListener, ClipSide.BOTTOM);
+ ExpandableNotificationRow.super.performRemoveAnimation(duration, delay,
+ translationDirection, isHeadsUpAnimation, isHeadsUpCycling, null,
+ onFinishedRunnable, animationListener, ClipSide.BOTTOM);
}
});
anim.start();
@@ -3532,8 +3529,8 @@
}
}
return super.performRemoveAnimation(duration, delay, translationDirection,
- isHeadsUpAnimation, onStartedRunnable, onFinishedRunnable, animationListener,
- clipSide);
+ isHeadsUpAnimation, isHeadsUpCycling, onStartedRunnable, onFinishedRunnable,
+ animationListener, clipSide);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
index da664f8..292f74a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
@@ -467,7 +467,8 @@
* remove animation should be performed upwards,
* such that the child appears to be going away to the top. 1
* Should mean the opposite.
- * @param isHeadsUpAnimation Is this a headsUp animation.
+ * @param isHeadsUpAnimation Is this a headsUp animation
+ * @param isHeadsUpCycling Is this the cycling heads up animation
* @param onFinishedRunnable A runnable which should be run when the animation is finished.
* @param animationListener An animation listener to add to the animation.
* @return The additional delay, in milliseconds, that this view needs to add before the
@@ -475,7 +476,7 @@
*/
public abstract long performRemoveAnimation(long duration,
long delay, float translationDirection, boolean isHeadsUpAnimation,
- Runnable onStartedRunnable,
+ boolean isHeadsUpCycling, Runnable onStartedRunnable,
Runnable onFinishedRunnable,
AnimatorListenerAdapter animationListener, ClipSide clipSide);
@@ -485,11 +486,12 @@
}
public void performAddAnimation(long delay, long duration, boolean isHeadsUpAppear) {
- performAddAnimation(delay, duration, isHeadsUpAppear, null);
+ performAddAnimation(delay, duration, isHeadsUpAppear, false /* isHeadsUpCycling */,
+ null);
}
public abstract void performAddAnimation(long delay, long duration, boolean isHeadsUpAppear,
- Runnable onEndRunnable);
+ boolean isHeadsUpCycling, Runnable onEndRunnable);
public int getPinnedHeadsUpHeight() {
return getIntrinsicHeight();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
index c31f4ad..4b2b168 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
@@ -998,6 +998,10 @@
entry.setPromotedNotificationContentModel(result.mPromotedContent);
}
+ if (PromotedNotificationUiForceExpanded.isEnabled()) {
+ row.setPromotedOngoing(entry.isOngoingPromoted());
+ }
+
boolean setRepliesAndActions = true;
if ((reInflateFlags & FLAG_CONTENT_VIEW_CONTRACTED) != 0) {
if (result.inflatedContentView != null) {
@@ -1130,9 +1134,6 @@
entry.setHeadsUpStatusBarText(result.headsUpStatusBarText);
entry.setHeadsUpStatusBarTextPublic(result.headsUpStatusBarTextPublic);
- if (PromotedNotificationUiForceExpanded.isEnabled()) {
- row.setPromotedOngoing(entry.isOngoingPromoted());
- }
Trace.endAsyncSection(APPLY_TRACE_METHOD, System.identityHashCode(row));
if (endListener != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/StackScrollerDecorView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/StackScrollerDecorView.java
index cd228e7..a064d1c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/StackScrollerDecorView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/StackScrollerDecorView.java
@@ -260,7 +260,7 @@
@Override
public long performRemoveAnimation(long duration, long delay,
float translationDirection, boolean isHeadsUpAnimation,
- Runnable onStartedRunnable,
+ boolean isHeadsUpCycling, Runnable onStartedRunnable,
Runnable onFinishedRunnable,
AnimatorListenerAdapter animationListener, ClipSide clipSide) {
// TODO: Use duration
@@ -279,7 +279,7 @@
@Override
public void performAddAnimation(long delay, long duration, boolean isHeadsUpAppear,
- Runnable endRunnable) {
+ boolean isHeadsUpCycling, Runnable endRunnable) {
// TODO: use delay and duration
setContentVisibleAnimated(true);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCallTemplateViewWrapper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCallTemplateViewWrapper.kt
index 2d94694..e887e25 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCallTemplateViewWrapper.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCallTemplateViewWrapper.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.notification.row.wrapper
+import android.app.Flags.notificationsRedesignTemplates
import android.content.Context
import android.view.View
import com.android.internal.widget.CachingIconView
@@ -25,17 +26,13 @@
import com.android.systemui.statusbar.notification.NotificationUtils
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
-/**
- * Wraps a notification containing a call template
- */
-class NotificationCallTemplateViewWrapper constructor(
- ctx: Context,
- view: View,
- row: ExpandableNotificationRow
-) : NotificationTemplateViewWrapper(ctx, view, row) {
+/** Wraps a notification containing a call template */
+class NotificationCallTemplateViewWrapper
+constructor(ctx: Context, view: View, row: ExpandableNotificationRow) :
+ NotificationTemplateViewWrapper(ctx, view, row) {
private val minHeightWithActions: Int =
- NotificationUtils.getFontScaledHeight(ctx, R.dimen.notification_max_height)
+ NotificationUtils.getFontScaledHeight(ctx, R.dimen.notification_max_height)
private val callLayout: CallLayout = view as CallLayout
private lateinit var conversationIconContainer: View
@@ -48,13 +45,17 @@
private fun resolveViews() {
with(callLayout) {
conversationIconContainer =
- requireViewById(com.android.internal.R.id.conversation_icon_container)
+ requireViewById(com.android.internal.R.id.conversation_icon_container)
conversationIconView = requireViewById(com.android.internal.R.id.conversation_icon)
conversationBadgeBg =
- requireViewById(com.android.internal.R.id.conversation_icon_badge_bg)
+ requireViewById(com.android.internal.R.id.conversation_icon_badge_bg)
expandBtn = requireViewById(com.android.internal.R.id.expand_button)
appName = requireViewById(com.android.internal.R.id.app_name_text)
- conversationTitleView = requireViewById(com.android.internal.R.id.conversation_text)
+ conversationTitleView =
+ requireViewById(
+ if (notificationsRedesignTemplates()) com.android.internal.R.id.title
+ else com.android.internal.R.id.conversation_text
+ )
}
}
@@ -68,20 +69,12 @@
override fun updateTransformedTypes() {
// This also clears the existing types
super.updateTransformedTypes()
- addTransformedViews(
- appName,
- conversationTitleView
- )
- addViewsTransformingToSimilar(
- conversationIconView,
- conversationBadgeBg,
- expandBtn
- )
+ addTransformedViews(appName, conversationTitleView)
+ addViewsTransformingToSimilar(conversationIconView, conversationBadgeBg, expandBtn)
}
override fun disallowSingleClick(x: Float, y: Float): Boolean {
- val isOnExpandButton = expandBtn.visibility == View.VISIBLE &&
- isOnView(expandBtn, x, y)
+ val isOnExpandButton = expandBtn.visibility == View.VISIBLE && isOnView(expandBtn, x, y)
return isOnExpandButton || super.disallowSingleClick(x, y)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt
index 6a96fba..3d5f9e4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt
@@ -174,7 +174,8 @@
// and the top level image message container.
val containers =
messageContainers.asSequence().map { it.messageContainer } +
- if (notificationsRedesignTemplates()) emptySequence()
+ if (notificationsRedesignTemplates() && imageMessageContainer == null)
+ emptySequence()
else sequenceOf(imageMessageContainer!!)
val drawables =
containers
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java
index e8affaa..e9eecdd8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java
@@ -31,7 +31,6 @@
import android.view.animation.Interpolator;
import android.view.animation.PathInterpolator;
import android.widget.DateTimeView;
-import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -42,7 +41,6 @@
import com.android.internal.widget.CachingIconView;
import com.android.internal.widget.NotificationCloseButton;
import com.android.internal.widget.NotificationExpandButton;
-import com.android.systemui.Flags;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.TransformableView;
import com.android.systemui.statusbar.ViewTransformationHelper;
@@ -69,7 +67,6 @@
private CachingIconView mIcon;
private NotificationCloseButton mCloseButton;
private NotificationExpandButton mExpandButton;
- private FrameLayout mExpandButtonSpacer;
private View mAltExpandTarget;
private View mIconContainer;
protected NotificationHeaderView mNotificationHeader;
@@ -157,10 +154,6 @@
mHeaderText = mView.findViewById(com.android.internal.R.id.header_text);
mAppNameText = mView.findViewById(com.android.internal.R.id.app_name_text);
mExpandButton = mView.findViewById(com.android.internal.R.id.expand_button);
- if (Flags.uiRichOngoingForceExpanded()) {
- mExpandButtonSpacer =
- mView.findViewById(com.android.internal.R.id.expand_button_spacer);
- }
mAltExpandTarget = mView.findViewById(com.android.internal.R.id.alternate_expand_target);
mIconContainer = mView.findViewById(com.android.internal.R.id.conversation_icon_container);
mWorkProfileImage = mView.findViewById(com.android.internal.R.id.profile_badge);
@@ -302,9 +295,6 @@
boolean expandable,
View.OnClickListener onClickListener,
boolean requestLayout) {
- if (Flags.uiRichOngoingForceExpanded() && mExpandButtonSpacer != null) {
- mExpandButtonSpacer.setVisibility(expandable ? GONE : VISIBLE);
- }
mExpandButton.setVisibility(expandable ? VISIBLE : GONE);
mExpandButton.setOnClickListener(expandable ? onClickListener : null);
if (mAltExpandTarget != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java
index 3ccf506..b9aa571 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java
@@ -33,6 +33,7 @@
import android.service.notification.StatusBarNotification;
import android.util.ArraySet;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
@@ -42,6 +43,7 @@
import com.android.internal.util.ContrastColorUtil;
import com.android.internal.widget.NotificationActionListLayout;
import com.android.systemui.Dependency;
+import com.android.systemui.Flags;
import com.android.systemui.UiOffloadThread;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.CrossFadeHelper;
@@ -51,6 +53,7 @@
import com.android.systemui.statusbar.notification.TransformState;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.HybridNotificationView;
+import com.android.systemui.util.DimensionKt;
import java.util.function.Consumer;
@@ -186,9 +189,43 @@
mActions = mView.findViewById(com.android.internal.R.id.actions);
mRemoteInputHistory = mView.findViewById(
com.android.internal.R.id.notification_material_reply_container);
+
+ adjustTitleAndRightIconForPromotedOngoing();
updatePendingIntentCancellations();
}
+ private void adjustTitleAndRightIconForPromotedOngoing() {
+ if (Flags.uiRichOngoingForceExpanded() && mRow.isPromotedOngoing() && mRightIcon != null) {
+ final int horizontalMargin;
+ if (notificationsRedesignTemplates()) {
+ horizontalMargin = mView.getResources().getDimensionPixelSize(
+ com.android.internal.R.dimen.notification_2025_margin);
+ } else {
+ horizontalMargin = (int) DimensionKt.dpToPx(16, mView.getContext());
+ }
+
+ // position right icon to the right available space from expander.
+ final ViewGroup.MarginLayoutParams rightIconLP =
+ (ViewGroup.MarginLayoutParams) mRightIcon.getLayoutParams();
+ rightIconLP.setMarginEnd(horizontalMargin);
+ mRightIcon.setLayoutParams(rightIconLP);
+
+ // align top line view to start of the right icon.
+ final int iconSize = mView.getResources().getDimensionPixelSize(
+ com.android.internal.R.dimen.notification_right_icon_size);
+ final int marginEnd = 2 * horizontalMargin + iconSize;
+ mNotificationTopLine.setHeaderTextMarginEnd(marginEnd);
+
+ // title has too much margin on the right, so we need to reduce it
+ if (mTitle != null) {
+ final ViewGroup.MarginLayoutParams titleLP =
+ (ViewGroup.MarginLayoutParams) mTitle.getLayoutParams();
+ titleLP.setMarginEnd(marginEnd);
+ mTitle.setLayoutParams(titleLP);
+ }
+ }
+ }
+
@Nullable
protected final Icon getLargeIcon(Notification n) {
Icon modernLargeIcon = n.getLargeIcon();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MediaContainerView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MediaContainerView.kt
index bd7bd59..4d10a52 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MediaContainerView.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MediaContainerView.kt
@@ -70,14 +70,15 @@
}
override fun performRemoveAnimation(
- duration: Long,
- delay: Long,
- translationDirection: Float,
- isHeadsUpAnimation: Boolean,
- onStartedRunnable: Runnable?,
- onFinishedRunnable: Runnable?,
- animationListener: AnimatorListenerAdapter?,
- clipSide: ClipSide
+ duration: Long,
+ delay: Long,
+ translationDirection: Float,
+ isHeadsUpAnimation: Boolean,
+ isHeadsUpCycling: Boolean,
+ onStartedRunnable: Runnable?,
+ onFinishedRunnable: Runnable?,
+ animationListener: AnimatorListenerAdapter?,
+ clipSide: ClipSide,
): Long {
return 0
}
@@ -86,7 +87,8 @@
delay: Long,
duration: Long,
isHeadsUpAppear: Boolean,
- onEnd: Runnable?
+ isHeadsUpCycling: Boolean,
+ onEnd: Runnable?,
) {
// No animation, it doesn't need it, this would be local
}
@@ -103,9 +105,7 @@
assertMediaContainerVisibility(visibility)
}
- /**
- * visibility should be aligned with MediaContainerView visibility on the keyguard.
- */
+ /** visibility should be aligned with MediaContainerView visibility on the keyguard. */
private fun isVisibilityValid(visibility: Int): Boolean {
val currentViewState = viewState as? MediaContainerViewState ?: return true
val shouldBeGone = !currentViewState.shouldBeVisible
@@ -113,8 +113,7 @@
}
/**
- * b/298213983
- * MediaContainerView's visibility is changed to VISIBLE when it should be GONE.
+ * b/298213983 MediaContainerView's visibility is changed to VISIBLE when it should be GONE.
* This method check this state and logs.
*/
private fun assertMediaContainerVisibility(visibility: Int) {
@@ -122,8 +121,10 @@
if (currentViewState is MediaContainerViewState) {
if (!currentViewState.shouldBeVisible && visibility == VISIBLE) {
- Log.wtf("MediaContainerView", "MediaContainerView should be GONE " +
- "but its visibility changed to VISIBLE")
+ Log.wtf(
+ "MediaContainerView",
+ "MediaContainerView should be GONE " + "but its visibility changed to VISIBLE",
+ )
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
index 5e0d57e..2b05223 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
@@ -506,8 +506,8 @@
}
changingView.performRemoveAnimation(ANIMATION_DURATION_APPEAR_DISAPPEAR,
0 /* delay */, translationDirection, false /* isHeadsUpAppear */,
- startAnimation, postAnimation, getGlobalAnimationFinishedListener(),
- ExpandableView.ClipSide.BOTTOM);
+ false /* isHeadsUpCycling */, startAnimation, postAnimation,
+ getGlobalAnimationFinishedListener(), ExpandableView.ClipSide.BOTTOM);
needsCustomAnimation = true;
} else if (event.animationType ==
NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_REMOVE_SWIPED_OUT) {
@@ -538,7 +538,7 @@
};
}
changingView.performAddAnimation(0, ANIMATION_DURATION_HEADS_UP_CYCLING,
- /* isHeadsUpAppear= */ true, onAnimationEnd);
+ /* isHeadsUpAppear= */ true, /* isHeadsUpCycling= */ true, onAnimationEnd);
} else if (event.animationType == ANIMATION_TYPE_HEADS_UP_APPEAR) {
mHeadsUpAppearChildren.add(changingView);
@@ -559,7 +559,7 @@
onAnimationEnd = () -> mLogger.appearAnimationEnded(finalKey);
}
changingView.performAddAnimation(0, ANIMATION_DURATION_HEADS_UP_APPEAR,
- /* isHeadsUpAppear= */ true, onAnimationEnd);
+ /* isHeadsUpAppear= */ true, /* isHeadsUpCycling= */ false, onAnimationEnd);
} else if (event.animationType == ANIMATION_TYPE_HEADS_UP_CYCLING_OUT) {
mHeadsUpDisappearChildren.add(changingView);
Runnable endRunnable = null;
@@ -629,6 +629,7 @@
// translation, the actual translation is in StackScrollAlgorithm.
/* translationDirection= */ 0.0f,
/* isHeadsUpAnimation= */ true,
+ /* isHeadsUpCycling= */ true,
startAnimation, postAnimation,
getGlobalAnimationFinishedListener(), ExpandableView.ClipSide.TOP);
mAnimationProperties.delay += removeAnimationDelay;
@@ -706,6 +707,7 @@
long removeAnimationDelay = changingView.performRemoveAnimation(
ANIMATION_DURATION_HEADS_UP_DISAPPEAR,
0, 0.0f, true /* isHeadsUpAppear */,
+ false /* isHeadsUpCycling */,
startAnimation, postAnimation,
getGlobalAnimationFinishedListener(), ExpandableView.ClipSide.BOTTOM);
mAnimationProperties.delay += removeAnimationDelay;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModel.kt
index 08d98a1..1dbaf2f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModel.kt
@@ -147,7 +147,7 @@
sceneInteractor.transitionState.map { transition: ObservableTransitionState ->
transition is Transition &&
transition.fromContent == Scenes.Lockscreen &&
- (transition.toContent == Scenes.Bouncer || transition.toContent == Scenes.Gone)
+ (transition.toContent == Overlays.Bouncer || transition.toContent == Scenes.Gone)
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
index 34b6560..877aa76 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
@@ -76,6 +76,7 @@
import com.android.systemui.keyguard.ui.viewmodel.ViewStateAccessor
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.LargeScreenHeaderHelper
import com.android.systemui.shade.ShadeDisplayAware
@@ -307,7 +308,7 @@
keyguardTransitionInteractor.transitionValue(ALTERNATE_BOUNCER).map { it > 0f },
keyguardTransitionInteractor
.transitionValue(
- scene = Scenes.Bouncer,
+ content = Overlays.Bouncer,
stateWithoutSceneContainer = PRIMARY_BOUNCER,
)
.map { it > 0f },
@@ -361,7 +362,7 @@
private val isOnGlanceableHub: Flow<Boolean> =
combine(
keyguardTransitionInteractor.isFinishedIn(
- scene = Scenes.Communal,
+ content = Scenes.Communal,
stateWithoutSceneContainer = GLANCEABLE_HUB,
),
anyOf(
@@ -638,7 +639,7 @@
anyOf(
isKeyguardOccluded,
keyguardTransitionInteractor
- .transitionValue(scene = Scenes.Gone, stateWithoutSceneContainer = GONE)
+ .transitionValue(content = Scenes.Gone, stateWithoutSceneContainer = GONE)
.map { it == 1f },
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index bc29769..8c44fe5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -84,7 +84,7 @@
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.scene.domain.interactor.SceneInteractor;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
-import com.android.systemui.scene.shared.model.Scenes;
+import com.android.systemui.scene.shared.model.Overlays;
import com.android.systemui.shade.ShadeController;
import com.android.systemui.shade.ShadeExpansionChangeEvent;
import com.android.systemui.shade.ShadeExpansionListener;
@@ -724,8 +724,10 @@
if (!primaryBouncerIsShowing()) {
if (SceneContainerFlag.isEnabled()) {
mCentralSurfaces.hideKeyguard();
- mSceneInteractorLazy.get().changeScene(
- Scenes.Bouncer, "StatusBarKeyguardViewManager.showBouncerOrKeyguard");
+ mSceneInteractorLazy.get().showOverlay(
+ Overlays.Bouncer,
+ "StatusBarKeyguardViewManager.showBouncerOrKeyguard"
+ );
} else {
if (Flags.simPinRaceConditionOnRestart()) {
if (mPrimaryBouncerInteractor.show(/* isScrimmed= */ true)) {
@@ -816,8 +818,8 @@
/* clearDismissAction= */ !SceneContainerFlag.isEnabled());
if (mKeyguardStateController.isShowing() && !isBouncerShowing()) {
if (SceneContainerFlag.isEnabled()) {
- mSceneInteractorLazy.get().changeScene(
- Scenes.Bouncer,
+ mSceneInteractorLazy.get().showOverlay(
+ Overlays.Bouncer,
"primary bouncer requested"
);
} else {
@@ -915,8 +917,10 @@
// we'll handle the dismiss action after keyguard is gone, so just show the
// bouncer
if (SceneContainerFlag.isEnabled()) {
- mSceneInteractorLazy.get().changeScene(
- Scenes.Bouncer, "StatusBarKeyguardViewManager.dismissWithAction");
+ mSceneInteractorLazy.get().showOverlay(
+ Overlays.Bouncer,
+ "StatusBarKeyguardViewManager.dismissWithAction"
+ );
} else {
mPrimaryBouncerInteractor.show(/* isScrimmed= */ true);
}
@@ -926,8 +930,10 @@
mPrimaryBouncerInteractor.setDismissAction(
mAfterKeyguardGoneAction, mKeyguardGoneCancelAction);
if (SceneContainerFlag.isEnabled()) {
- mSceneInteractorLazy.get().changeScene(
- Scenes.Bouncer, "StatusBarKeyguardViewManager.dismissWithAction");
+ mSceneInteractorLazy.get().showOverlay(
+ Overlays.Bouncer,
+ "StatusBarKeyguardViewManager.dismissWithAction"
+ );
} else {
mPrimaryBouncerInteractor.show(/* isScrimmed= */ true);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt
index d336903..2efc057 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt
@@ -20,6 +20,7 @@
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
+import android.content.pm.PackageManager
import android.telephony.CarrierConfigManager
import android.telephony.SubscriptionInfo
import android.telephony.SubscriptionManager
@@ -192,6 +193,19 @@
serviceStateChangedEvent
.mapLatest {
val modems = telephonyManager.activeModemCount
+
+ // Assume false for automotive devices which don't have the calling feature.
+ // TODO: b/398045526 to revisit the below.
+ val isAutomotive: Boolean =
+ context.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
+ val hasFeatureCalling: Boolean =
+ context.packageManager.hasSystemFeature(
+ PackageManager.FEATURE_TELEPHONY_CALLING
+ )
+ if (isAutomotive && !hasFeatureCalling) {
+ return@mapLatest false
+ }
+
// Check the service state for every modem. If any state reports emergency calling
// capable, then consider the device to have emergency call capabilities
(0..<modems)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt
index e37c3f1..ac301b0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt
@@ -94,7 +94,12 @@
}
private val satelliteProvider by lazy {
- CarrierBasedSatelliteViewModelImpl(subscriptionId, iconInteractor)
+ CarrierBasedSatelliteViewModelImpl(
+ subscriptionId,
+ airplaneModeInteractor,
+ iconInteractor,
+ scope,
+ )
}
/**
@@ -145,9 +150,15 @@
/** Representation of this network when it is non-terrestrial (e.g., satellite) */
private class CarrierBasedSatelliteViewModelImpl(
override val subscriptionId: Int,
+ airplaneModeInteractor: AirplaneModeInteractor,
interactor: MobileIconInteractor,
+ scope: CoroutineScope,
) : MobileIconViewModelCommon {
- override val isVisible: StateFlow<Boolean> = MutableStateFlow(true)
+ override val isVisible: StateFlow<Boolean> =
+ airplaneModeInteractor.isAirplaneMode
+ .map { !it }
+ .stateIn(scope, SharingStarted.WhileSubscribed(), false)
+
override val icon: Flow<SignalIconModel> = interactor.signalLevelIcon
override val contentDescription: Flow<MobileContentDescription?> = MutableStateFlow(null)
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 39a1b46..4189221 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
@@ -37,6 +37,10 @@
import com.android.compose.theme.PlatformTheme
import com.android.keyguard.AlphaOptimizedLinearLayout
import com.android.systemui.lifecycle.rememberViewModel
+import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager
+import com.android.systemui.media.controls.ui.view.MediaHost
+import com.android.systemui.media.controls.ui.view.MediaHostState
+import com.android.systemui.media.dagger.MediaModule.POPUP
import com.android.systemui.plugins.DarkIconDispatcher
import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.ui.compose.OngoingActivityChips
@@ -67,6 +71,7 @@
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel.HomeStatusBarViewModelFactory
import javax.inject.Inject
+import javax.inject.Named
/** Factory to simplify the dependency management for [StatusBarRoot] */
class StatusBarRootFactory
@@ -81,6 +86,8 @@
private val ongoingCallController: OngoingCallController,
private val darkIconDispatcherStore: DarkIconDispatcherStore,
private val eventAnimationInteractor: SystemStatusEventAnimationInteractor,
+ private val mediaHierarchyManager: MediaHierarchyManager,
+ @Named(POPUP) private val mediaHost: MediaHost,
) {
fun create(root: ViewGroup, andThen: (ViewGroup) -> Unit): ComposeView {
val composeView = ComposeView(root.context)
@@ -99,6 +106,8 @@
ongoingCallController = ongoingCallController,
darkIconDispatcher = darkIconDispatcher,
eventAnimationInteractor = eventAnimationInteractor,
+ mediaHierarchyManager = mediaHierarchyManager,
+ mediaHost = mediaHost,
onViewCreated = andThen,
)
}
@@ -130,6 +139,8 @@
ongoingCallController: OngoingCallController,
darkIconDispatcher: DarkIconDispatcher,
eventAnimationInteractor: SystemStatusEventAnimationInteractor,
+ mediaHierarchyManager: MediaHierarchyManager,
+ mediaHost: MediaHost,
onViewCreated: (ViewGroup) -> Unit,
) {
val displayId = parent.context.displayId
@@ -237,6 +248,15 @@
// Add a composable container for `StatusBarPopupChip`s
if (StatusBarPopupChips.isEnabled) {
+ with(mediaHost) {
+ expansion = MediaHostState.EXPANDED
+ expandedMatchesParentHeight = true
+ showsOnlyActiveMedia = true
+ falsingProtectionNeeded = false
+ disablePagination = true
+ init(MediaHierarchyManager.LOCATION_STATUS_BAR_POPUP)
+ }
+
val endSideContent =
phoneStatusBarView.requireViewById<AlphaOptimizedLinearLayout>(
R.id.status_bar_end_side_content
@@ -256,7 +276,12 @@
setContent {
StatusBarPopupChipsContainer(
- chips = statusBarViewModel.popupChips
+ chips = statusBarViewModel.popupChips,
+ mediaHost = mediaHost,
+ onMediaControlPopupVisibilityChanged = { popupShowing ->
+ mediaHierarchyManager.isMediaControlPopupShowing =
+ popupShowing
+ },
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModel.kt
index 7d9a7d4..2dc17f4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModel.kt
@@ -78,6 +78,7 @@
currentScene == Scenes.Lockscreen &&
Overlays.NotificationsShade !in currentOverlays &&
Overlays.QuickSettingsShade !in currentOverlays &&
+ Overlays.Bouncer !in currentOverlays &&
!isDozing &&
!showHeadsUpStatusBar
}
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt
index d8a9527..d2f1d3c 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt
@@ -133,14 +133,14 @@
override fun BackGesture(
onDoneButtonClicked: () -> Unit,
onBack: () -> Unit,
- isAutoProceed: Boolean,
+ onAutoProceed: (suspend () -> Unit)?,
) {
BackGestureTutorialScreen(
backGestureScreenViewModel,
easterEggGestureViewModel,
onDoneButtonClicked,
onBack,
- isAutoProceed,
+ onAutoProceed,
)
}
@@ -148,14 +148,14 @@
override fun HomeGesture(
onDoneButtonClicked: () -> Unit,
onBack: () -> Unit,
- isAutoProceed: Boolean,
+ onAutoProceed: (suspend () -> Unit)?,
) {
HomeGestureTutorialScreen(
homeGestureScreenViewModel,
easterEggGestureViewModel,
onDoneButtonClicked,
onBack,
- isAutoProceed,
+ onAutoProceed,
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt
index c28483c..2e2a97d9 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt
@@ -33,7 +33,7 @@
easterEggGestureViewModel: EasterEggGestureViewModel,
onDoneButtonClicked: () -> Unit,
onBack: () -> Unit,
- isAutoProceed: Boolean = false,
+ onAutoProceed: (suspend () -> Unit)? = null,
) {
val screenConfig =
TutorialScreenConfig(
@@ -48,7 +48,6 @@
bodyErrorResId = R.string.touchpad_back_gesture_error_body,
),
animations = TutorialScreenConfig.Animations(educationResId = R.raw.trackpad_back_edu),
- hasNextButton = isAutoProceed,
)
GestureTutorialScreen(
screenConfig = screenConfig,
@@ -61,6 +60,7 @@
onEasterEggFinished = easterEggGestureViewModel::onEasterEggFinished,
onDoneButtonClicked = onDoneButtonClicked,
onBack = onBack,
+ onAutoProceed = onAutoProceed,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/GestureTutorialScreen.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/GestureTutorialScreen.kt
index 47c82e3..db3e31b 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/GestureTutorialScreen.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/GestureTutorialScreen.kt
@@ -49,6 +49,7 @@
onEasterEggFinished: () -> Unit,
onDoneButtonClicked: () -> Unit,
onBack: () -> Unit,
+ onAutoProceed: (suspend () -> Unit)? = null,
) {
BackHandler(onBack = onBack)
var cachedTutorialState: TutorialActionState by
@@ -64,7 +65,7 @@
easterEggTriggered,
onEasterEggFinished,
) {
- ActionTutorialContent(tutorialState, onDoneButtonClicked, screenConfig)
+ ActionTutorialContent(tutorialState, onDoneButtonClicked, screenConfig, onAutoProceed)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt
index b238a8d..3e27dfb 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt
@@ -32,7 +32,7 @@
easterEggGestureViewModel: EasterEggGestureViewModel,
onDoneButtonClicked: () -> Unit,
onBack: () -> Unit,
- isAutoProceed: Boolean = false,
+ onAutoProceed: (suspend () -> Unit)? = null,
) {
val screenConfig =
TutorialScreenConfig(
@@ -47,7 +47,6 @@
bodyErrorResId = R.string.touchpad_home_gesture_error_body,
),
animations = TutorialScreenConfig.Animations(educationResId = R.raw.trackpad_home_edu),
- hasNextButton = isAutoProceed,
)
GestureTutorialScreen(
screenConfig = screenConfig,
@@ -60,6 +59,7 @@
onEasterEggFinished = easterEggGestureViewModel::onEasterEggFinished,
onDoneButtonClicked = onDoneButtonClicked,
onBack = onBack,
+ onAutoProceed = onAutoProceed,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserLockedInteractor.kt b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserLockedInteractor.kt
index ef29a38..3bd8af6 100644
--- a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserLockedInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserLockedInteractor.kt
@@ -18,12 +18,20 @@
import android.os.UserHandle
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.CoroutineDispatcher
import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.flowOn
@SysUISingleton
-class UserLockedInteractor @Inject constructor(val userRepository: UserRepository) {
+class UserLockedInteractor
+@Inject
+constructor(
+ @Background val backgroundDispatcher: CoroutineDispatcher,
+ val userRepository: UserRepository,
+) {
fun isUserUnlocked(userHandle: UserHandle?): Flow<Boolean> =
- userRepository.isUserUnlocked(userHandle)
+ userRepository.isUserUnlocked(userHandle).flowOn(backgroundDispatcher)
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/Events.java b/packages/SystemUI/src/com/android/systemui/volume/Events.java
index e10d1cb..b8eb518 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/Events.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/Events.java
@@ -37,16 +37,16 @@
public class Events {
private static final String TAG = Util.logTag(Events.class);
- public static final int EVENT_SHOW_DIALOG = 0; // (reason|int) (keyguard|bool)
- public static final int EVENT_DISMISS_DIALOG = 1; // (reason|int)
+ @Deprecated public static final int EVENT_SHOW_DIALOG = 0; // (reason|int) (keyguard|bool)
+ @Deprecated public static final int EVENT_DISMISS_DIALOG = 1; // (reason|int)
public static final int EVENT_ACTIVE_STREAM_CHANGED = 2; // (stream|int)
public static final int EVENT_EXPAND = 3; // (expand|bool)
public static final int EVENT_KEY = 4; // (stream|int) (lastAudibleStreamVolume)
public static final int EVENT_COLLECTION_STARTED = 5;
public static final int EVENT_COLLECTION_STOPPED = 6;
- public static final int EVENT_ICON_CLICK = 7; // (stream|int) (icon_state|int)
- public static final int EVENT_SETTINGS_CLICK = 8;
- public static final int EVENT_TOUCH_LEVEL_CHANGED = 9; // (stream|int) (level|int)
+ @Deprecated public static final int EVENT_ICON_CLICK = 7; // (stream|int) (icon_state|int)
+ @Deprecated public static final int EVENT_SETTINGS_CLICK = 8;
+ @Deprecated public static final int EVENT_TOUCH_LEVEL_CHANGED = 9; // (stream|int) (level|int)
public static final int EVENT_LEVEL_CHANGED = 10; // (stream|int) (level|int)
public static final int EVENT_INTERNAL_RINGER_MODE_CHANGED = 11; // (mode|int)
public static final int EVENT_EXTERNAL_RINGER_MODE_CHANGED = 12; // (mode|int)
@@ -55,12 +55,12 @@
public static final int EVENT_MUTE_CHANGED = 15; // (stream|int) (muted|bool)
public static final int EVENT_TOUCH_LEVEL_DONE = 16; // (stream|int) (level|int)
public static final int EVENT_ZEN_CONFIG_CHANGED = 17; // (allow/disallow|string)
- public static final int EVENT_RINGER_TOGGLE = 18; // (ringer_mode)
+ @Deprecated public static final int EVENT_RINGER_TOGGLE = 18; // (ringer_mode)
public static final int EVENT_SHOW_USB_OVERHEAT_ALARM = 19; // (reason|int) (keyguard|bool)
public static final int EVENT_DISMISS_USB_OVERHEAT_ALARM = 20; // (reason|int) (keyguard|bool)
public static final int EVENT_ODI_CAPTIONS_CLICK = 21;
public static final int EVENT_ODI_CAPTIONS_TOOLTIP_CLICK = 22;
- public static final int EVENT_SLIDER_TOUCH_TRACKING = 23; // (tracking|bool)
+ @Deprecated public static final int EVENT_SLIDER_TOUCH_TRACKING = 23; // (tracking|bool)
private static final String[] EVENT_TAGS = {
"show_dialog",
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 0bdf99e..14eede6 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
@@ -24,6 +24,7 @@
import androidx.annotation.LayoutRes
import androidx.compose.ui.util.fastForEachIndexed
import androidx.constraintlayout.motion.widget.MotionLayout
+import androidx.constraintlayout.motion.widget.MotionScene
import androidx.dynamicanimation.animation.FloatValueHolder
import androidx.dynamicanimation.animation.SpringAnimation
import androidx.dynamicanimation.animation.SpringForce
@@ -47,6 +48,7 @@
import javax.inject.Inject
import kotlin.properties.Delegates
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.mapLatest
@@ -55,6 +57,7 @@
// Ensure roundness and color of button is updated when progress is changed by a minimum fraction.
private const val BUTTON_MIN_VISIBLE_CHANGE = 0.05F
+@OptIn(ExperimentalCoroutinesApi::class)
@VolumeDialogScope
class VolumeDialogRingerViewBinder
@Inject
@@ -208,6 +211,13 @@
ringerState.orientation,
ringerBackgroundView,
)
+ drawerContainer
+ .getTransition(R.id.close_to_open_transition)
+ .setInterpolatorInfo(
+ MotionScene.Transition.INTERPOLATE_REFERENCE_ID,
+ null,
+ R.anim.volume_dialog_ringer_open,
+ )
drawerContainer.transitionToState(
R.id.volume_dialog_ringer_drawer_open
)
@@ -370,6 +380,12 @@
orientation: Int,
) {
setTransition(R.id.close_to_open_transition)
+ getTransition(R.id.close_to_open_transition)
+ .setInterpolatorInfo(
+ MotionScene.Transition.INTERPOLATE_REFERENCE_ID,
+ null,
+ R.anim.volume_dialog_ringer_close,
+ )
updateCloseState(this, selectedIndex, orientation, ringerBackground)
transitionToState(R.id.volume_dialog_ringer_drawer_close)
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt
index b0d6d622..69a939a 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt
@@ -25,6 +25,7 @@
import android.os.VibrationEffect
import android.widget.Toast
import com.android.internal.R as internalR
+import com.android.internal.logging.UiEventLogger
import com.android.settingslib.Utils
import com.android.settingslib.notification.domain.interactor.NotificationsSoundPolicyInteractor
import com.android.settingslib.volume.shared.model.AudioStream
@@ -43,6 +44,7 @@
import com.android.systemui.volume.dialog.ringer.domain.VolumeDialogRingerInteractor
import com.android.systemui.volume.dialog.ringer.shared.model.VolumeDialogRingerModel
import com.android.systemui.volume.dialog.shared.VolumeDialogLogger
+import com.android.systemui.volume.dialog.ui.VolumeDialogUiEvent
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
@@ -73,6 +75,7 @@
private val volumeDialogLogger: VolumeDialogLogger,
private val visibilityInteractor: VolumeDialogVisibilityInteractor,
configurationController: ConfigurationController,
+ private val uiEventLogger: UiEventLogger,
private val systemClock: SystemClock,
) {
@@ -112,6 +115,7 @@
.build()
private var lastClickTime = 0L
+
init {
ringerViewModel
.onEach { viewModelState ->
@@ -137,6 +141,7 @@
provideTouchFeedback(ringerMode)
maybeShowToast(ringerMode)
ringerInteractor.setRingerMode(ringerMode)
+ ringerMode.toVolumeDialogUiEvent()?.let(uiEventLogger::log)
}
visibilityInteractor.resetDismissTimeout()
drawerState.value =
@@ -312,3 +317,12 @@
}
}
}
+
+private fun RingerMode.toVolumeDialogUiEvent(): VolumeDialogUiEvent? {
+ return when (value) {
+ RINGER_MODE_NORMAL -> VolumeDialogUiEvent.RINGER_MODE_NORMAL
+ RINGER_MODE_VIBRATE -> VolumeDialogUiEvent.RINGER_MODE_VIBRATE
+ RINGER_MODE_SILENT -> VolumeDialogUiEvent.RINGER_MODE_SILENT
+ else -> null
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/viewmodel/VolumeDialogSettingsButtonViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/viewmodel/VolumeDialogSettingsButtonViewModel.kt
index 0e4e707..94c66cc 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/viewmodel/VolumeDialogSettingsButtonViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/viewmodel/VolumeDialogSettingsButtonViewModel.kt
@@ -32,12 +32,14 @@
import com.airbnb.lottie.model.KeyPath
import com.airbnb.lottie.value.LottieValueCallback
import com.android.internal.R as internalR
+import com.android.internal.logging.UiEventLogger
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.UiBackground
import com.android.systemui.lottie.await
import com.android.systemui.res.R
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog
import com.android.systemui.volume.dialog.settings.domain.VolumeDialogSettingsButtonInteractor
+import com.android.systemui.volume.dialog.ui.VolumeDialogUiEvent
import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaDeviceSessionInteractor
import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputInteractor
import com.android.systemui.volume.panel.shared.model.filterData
@@ -71,6 +73,7 @@
mediaOutputInteractor: MediaOutputInteractor,
private val mediaDeviceSessionInteractor: MediaDeviceSessionInteractor,
private val interactor: VolumeDialogSettingsButtonInteractor,
+ private val uiEventLogger: UiEventLogger,
) {
@SuppressLint("UseCompatLoadingForDrawables")
@@ -160,6 +163,7 @@
fun onButtonClicked() {
interactor.onButtonClicked()
+ uiEventLogger.log(VolumeDialogUiEvent.VOLUME_DIALOG_SETTINGS_CLICK)
}
private data class PlaybackStates(val isPreviousActive: Boolean?, val isCurrentActive: Boolean)
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
index 1c0fabe..a0e3fbd 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
@@ -23,6 +23,7 @@
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.foundation.gestures.Orientation
+import androidx.compose.foundation.interaction.DragInteraction
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.padding
@@ -58,7 +59,6 @@
import com.android.systemui.volume.haptics.ui.VolumeHapticsConfigsProvider
import javax.inject.Inject
import kotlin.math.round
-import kotlin.math.roundToInt
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.currentCoroutineContext
import kotlinx.coroutines.isActive
@@ -136,7 +136,7 @@
)
.also { sliderState ->
sliderState.onValueChangeFinished = {
- viewModel.onStreamChangeFinished(sliderState.value.roundToInt())
+ viewModel.onSliderChangeFinished(sliderState.value)
hapticsViewModel?.onValueChangeEnded()
}
sliderState.onValueChange = { newValue ->
@@ -161,6 +161,15 @@
hapticsViewModel?.onValueChange(value)
}
}
+ LaunchedEffect(interactionSource) {
+ interactionSource.interactions.collect {
+ when (it) {
+ is DragInteraction.Start -> viewModel.onSliderDragStarted()
+ is DragInteraction.Cancel -> viewModel.onSliderDragFinished()
+ is DragInteraction.Stop -> viewModel.onSliderDragFinished()
+ }
+ }
+ }
VerticalSlider(
state = sliderState,
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt
index 9ac052a..19b2880 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt
@@ -19,6 +19,7 @@
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.input.pointer.PointerEvent
import androidx.compose.ui.input.pointer.PointerEventType
+import com.android.internal.logging.UiEventLogger
import com.android.systemui.util.time.SystemClock
import com.android.systemui.volume.Events
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog
@@ -30,6 +31,7 @@
import com.android.systemui.volume.dialog.sliders.domain.interactor.VolumeDialogSliderInteractor
import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType
import com.android.systemui.volume.dialog.sliders.shared.model.SliderInputEvent
+import com.android.systemui.volume.dialog.ui.VolumeDialogUiEvent
import javax.inject.Inject
import kotlin.math.roundToInt
import kotlinx.coroutines.CoroutineScope
@@ -69,6 +71,7 @@
private val inputEventsInteractor: VolumeDialogSliderInputEventsInteractor,
private val systemClock: SystemClock,
private val logger: VolumeDialogLogger,
+ private val uiEventLogger: UiEventLogger,
) {
private val userVolumeUpdates = MutableStateFlow<VolumeUpdate?>(null)
@@ -99,9 +102,11 @@
isMuted = isMuted,
isRoutedToBluetooth = routedToBluetooth,
)
+
is VolumeDialogSliderType.RemoteMediaStream -> {
volumeDialogSliderIconProvider.getCastIcon(isMuted)
}
+
is VolumeDialogSliderType.AudioSharingStream -> {
volumeDialogSliderIconProvider.getAudioSharingIcon(isMuted)
}
@@ -135,8 +140,19 @@
}
}
- fun onStreamChangeFinished(volume: Int) {
- logger.onVolumeSliderAdjustmentFinished(volume = volume, stream = sliderType.audioStream)
+ fun onSliderDragStarted() {
+ uiEventLogger.log(VolumeDialogUiEvent.VOLUME_DIALOG_SLIDER_STARTED_TRACKING_TOUCH)
+ }
+
+ fun onSliderDragFinished() {
+ uiEventLogger.log(VolumeDialogUiEvent.VOLUME_DIALOG_SLIDER_STOPPED_TRACKING_TOUCH)
+ }
+
+ fun onSliderChangeFinished(volume: Float) {
+ logger.onVolumeSliderAdjustmentFinished(
+ volume = volume.roundToInt(),
+ stream = sliderType.audioStream,
+ )
}
fun onTouchEvent(pointerEvent: PointerEvent) {
@@ -146,14 +162,17 @@
inputEventsInteractor.onTouchEvent(
SliderInputEvent.Touch.Start(position.x, position.y)
)
+
PointerEventType.Move ->
inputEventsInteractor.onTouchEvent(
SliderInputEvent.Touch.Move(position.x, position.y)
)
+
PointerEventType.Scroll ->
inputEventsInteractor.onTouchEvent(
SliderInputEvent.Touch.Move(position.x, position.y)
)
+
PointerEventType.Release ->
inputEventsInteractor.onTouchEvent(
SliderInputEvent.Touch.End(position.x, position.y)
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/VolumeDialogUiEvent.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/VolumeDialogUiEvent.kt
new file mode 100644
index 0000000..cf1b69e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/VolumeDialogUiEvent.kt
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2025 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.volume.dialog.ui
+
+import com.android.internal.logging.UiEvent
+import com.android.internal.logging.UiEventLogger
+
+/** UI events for Volume Dialog. */
+enum class VolumeDialogUiEvent(val metricId: Int) : UiEventLogger.UiEventEnum {
+ @UiEvent(doc = "The ringer mode was toggled to silent") RINGER_MODE_SILENT(154),
+ @UiEvent(doc = "The ringer mode was toggled to vibrate") RINGER_MODE_VIBRATE(155),
+ @UiEvent(doc = "The ringer mode was toggled to normal") RINGER_MODE_NORMAL(334),
+ @UiEvent(doc = "The volume dialog settings icon was clicked") VOLUME_DIALOG_SETTINGS_CLICK(143),
+ @UiEvent(doc = "The volume dialog was shown because the volume changed")
+ VOLUME_DIALOG_SHOW_VOLUME_CHANGED(128),
+ @UiEvent(doc = "The volume dialog was shown because the volume changed remotely")
+ VOLUME_DIALOG_SHOW_REMOTE_VOLUME_CHANGED(129),
+ @UiEvent(doc = "The volume dialog was shown because the usb high temperature alarm changed")
+ VOLUME_DIALOG_SHOW_USB_TEMP_ALARM_CHANGED(130),
+ @UiEvent(doc = "The volume dialog was dismissed because of a touch outside the dialog")
+ VOLUME_DIALOG_DISMISS_TOUCH_OUTSIDE(134),
+ @UiEvent(
+ doc =
+ "The system asked the volume dialog to close, e.g. for a navigation bar " +
+ "touch, or ActivityManager ACTION_CLOSE_SYSTEM_DIALOGS broadcast."
+ )
+ VOLUME_DIALOG_DISMISS_SYSTEM(135),
+ @UiEvent(doc = "The volume dialog was dismissed because it timed out")
+ VOLUME_DIALOG_DISMISS_TIMEOUT(136),
+ @UiEvent(doc = "The volume dialog was dismissed because the screen turned off")
+ VOLUME_DIALOG_DISMISS_SCREEN_OFF(137),
+ @UiEvent(doc = "The volume dialog was dismissed because the settings icon was clicked")
+ VOLUME_DIALOG_DISMISS_SETTINGS(138),
+ @UiEvent(doc = "The volume dialog was dismissed because the stream no longer exists")
+ VOLUME_DIALOG_DISMISS_STREAM_GONE(140),
+ @UiEvent(
+ doc = "The volume dialog was dismissed because the usb high temperature alarm " + "changed"
+ )
+ VOLUME_DIALOG_DISMISS_USB_TEMP_ALARM_CHANGED(142),
+ @UiEvent(doc = "The right-most slider started tracking touch")
+ VOLUME_DIALOG_SLIDER_STARTED_TRACKING_TOUCH(1620),
+ @UiEvent(doc = "The right-most slider stopped tracking touch")
+ VOLUME_DIALOG_SLIDER_STOPPED_TRACKING_TOUCH(1621);
+
+ override fun getId() = metricId
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogPluginViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogPluginViewModel.kt
index 1765f01..6d16300 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogPluginViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogPluginViewModel.kt
@@ -16,6 +16,7 @@
package com.android.systemui.volume.dialog.ui.viewmodel
+import com.android.internal.logging.UiEventLogger
import com.android.systemui.volume.Events
import com.android.systemui.volume.dialog.VolumeDialog
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPlugin
@@ -26,6 +27,7 @@
import com.android.systemui.volume.dialog.shared.VolumeDialogLogger
import com.android.systemui.volume.dialog.shared.model.CsdWarningConfigModel
import com.android.systemui.volume.dialog.shared.model.VolumeDialogVisibilityModel
+import com.android.systemui.volume.dialog.ui.VolumeDialogUiEvent
import javax.inject.Inject
import javax.inject.Provider
import kotlinx.coroutines.CoroutineScope
@@ -44,6 +46,7 @@
private val volumeDialogProvider: Provider<VolumeDialog>,
private val logger: VolumeDialogLogger,
val csdWarningConfigModel: CsdWarningConfigModel,
+ private val uiEventLogger: UiEventLogger,
) {
fun launchVolumeDialog() {
@@ -52,11 +55,11 @@
with(visibilityModel) {
if (this is VolumeDialogVisibilityModel.Visible) {
showDialog()
- Events.writeEvent(Events.EVENT_SHOW_DIALOG, reason, keyguardLocked)
+ toVolumeDialogUiEvent()?.let(uiEventLogger::log)
logger.onShow(reason)
}
if (this is VolumeDialogVisibilityModel.Dismissed) {
- Events.writeEvent(Events.EVENT_DISMISS_DIALOG, reason)
+ toVolumeDialogUiEvent()?.let(uiEventLogger::log)
logger.onDismiss(reason)
}
}
@@ -86,3 +89,29 @@
.show()
}
}
+
+private fun VolumeDialogVisibilityModel.Dismissed.toVolumeDialogUiEvent(): VolumeDialogUiEvent? {
+ return when (reason) {
+ Events.DISMISS_REASON_TOUCH_OUTSIDE ->
+ VolumeDialogUiEvent.VOLUME_DIALOG_DISMISS_TOUCH_OUTSIDE
+ Events.DISMISS_REASON_VOLUME_CONTROLLER -> VolumeDialogUiEvent.VOLUME_DIALOG_DISMISS_SYSTEM
+ Events.DISMISS_REASON_TIMEOUT -> VolumeDialogUiEvent.VOLUME_DIALOG_DISMISS_TIMEOUT
+ Events.DISMISS_REASON_SCREEN_OFF -> VolumeDialogUiEvent.VOLUME_DIALOG_DISMISS_SCREEN_OFF
+ Events.DISMISS_REASON_SETTINGS_CLICKED -> VolumeDialogUiEvent.VOLUME_DIALOG_DISMISS_SETTINGS
+ Events.DISMISS_STREAM_GONE -> VolumeDialogUiEvent.VOLUME_DIALOG_DISMISS_STREAM_GONE
+ Events.DISMISS_REASON_USB_OVERHEAD_ALARM_CHANGED ->
+ VolumeDialogUiEvent.VOLUME_DIALOG_DISMISS_USB_TEMP_ALARM_CHANGED
+ else -> null
+ }
+}
+
+private fun VolumeDialogVisibilityModel.Visible.toVolumeDialogUiEvent(): VolumeDialogUiEvent? {
+ return when (reason) {
+ Events.SHOW_REASON_VOLUME_CHANGED -> VolumeDialogUiEvent.VOLUME_DIALOG_SHOW_VOLUME_CHANGED
+ Events.SHOW_REASON_REMOTE_VOLUME_CHANGED ->
+ VolumeDialogUiEvent.VOLUME_DIALOG_SHOW_REMOTE_VOLUME_CHANGED
+ Events.SHOW_REASON_USB_OVERHEAD_ALARM_CHANGED ->
+ VolumeDialogUiEvent.VOLUME_DIALOG_SHOW_USB_TEMP_ALARM_CHANGED
+ else -> null
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java
index e764015..b23efce 100644
--- a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java
+++ b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java
@@ -23,6 +23,7 @@
import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL_ALL;
import static android.service.notification.NotificationListenerService.REASON_GROUP_SUMMARY_CANCELED;
import static android.service.notification.NotificationListenerService.REASON_PACKAGE_BANNED;
+import static android.service.notification.NotificationListenerService.REASON_PACKAGE_CHANGED;
import static android.service.notification.NotificationStats.DISMISSAL_BUBBLE;
import static android.service.notification.NotificationStats.DISMISS_SENTIMENT_NEUTRAL;
@@ -451,7 +452,8 @@
public void onEntryRemoved(NotificationEntry entry,
@NotifCollection.CancellationReason int reason) {
if (reason == REASON_APP_CANCEL || reason == REASON_APP_CANCEL_ALL
- || reason == REASON_PACKAGE_BANNED) {
+ || reason == REASON_PACKAGE_BANNED
+ || reason == REASON_PACKAGE_CHANGED) {
BubblesManager.this.onEntryRemoved(entry);
}
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
index e2cfbc6..a42f5d3 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
@@ -65,6 +65,8 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import static java.util.Collections.emptySet;
+
import android.app.Activity;
import android.app.ActivityTaskManager;
import android.app.IActivityTaskManager;
@@ -155,6 +157,7 @@
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.scene.domain.interactor.SceneInteractor;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
+import com.android.systemui.scene.shared.model.Overlays;
import com.android.systemui.scene.shared.model.Scenes;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.system.TaskStackChangeListener;
@@ -190,6 +193,7 @@
import java.util.List;
import java.util.Optional;
import java.util.Random;
+import java.util.Set;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -2775,7 +2779,7 @@
private void setPrimaryBouncerVisibility(boolean isVisible) {
if (SceneContainerFlag.isEnabled()) {
ObservableTransitionState transitionState = new ObservableTransitionState.Idle(
- isVisible ? Scenes.Bouncer : Scenes.Lockscreen);
+ Scenes.Lockscreen, isVisible ? Set.of(Overlays.Bouncer) : emptySet());
when(mSceneInteractor.getTransitionState()).thenReturn(
MutableStateFlow(transitionState));
onTransitionStateChanged(transitionState);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt
index 2e63439..c2a495d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt
@@ -64,6 +64,12 @@
"'wght' 500, 'ital' 0.5, 'GRAD' 450",
interp.lerp(startFont, endFont, 0.5f, 0.5f),
)
+
+ // Ensure axes rounded correctly to nearest step
+ assertSameAxes(
+ "'wght' 490, 'ital' 0.5, 'GRAD' 446",
+ interp.lerp(startFont, endFont, 0.492f, 0.492f),
+ )
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/BouncerContentTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/BouncerContentTest.kt
index 1320223..4e08596 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/BouncerContentTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/BouncerContentTest.kt
@@ -33,7 +33,7 @@
import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
import com.android.systemui.bouncer.ui.BouncerDialogFactory
-import com.android.systemui.bouncer.ui.viewmodel.bouncerSceneContentViewModelFactory
+import com.android.systemui.bouncer.ui.viewmodel.bouncerOverlayContentViewModelFactory
import com.android.systemui.flags.Flags
import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.lifecycle.rememberViewModel
@@ -98,9 +98,9 @@
BouncerContent(
viewModel =
rememberViewModel("test") {
- kosmos.bouncerSceneContentViewModelFactory.create()
+ kosmos.bouncerOverlayContentViewModelFactory.create()
},
- layout = BouncerSceneLayout.BESIDE_USER_SWITCHER,
+ layout = BouncerOverlayLayout.BESIDE_USER_SWITCHER,
modifier = Modifier.fillMaxSize().testTag("BouncerContent"),
dialogFactory = bouncerDialogFactory,
)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransitionTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransitionTest.kt
index 4d0605f..90a8ad5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransitionTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransitionTest.kt
@@ -18,9 +18,12 @@
import android.animation.ValueAnimator
import android.graphics.Color
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
+import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.media.controls.ui.view.GutsViewHolder
import com.android.systemui.media.controls.ui.view.MediaViewHolder
@@ -33,6 +36,7 @@
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.Mockito.never
import org.mockito.Mockito.times
@@ -49,7 +53,9 @@
class ColorSchemeTransitionTest : SysuiTestCase() {
private interface ExtractCB : (ColorScheme) -> Int
+
private interface ApplyCB : (Int) -> Unit
+
private lateinit var colorTransition: AnimatingColorTransition
private lateinit var colorSchemeTransition: ColorSchemeTransition
@@ -79,7 +85,7 @@
mediaViewHolder,
multiRippleController,
turbulenceNoiseController,
- animatingColorTransitionFactory
+ animatingColorTransitionFactory,
)
colorTransition =
@@ -154,10 +160,21 @@
verify(applyColor).invoke(expectedColor)
}
+ @DisableFlags(Flags.FLAG_MEDIA_CONTROLS_A11Y_COLORS)
@Test
- fun testColorSchemeTransition_update() {
+ fun testColorSchemeTransition_update_legacy() {
colorSchemeTransition.updateColorScheme(colorScheme)
verify(mockAnimatingTransition, times(8)).updateColorScheme(colorScheme)
verify(gutsViewHolder).colorScheme = colorScheme
}
+
+ @EnableFlags(Flags.FLAG_MEDIA_CONTROLS_A11Y_COLORS)
+ @Test
+ fun testColorSchemeTransition_update() {
+ colorSchemeTransition.updateColorScheme(colorScheme)
+ verify(mockAnimatingTransition, times(3)).updateColorScheme(colorScheme)
+ verify(gutsViewHolder).setColors(colorScheme)
+ verify(multiRippleController).updateColor(anyInt())
+ verify(turbulenceNoiseController).updateNoiseColor(anyInt())
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
index aaf5559..58bae30 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
@@ -881,8 +881,15 @@
var updatedVisibility = false
mediaCarouselController.updateHostVisibility = { updatedVisibility = true }
mediaCarouselController.mediaCarousel = mediaCarousel
+ kosmos.sceneInteractor.snapToScene(Scenes.Lockscreen, "")
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+ runCurrent()
val job = mediaCarouselController.listenForAnyStateToGoneKeyguardTransition(this)
+
+ kosmos.sceneInteractor.changeScene(Scenes.Gone, "")
kosmos.setSceneTransition(Idle(Scenes.Gone))
verify(mediaCarousel).visibility = View.VISIBLE
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
index 6ca4ae2..14b1412 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
@@ -17,6 +17,7 @@
package com.android.systemui.media.controls.ui.controller
import android.graphics.Rect
+import android.platform.test.annotations.EnableFlags
import android.provider.Settings
import android.testing.TestableLooper
import android.view.ViewGroup
@@ -36,7 +37,6 @@
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
-import com.android.systemui.keyguard.data.repository.keyguardRepository
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.kosmos.testScope
@@ -50,6 +50,7 @@
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.SysuiStatusBarStateController
+import com.android.systemui.statusbar.featurepods.popups.StatusBarPopupChips
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.statusbar.policy.FakeConfigurationController
import com.android.systemui.statusbar.policy.KeyguardStateController
@@ -581,6 +582,36 @@
}
@Test
+ @EnableFlags(StatusBarPopupChips.FLAG_NAME)
+ fun testStatusBarPopupLocation() =
+ testScope.runTest {
+ mediaHierarchyManager.isMediaControlPopupShowing = true
+ runCurrent()
+
+ verify(mediaCarouselController)
+ .onDesiredLocationChanged(
+ eq(MediaHierarchyManager.LOCATION_STATUS_BAR_POPUP),
+ nullable(),
+ eq(false),
+ anyLong(),
+ anyLong(),
+ )
+ clearInvocations(mediaCarouselController)
+
+ mediaHierarchyManager.isMediaControlPopupShowing = false
+ runCurrent()
+
+ verify(mediaCarouselController)
+ .onDesiredLocationChanged(
+ eq(MediaHierarchyManager.LOCATION_QQS),
+ any<MediaHostState>(),
+ eq(false),
+ anyLong(),
+ anyLong(),
+ )
+ }
+
+ @Test
fun testCommunalLocationVisibilityWithShadeShowing() =
testScope.runTest {
whenever(mediaDataManager.hasActiveMediaOrRecommendation()).thenReturn(true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt
index cfe34f4..a7464e6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt
@@ -39,6 +39,7 @@
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
+import dagger.Lazy
import kotlin.test.assertTrue
import kotlinx.coroutines.Job
import org.junit.After
@@ -96,8 +97,7 @@
qsLogger,
bluetoothController,
featureFlags,
- bluetoothDetailsContentViewModel,
- )
+ ) { bluetoothDetailsContentViewModel }
tile.initialize()
testableLooper.processAllMessages()
@@ -308,7 +308,7 @@
qsLogger: QSLogger,
bluetoothController: BluetoothController,
featureFlags: FeatureFlagsClassic,
- bluetoothDetailsContentViewModel: BluetoothDetailsContentViewModel,
+ lazyBluetoothDetailsContentViewModel: Lazy<BluetoothDetailsContentViewModel>,
) :
BluetoothTile(
qsHost,
@@ -322,7 +322,7 @@
qsLogger,
bluetoothController,
featureFlags,
- bluetoothDetailsContentViewModel,
+ lazyBluetoothDetailsContentViewModel,
) {
var restrictionChecked: String? = null
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java
index e8b50d5..81213ca 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java
@@ -130,7 +130,7 @@
private CollectionReadyForBuildListener mReadyForBuildListener;
private List<NotificationEntryBuilder> mPendingSet = new ArrayList<>();
private List<NotificationEntry> mEntrySet = new ArrayList<>();
- private List<ListEntry> mBuiltList = new ArrayList<>();
+ private List<PipelineEntry> mBuiltList = new ArrayList<>();
private TestableStabilityManager mStabilityManager;
private TestableNotifFilter mFinalizeFilter;
@@ -723,26 +723,26 @@
@Test
public void testNotifSectionsChildrenUpdated() {
- ArrayList<ListEntry> pkg1Entries = new ArrayList<>();
- ArrayList<ListEntry> pkg2Entries = new ArrayList<>();
- ArrayList<ListEntry> pkg3Entries = new ArrayList<>();
+ ArrayList<PipelineEntry> pkg1Entries = new ArrayList<>();
+ ArrayList<PipelineEntry> pkg2Entries = new ArrayList<>();
+ ArrayList<PipelineEntry> pkg3Entries = new ArrayList<>();
final NotifSectioner pkg1Sectioner = spy(new PackageSectioner(PACKAGE_1) {
@Override
- public void onEntriesUpdated(List<ListEntry> entries) {
+ public void onEntriesUpdated(List<PipelineEntry> entries) {
super.onEntriesUpdated(entries);
pkg1Entries.addAll(entries);
}
});
final NotifSectioner pkg2Sectioner = spy(new PackageSectioner(PACKAGE_2) {
@Override
- public void onEntriesUpdated(List<ListEntry> entries) {
+ public void onEntriesUpdated(List<PipelineEntry> entries) {
super.onEntriesUpdated(entries);
pkg2Entries.addAll(entries);
}
});
final NotifSectioner pkg3Sectioner = spy(new PackageSectioner(PACKAGE_3) {
@Override
- public void onEntriesUpdated(List<ListEntry> entries) {
+ public void onEntriesUpdated(List<PipelineEntry> entries) {
super.onEntriesUpdated(entries);
pkg3Entries.addAll(entries);
}
@@ -2478,7 +2478,7 @@
mBuiltList.size());
for (int i = 0; i < expectedEntries.length; i++) {
- ListEntry outEntry = mBuiltList.get(i);
+ PipelineEntry outEntry = mBuiltList.get(i);
ExpectedEntry expectedEntry = expectedEntries[i];
if (expectedEntry instanceof ExpectedNotif) {
@@ -2653,7 +2653,7 @@
}
@Override
- public int compare(@NonNull ListEntry o1, @NonNull ListEntry o2) {
+ public int compare(@NonNull PipelineEntry o1, @NonNull PipelineEntry o2) {
boolean contains1 = mPreferredPackages.contains(
o1.getRepresentativeEntry().getSbn().getPackageName());
boolean contains2 = mPreferredPackages.contains(
@@ -2691,37 +2691,37 @@
}
@Override
- public boolean isInSection(ListEntry entry) {
+ public boolean isInSection(PipelineEntry entry) {
return mPackages.contains(entry.getRepresentativeEntry().getSbn().getPackageName());
}
}
private static class RecordingOnBeforeTransformGroupsListener
implements OnBeforeTransformGroupsListener {
- List<ListEntry> mEntriesReceived;
+ List<PipelineEntry> mEntriesReceived;
@Override
- public void onBeforeTransformGroups(List<ListEntry> list) {
+ public void onBeforeTransformGroups(List<PipelineEntry> list) {
mEntriesReceived = new ArrayList<>(list);
}
}
private static class RecordingOnBeforeSortListener
implements OnBeforeSortListener {
- List<ListEntry> mEntriesReceived;
+ List<PipelineEntry> mEntriesReceived;
@Override
- public void onBeforeSort(List<ListEntry> list) {
+ public void onBeforeSort(List<PipelineEntry> list) {
mEntriesReceived = new ArrayList<>(list);
}
}
private static class RecordingOnBeforeRenderListener
implements OnBeforeRenderListListener {
- List<ListEntry> mEntriesReceived;
+ List<PipelineEntry> mEntriesReceived;
@Override
- public void onBeforeRenderList(List<ListEntry> list) {
+ public void onBeforeRenderList(List<PipelineEntry> list) {
mEntriesReceived = new ArrayList<>(list);
}
}
@@ -2800,7 +2800,7 @@
}
@Override
- public boolean isEntryReorderingAllowed(@NonNull ListEntry entry) {
+ public boolean isEntryReorderingAllowed(@NonNull PipelineEntry entry) {
return mAllowEntryReodering;
}
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 99b99ee..0c0ef9d 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
@@ -549,7 +549,7 @@
if (isVisible) {
Scenes.Lockscreen
} else {
- Scenes.Bouncer
+ Scenes.Communal
}
sceneInteractor.changeScene(key, "test")
sceneInteractor.setTransitionState(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
index 1088676..ffb861d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
@@ -113,7 +113,7 @@
@SmallTest
// TODO(b/381263619) there are more changes and tweaks required to match the new bouncer/shade specs
// Disabling for now but it will be fixed before the flag is fully ramped up.
-@DisableFlags(Flags.FLAG_BOUNCER_UI_REVAMP)
+@DisableFlags({Flags.FLAG_BOUNCER_UI_REVAMP, Flags.FLAG_NOTIFICATION_SHADE_BLUR})
public class ScrimControllerTest extends SysuiTestCase {
@Rule public Expect mExpect = Expect.create();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
index dde6e2e..0d99c0e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
@@ -93,7 +93,7 @@
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.ActivityStarter.OnDismissAction;
import com.android.systemui.scene.domain.interactor.SceneInteractor;
-import com.android.systemui.scene.shared.model.Scenes;
+import com.android.systemui.scene.shared.model.Overlays;
import com.android.systemui.shade.NotificationShadeWindowView;
import com.android.systemui.shade.ShadeController;
import com.android.systemui.shade.ShadeExpansionChangeEvent;
@@ -927,7 +927,7 @@
@EnableSceneContainer
public void showPrimaryBouncer() {
mStatusBarKeyguardViewManager.showPrimaryBouncer(false);
- verify(mSceneInteractor).changeScene(eq(Scenes.Bouncer), anyString());
+ verify(mSceneInteractor).showOverlay(eq(Overlays.Bouncer), anyString());
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldLatencyTrackerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldLatencyTrackerTest.kt
index a1122c3..a553b17 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldLatencyTrackerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldLatencyTrackerTest.kt
@@ -18,10 +18,12 @@
import android.hardware.devicestate.DeviceStateManager
import android.hardware.devicestate.DeviceStateManager.FoldStateListener
+import android.platform.test.annotations.DisableFlags
import android.provider.Settings
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.util.LatencyTracker
+import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.foldedDeviceStateList
import com.android.systemui.halfFoldedDeviceState
@@ -46,6 +48,7 @@
@RunWith(AndroidJUnit4::class)
@SmallTest
+@DisableFlags(Flags.FLAG_UNFOLD_LATENCY_TRACKING_FIX)
class UnfoldLatencyTrackerTest : SysuiTestCase() {
@Mock lateinit var latencyTracker: LatencyTracker
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
index a38d71b..68d84ec 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
@@ -25,6 +25,7 @@
import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL;
import static android.service.notification.NotificationListenerService.REASON_GROUP_SUMMARY_CANCELED;
import static android.service.notification.NotificationListenerService.REASON_PACKAGE_BANNED;
+import static android.service.notification.NotificationListenerService.REASON_PACKAGE_CHANGED;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.server.notification.Flags.FLAG_SCREENSHARE_NOTIFICATION_HIDING;
@@ -1126,6 +1127,18 @@
}
@Test
+ public void testNotifsPackageChanged_entryListenerRemove() {
+ mEntryListener.onEntryAdded(mRow);
+ mBubbleController.updateBubble(mBubbleEntry);
+
+ assertTrue(mBubbleController.hasBubbles());
+
+ // Removes the notification
+ mEntryListener.onEntryRemoved(mRow, REASON_PACKAGE_CHANGED);
+ assertFalse(mBubbleController.hasBubbles());
+ }
+
+ @Test
public void removeBubble_intercepted() {
mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/ui/viewmodel/BouncerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/ui/viewmodel/BouncerViewModelKosmos.kt
index 3bfd958..4d1c271 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/ui/viewmodel/BouncerViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/ui/viewmodel/BouncerViewModelKosmos.kt
@@ -34,9 +34,7 @@
import com.android.systemui.user.ui.viewmodel.userSwitcherViewModel
import kotlinx.coroutines.flow.StateFlow
-val Kosmos.bouncerUserActionsViewModel by Fixture {
- BouncerUserActionsViewModel(bouncerInteractor = bouncerInteractor)
-}
+val Kosmos.bouncerUserActionsViewModel by Fixture { BouncerUserActionsViewModel() }
val Kosmos.bouncerUserActionsViewModelFactory by Fixture {
object : BouncerUserActionsViewModel.Factory {
@@ -46,8 +44,8 @@
}
}
-val Kosmos.bouncerSceneContentViewModel by Fixture {
- BouncerSceneContentViewModel(
+val Kosmos.bouncerOverlayContentViewModel by Fixture {
+ BouncerOverlayContentViewModel(
applicationContext = applicationContext,
bouncerInteractor = bouncerInteractor,
authenticationInteractor = authenticationInteractor,
@@ -65,10 +63,10 @@
)
}
-val Kosmos.bouncerSceneContentViewModelFactory by Fixture {
- object : BouncerSceneContentViewModel.Factory {
- override fun create(): BouncerSceneContentViewModel {
- return bouncerSceneContentViewModel
+val Kosmos.bouncerOverlayContentViewModelFactory by Fixture {
+ object : BouncerOverlayContentViewModel.Factory {
+ override fun create(): BouncerOverlayContentViewModel {
+ return bouncerOverlayContentViewModel
}
}
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneKosmos.kt
index f0350ac..3bd8729 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneKosmos.kt
@@ -32,7 +32,6 @@
Scenes.QuickSettings,
Scenes.Shade,
Scenes.Lockscreen,
- Scenes.Bouncer,
Scenes.Gone,
Scenes.Communal,
Scenes.Dream,
@@ -42,7 +41,7 @@
val Kosmos.initialSceneKey by Fixture { Scenes.Lockscreen }
var Kosmos.overlayKeys by Fixture {
- listOf(Overlays.NotificationsShade, Overlays.QuickSettingsShade)
+ listOf(Overlays.NotificationsShade, Overlays.QuickSettingsShade, Overlays.Bouncer)
}
val Kosmos.fakeOverlaysByKeys by Fixture { overlayKeys.associateWith { FakeOverlay(it) } }
@@ -62,7 +61,6 @@
Scenes.Dream to 2,
Scenes.Shade to 3,
Scenes.QuickSettings to 4,
- Scenes.Bouncer to 5,
)
SceneContainerConfig(
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryUtil.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryUtil.kt
index c95b2dc..025608a 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryUtil.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryUtil.kt
@@ -17,6 +17,7 @@
package com.android.systemui.scene.data.repository
import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.OverlayKey
import com.android.compose.animation.scene.SceneKey
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.KeyguardState
@@ -38,7 +39,7 @@
stateTransition: TransitionStep? = null,
fillInStateSteps: Boolean = true,
scope: TestScope = testScope,
- repository: SceneContainerRepository = sceneContainerRepository
+ repository: SceneContainerRepository = sceneContainerRepository,
) {
var state: TransitionStep? = stateTransition
if (SceneContainerFlag.isEnabled) {
@@ -61,7 +62,7 @@
fun Kosmos.setSceneTransition(
transition: ObservableTransitionState,
scope: TestScope = testScope,
- repository: SceneContainerRepository = sceneContainerRepository
+ repository: SceneContainerRepository = sceneContainerRepository,
) {
repository.setTransitionState(mutableTransitionState)
mutableTransitionState.value = transition
@@ -76,7 +77,7 @@
isInitiatedByUserInput: Boolean = false,
isUserInputOngoing: Flow<Boolean> = flowOf(false),
previewProgress: Flow<Float> = flowOf(0f),
- isInPreviewStage: Flow<Boolean> = flowOf(false)
+ isInPreviewStage: Flow<Boolean> = flowOf(false),
): ObservableTransitionState.Transition {
return ObservableTransitionState.Transition(
fromScene = from,
@@ -86,17 +87,64 @@
isInitiatedByUserInput = isInitiatedByUserInput,
isUserInputOngoing = isUserInputOngoing,
previewProgress = previewProgress,
- isInPreviewStage = isInPreviewStage
+ isInPreviewStage = isInPreviewStage,
)
}
-fun Idle(currentScene: SceneKey): ObservableTransitionState.Idle {
- return ObservableTransitionState.Idle(currentScene)
+fun ShowOverlay(
+ overlay: OverlayKey,
+ fromScene: SceneKey,
+ currentOverlays: Flow<Set<OverlayKey>> = flowOf(setOf(overlay)),
+ progress: Flow<Float> = flowOf(0f),
+ isInitiatedByUserInput: Boolean = false,
+ isUserInputOngoing: Flow<Boolean> = flowOf(false),
+ previewProgress: Flow<Float> = flowOf(0f),
+ isInPreviewStage: Flow<Boolean> = flowOf(false),
+): ObservableTransitionState.Transition {
+ return ObservableTransitionState.Transition.showOverlay(
+ overlay = overlay,
+ fromScene = fromScene,
+ currentOverlays = currentOverlays,
+ progress = progress,
+ isInitiatedByUserInput = isInitiatedByUserInput,
+ isUserInputOngoing = isUserInputOngoing,
+ previewProgress = previewProgress,
+ isInPreviewStage = isInPreviewStage,
+ )
+}
+
+fun HideOverlay(
+ overlay: OverlayKey,
+ toScene: SceneKey,
+ currentOverlays: Flow<Set<OverlayKey>> = flowOf(setOf(overlay)),
+ progress: Flow<Float> = flowOf(0f),
+ isInitiatedByUserInput: Boolean = false,
+ isUserInputOngoing: Flow<Boolean> = flowOf(false),
+ previewProgress: Flow<Float> = flowOf(0f),
+ isInPreviewStage: Flow<Boolean> = flowOf(false),
+): ObservableTransitionState.Transition {
+ return ObservableTransitionState.Transition.hideOverlay(
+ overlay = overlay,
+ toScene = toScene,
+ currentOverlays = currentOverlays,
+ progress = progress,
+ isInitiatedByUserInput = isInitiatedByUserInput,
+ isUserInputOngoing = isUserInputOngoing,
+ previewProgress = previewProgress,
+ isInPreviewStage = isInPreviewStage,
+ )
+}
+
+fun Idle(
+ currentScene: SceneKey,
+ currentOverlays: Set<OverlayKey> = emptySet(),
+): ObservableTransitionState.Idle {
+ return ObservableTransitionState.Idle(currentScene, currentOverlays)
}
private fun getStateWithUndefined(
sceneTransition: ObservableTransitionState,
- state: TransitionStep
+ state: TransitionStep,
): TransitionStep {
return when (sceneTransition) {
is ObservableTransitionState.Idle -> {
@@ -109,7 +157,7 @@
state.to
},
value = state.value,
- transitionState = state.transitionState
+ transitionState = state.transitionState,
)
}
is ObservableTransitionState.Transition -> {
@@ -127,7 +175,7 @@
state.from
},
value = state.value,
- transitionState = state.transitionState
+ transitionState = state.transitionState,
)
}
else -> state
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneDataSource.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneDataSource.kt
index f9917ac..66a190c 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneDataSource.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneDataSource.kt
@@ -115,8 +115,14 @@
* If [force] is `true`, there will be no check that [isPaused] is true.
*
* If [expectedScene] is provided, will assert that it's indeed the latest called.
+ *
+ * If [expectedOverlays] is provided, will assert they are indeed present.
*/
- fun unpause(force: Boolean = false, expectedScene: SceneKey? = null) {
+ fun unpause(
+ force: Boolean = false,
+ expectedScene: SceneKey? = null,
+ expectedOverlays: Set<OverlayKey>? = null,
+ ) {
check(force || _isPaused) { "Can't unpause what's already not paused!" }
_isPaused = false
@@ -128,9 +134,12 @@
check(expectedScene == null || currentScene.value == expectedScene) {
"""
Unexpected scene while unpausing.
- Expected $expectedScene but was $currentScene.
+ Expected $expectedScene but was ${currentScene.value}.
"""
.trimIndent()
}
+ check(expectedOverlays == null || expectedOverlays == currentOverlays.value) {
+ "Expected $expectedOverlays, but instead found overlays ${currentOverlays.value}."
+ }
}
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java
index 562ac0c..804ec9f 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java
@@ -56,7 +56,7 @@
private StatusBarNotification mSbn = null;
/* ListEntry properties */
- private GroupEntry mParent;
+ private PipelineEntry mParent;
private NotifSection mNotifSection;
/* If set, use this creation time instead of mClock.uptimeMillis */
@@ -91,7 +91,7 @@
}
/** Update an the parent on an existing entry */
- public static void setNewParent(NotificationEntry entry, GroupEntry parent) {
+ public static void setNewParent(NotificationEntry entry, PipelineEntry parent) {
entry.setParent(parent);
}
@@ -135,7 +135,7 @@
/**
* Sets the parent.
*/
- public NotificationEntryBuilder setParent(@Nullable GroupEntry parent) {
+ public NotificationEntryBuilder setParent(@Nullable PipelineEntry parent) {
mParent = parent;
return this;
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/user/domain/interactor/UserLockedInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/user/domain/interactor/UserLockedInteractorKosmos.kt
index fd95508..933c351 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/user/domain/interactor/UserLockedInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/user/domain/interactor/UserLockedInteractorKosmos.kt
@@ -17,7 +17,10 @@
package com.android.systemui.user.domain.interactor
import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.user.data.repository.userRepository
val Kosmos.userLockedInteractor by
- Kosmos.Fixture { UserLockedInteractor(userRepository = userRepository) }
+ Kosmos.Fixture {
+ UserLockedInteractor(backgroundDispatcher = testDispatcher, userRepository = userRepository)
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt
index 9f3150f..919d36b 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt
@@ -17,6 +17,7 @@
package com.android.systemui.volume.dialog.ringer.ui.viewmodel
import android.content.applicationContext
+import com.android.internal.logging.uiEventLogger
import com.android.systemui.haptics.vibratorHelper
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
@@ -41,6 +42,7 @@
volumeDialogLogger = volumeDialogLogger,
visibilityInteractor = volumeDialogVisibilityInteractor,
configurationController = configurationController,
+ uiEventLogger = uiEventLogger,
systemClock = fakeSystemClock,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/settings/ui/viewmodel/VolumeDialogSettingsButtonViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/settings/ui/viewmodel/VolumeDialogSettingsButtonViewModelKosmos.kt
index 0ae3b03..a17611b 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/settings/ui/viewmodel/VolumeDialogSettingsButtonViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/settings/ui/viewmodel/VolumeDialogSettingsButtonViewModelKosmos.kt
@@ -17,6 +17,7 @@
package com.android.systemui.volume.dialog.settings.ui.viewmodel
import android.content.applicationContext
+import com.android.internal.logging.uiEventLogger
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testScope
@@ -33,5 +34,6 @@
mediaOutputInteractor,
mediaDeviceSessionInteractor,
volumeDialogSettingsButtonInteractor,
+ uiEventLogger,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt
index 90bbb28..c9396f5 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt
@@ -16,6 +16,7 @@
package com.android.systemui.volume.dialog.sliders.ui.viewmodel
+import com.android.internal.logging.uiEventLogger
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.util.time.systemClock
@@ -35,6 +36,7 @@
coroutineScope = applicationCoroutineScope,
volumeDialogSliderIconProvider = volumeDialogSliderIconProvider,
systemClock = systemClock,
+ uiEventLogger = uiEventLogger,
logger = volumeDialogLogger,
)
}
diff --git a/ravenwood/Android.bp b/ravenwood/Android.bp
index 65550f2..ccbc46f 100644
--- a/ravenwood/Android.bp
+++ b/ravenwood/Android.bp
@@ -121,6 +121,7 @@
name: "ravenwood-helper-framework-runtime",
srcs: [
"runtime-helper-src/framework/**/*.java",
+ ":framework-graphics-srcs",
],
static_libs: [
"ravenwood-runtime-common",
@@ -278,6 +279,7 @@
cc_library_host_shared {
name: "libravenwood_runtime",
defaults: ["ravenwood_jni_defaults"],
+ header_libs: ["libicuuc_headers"],
srcs: [
"runtime-jni/ravenwood_runtime.cpp",
"runtime-jni/ravenwood_os_constants.cpp",
@@ -372,6 +374,13 @@
visibility: ["//visibility:private"],
}
+java_library {
+ name: "ext-ravenwood",
+ installable: false,
+ static_libs: ["ext"],
+ visibility: ["//visibility:private"],
+}
+
filegroup {
name: "ravenwood-data",
device_common_srcs: [
@@ -637,6 +646,7 @@
libs: [
"100-framework-minus-apex.ravenwood",
"200-kxml2-android",
+ "ext-ravenwood",
"ravenwood-runtime-common-ravenwood",
diff --git a/ravenwood/Framework.bp b/ravenwood/Framework.bp
index 71496b0..e366771 100644
--- a/ravenwood/Framework.bp
+++ b/ravenwood/Framework.bp
@@ -419,11 +419,13 @@
"--out-impl-jar $(location ravenwood.jar) " +
"--in-jar $(location :framework-graphics.impl{.jar}) " +
- "--policy-override-file $(location :ravenwood-common-policies) ",
+ "--policy-override-file $(location :ravenwood-common-policies) " +
+ "--policy-override-file $(location :framework-graphics-ravenwood-policies) ",
srcs: [
":framework-graphics.impl{.jar}",
":ravenwood-common-policies",
+ ":framework-graphics-ravenwood-policies",
":ravenwood-standard-options",
],
out: [
diff --git a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodContext.java b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodContext.java
index a332633..9e6b12f 100644
--- a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodContext.java
+++ b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodContext.java
@@ -230,6 +230,16 @@
return mAppContext;
}
+ @Override
+ public boolean isRestricted() {
+ return false;
+ }
+
+ @Override
+ public boolean canLoadUnsafeResources() {
+ return true;
+ }
+
/**
* Wrap the given {@link Supplier} to become memoized.
*
diff --git a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodNativeLoader.java b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodNativeLoader.java
index a208d6d..7e935d0 100644
--- a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodNativeLoader.java
+++ b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodNativeLoader.java
@@ -48,6 +48,7 @@
android.content.res.AssetManager.class,
android.content.res.StringBlock.class,
android.content.res.XmlBlock.class,
+ android.text.AndroidCharacter.class,
};
/**
@@ -61,15 +62,49 @@
android.graphics.Path.class,
android.graphics.Color.class,
android.graphics.ColorSpace.class,
+ android.graphics.Bitmap.class,
+ android.graphics.BitmapFactory.class,
+ android.graphics.BitmapRegionDecoder.class,
+ android.graphics.Camera.class,
+ android.graphics.Canvas.class,
+ android.graphics.CanvasProperty.class,
+ android.graphics.ColorFilter.class,
+ android.graphics.DrawFilter.class,
+ android.graphics.FontFamily.class,
+ android.graphics.Gainmap.class,
+ android.graphics.ImageDecoder.class,
+ android.graphics.MaskFilter.class,
+ android.graphics.NinePatch.class,
+ android.graphics.Paint.class,
+ android.graphics.PathEffect.class,
+ android.graphics.PathIterator.class,
+ android.graphics.PathMeasure.class,
+ android.graphics.Picture.class,
+ android.graphics.RecordingCanvas.class,
+ android.graphics.Region.class,
+ android.graphics.RenderNode.class,
+ android.graphics.Shader.class,
+ android.graphics.RenderEffect.class,
+ android.graphics.Typeface.class,
+ android.graphics.YuvImage.class,
+ android.graphics.fonts.Font.class,
+ android.graphics.fonts.FontFamily.class,
+ android.graphics.text.LineBreaker.class,
+ android.graphics.text.MeasuredText.class,
+ android.graphics.text.TextRunShaper.class,
+ android.graphics.text.GraphemeBreak.class,
+ android.util.PathParser.class,
};
/**
* Extra strings needed to pass to register_android_graphics_classes().
*
- * `android.graphics.Graphics` is not actually a class, so we just hardcode it here.
+ * Several entries are not actually a class, so we just hardcode them here.
*/
public final static String[] GRAPHICS_EXTRA_INIT_PARAMS = new String[] {
- "android.graphics.Graphics"
+ "android.graphics.Graphics",
+ "android.graphics.ByteBufferStreamAdaptor",
+ "android.graphics.CreateJavaOutputStreamAdaptor"
};
private RavenwoodNativeLoader() {
diff --git a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodRuntimeEnvironmentController.java b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodRuntimeEnvironmentController.java
index ae88bb2..f205d23 100644
--- a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodRuntimeEnvironmentController.java
+++ b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodRuntimeEnvironmentController.java
@@ -43,6 +43,7 @@
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.res.Resources;
+import android.graphics.Typeface;
import android.icu.util.ULocale;
import android.os.Binder;
import android.os.Build;
@@ -246,6 +247,13 @@
// Do the basic set up for the android sysprops.
RavenwoodSystemProperties.initialize();
+ // Set ICU data file
+ String icuData = RavenwoodCommonUtils.getRavenwoodRuntimePath()
+ + "ravenwood-data/"
+ + RavenwoodRuntimeNative.getIcuDataName()
+ + ".dat";
+ RavenwoodRuntimeNative.setSystemProperty("ro.icu.data.path", icuData);
+
// Enable all log levels for native logging, until we'll have a way to change the native
// side log level at runtime.
// Do this after loading RAVENWOOD_NATIVE_RUNTIME_NAME (which backs Os.setenv()),
@@ -268,6 +276,11 @@
Objects.requireNonNull(Build.TYPE);
Objects.requireNonNull(Build.VERSION.SDK);
+ // Fonts can only be initialized once
+ Typeface.init();
+ Typeface.loadPreinstalledSystemFontMap();
+ Typeface.loadNativeSystemFonts();
+
System.setProperty(RAVENWOOD_VERSION_JAVA_SYSPROP, "1");
// This will let AndroidJUnit4 use the original runner.
System.setProperty("android.junit.runner",
diff --git a/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/RavenwoodJdkPatch.java b/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/RavenwoodJdkPatch.java
index 96aed4b..d5a96dd 100644
--- a/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/RavenwoodJdkPatch.java
+++ b/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/RavenwoodJdkPatch.java
@@ -20,6 +20,7 @@
import java.io.FileDescriptor;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.regex.Pattern;
/**
* Class to host APIs that exist in libcore, but not in standard JRE.
@@ -46,4 +47,22 @@
final var it = map.entrySet().iterator();
return it.hasNext() ? it.next() : null;
}
+
+ /**
+ * Implements Pattern.compile(String)
+ *
+ * ART always assumes UNICODE_CHARACTER_CLASS is set.
+ */
+ public static Pattern compilePattern(String regex) {
+ return Pattern.compile(regex, Pattern.UNICODE_CHARACTER_CLASS);
+ }
+
+ /**
+ * Implements Pattern.compile(String, int)
+ *
+ * ART always assumes UNICODE_CHARACTER_CLASS is set.
+ */
+ public static Pattern compilePattern(String regex, int flag) {
+ return Pattern.compile(regex, flag | Pattern.UNICODE_CHARACTER_CLASS);
+ }
}
diff --git a/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/RavenwoodRuntimeNative.java b/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/RavenwoodRuntimeNative.java
index acbcdf1..0d82a86 100644
--- a/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/RavenwoodRuntimeNative.java
+++ b/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/RavenwoodRuntimeNative.java
@@ -66,6 +66,8 @@
public static native int gettid();
+ public static native String getIcuDataName();
+
public static long lseek(FileDescriptor fd, long offset, int whence) throws ErrnoException {
return nLseek(JvmWorkaround.getInstance().getFdInt(fd), offset, whence);
}
diff --git a/ravenwood/runtime-helper-src/libcore-fake/dalvik/system/CloseGuard.java b/ravenwood/runtime-helper-src/libcore-fake/dalvik/system/CloseGuard.java
new file mode 100644
index 0000000..82bab64
--- /dev/null
+++ b/ravenwood/runtime-helper-src/libcore-fake/dalvik/system/CloseGuard.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2010 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 dalvik.system;
+
+/**
+ * A no-op copy of libcore/dalvik/src/main/java/dalvik/system/CloseGuard.java
+ */
+public final class CloseGuard {
+
+ /**
+ * Returns a CloseGuard instance. {@code #open(String)} can be used to set
+ * up the instance to warn on failure to close.
+ *
+ * @return {@link CloseGuard} instance.
+ *
+ * @hide
+ */
+ public static CloseGuard get() {
+ return new CloseGuard();
+ }
+
+ /**
+ * Enables/disables stack capture and tracking. A call stack is captured
+ * during open(), and open/close events are reported to the Tracker, only
+ * if enabled is true. If a stack trace was captured, the {@link
+ * #getReporter() reporter} is informed of unclosed resources; otherwise a
+ * one-line warning is logged.
+ *
+ * @param enabled whether stack capture and tracking is enabled.
+ *
+ * @hide
+ */
+ public static void setEnabled(boolean enabled) {
+ }
+
+ /**
+ * True if CloseGuard stack capture and tracking are enabled.
+ *
+ * @hide
+ */
+ public static boolean isEnabled() {
+ return false;
+ }
+
+ /**
+ * Used to replace default Reporter used to warn of CloseGuard
+ * violations when stack tracking is enabled. Must be non-null.
+ *
+ * @param rep replacement for default Reporter.
+ *
+ * @hide
+ */
+ public static void setReporter(Reporter rep) {
+ if (rep == null) {
+ throw new NullPointerException("reporter == null");
+ }
+ }
+
+ /**
+ * Returns non-null CloseGuard.Reporter.
+ *
+ * @return CloseGuard's Reporter.
+ *
+ * @hide
+ */
+ public static Reporter getReporter() {
+ return null;
+ }
+
+ /**
+ * Sets the {@link Tracker} that is notified when resources are allocated and released.
+ * The Tracker is invoked only if CloseGuard {@link #isEnabled()} held when {@link #open()}
+ * was called. A null argument disables tracking.
+ *
+ * <p>This is only intended for use by {@code dalvik.system.CloseGuardSupport} class and so
+ * MUST NOT be used for any other purposes.
+ *
+ * @hide
+ */
+ public static void setTracker(Tracker tracker) {
+ }
+
+ /**
+ * Returns {@link #setTracker(Tracker) last Tracker that was set}, or null to indicate
+ * there is none.
+ *
+ * <p>This is only intended for use by {@code dalvik.system.CloseGuardSupport} class and so
+ * MUST NOT be used for any other purposes.
+ *
+ * @hide
+ */
+ public static Tracker getTracker() {
+ return null;
+ }
+
+ private CloseGuard() {}
+
+ /**
+ * {@code open} initializes the instance with a warning that the caller
+ * should have explicitly called the {@code closer} method instead of
+ * relying on finalization.
+ *
+ * @param closer non-null name of explicit termination method. Printed by warnIfOpen.
+ * @throws NullPointerException if closer is null.
+ *
+ * @hide
+ */
+ public void open(String closer) {
+ openWithCallSite(closer, null /* callsite */);
+ }
+
+ /**
+ * Like {@link #open(String)}, but with explicit callsite string being passed in for better
+ * performance.
+ * <p>
+ * This only has better performance than {@link #open(String)} if {@link #isEnabled()} returns {@code true}, which
+ * usually shouldn't happen on release builds.
+ *
+ * @param closer Non-null name of explicit termination method. Printed by warnIfOpen.
+ * @param callsite Non-null string uniquely identifying the callsite.
+ *
+ * @hide
+ */
+ public void openWithCallSite(String closer, String callsite) {
+ }
+
+ // We keep either an allocation stack containing the closer String or, when
+ // in disabled state, just the closer String.
+ // We keep them in a single field only to minimize overhead.
+ private Object /* String or Throwable */ closerNameOrAllocationInfo;
+
+ /**
+ * Marks this CloseGuard instance as closed to avoid warnings on
+ * finalization.
+ *
+ * @hide
+ */
+ public void close() {
+ }
+
+ /**
+ * Logs a warning if the caller did not properly cleanup by calling an
+ * explicit close method before finalization. If CloseGuard was enabled
+ * when the CloseGuard was created, passes the stacktrace associated with
+ * the allocation to the current reporter. If it was not enabled, it just
+ * directly logs a brief message.
+ *
+ * @hide
+ */
+ public void warnIfOpen() {
+ }
+
+
+ /**
+ * Interface to allow customization of tracking behaviour.
+ *
+ * <p>This is only intended for use by {@code dalvik.system.CloseGuardSupport} class and so
+ * MUST NOT be used for any other purposes.
+ *
+ * @hide
+ */
+ public interface Tracker {
+ void open(Throwable allocationSite);
+ void close(Throwable allocationSite);
+ }
+
+ /**
+ * Interface to allow customization of reporting behavior.
+ * @hide
+ */
+ public interface Reporter {
+ /**
+ *
+ * @hide
+ */
+ void report(String message, Throwable allocationSite);
+
+ /**
+ *
+ * @hide
+ */
+ default void report(String message) {}
+ }
+}
diff --git a/ravenwood/runtime-helper-src/libcore-fake/libcore/io/IoBridge.java b/ravenwood/runtime-helper-src/libcore-fake/libcore/io/IoBridge.java
new file mode 100644
index 0000000..2a1ee25
--- /dev/null
+++ b/ravenwood/runtime-helper-src/libcore-fake/libcore/io/IoBridge.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2025 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 libcore.io;
+
+import android.system.ErrnoException;
+import android.system.Os;
+import android.system.OsConstants;
+
+import java.io.FileDescriptor;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+public class IoBridge {
+
+ public static void closeAndSignalBlockedThreads(FileDescriptor fd) throws IOException {
+ if (fd == null) {
+ return;
+ }
+ try {
+ Os.close(fd);
+ } catch (ErrnoException errnoException) {
+ throw errnoException.rethrowAsIOException();
+ }
+ }
+
+ public static FileDescriptor open(String path, int flags) throws FileNotFoundException {
+ FileDescriptor fd = null;
+ try {
+ fd = Os.open(path, flags, 0666);
+ // Posix open(2) fails with EISDIR only if you ask for write permission.
+ // Java disallows reading directories too.f
+ if (OsConstants.S_ISDIR(Os.fstat(fd).st_mode)) {
+ throw new ErrnoException("open", OsConstants.EISDIR);
+ }
+ return fd;
+ } catch (ErrnoException errnoException) {
+ try {
+ if (fd != null) {
+ closeAndSignalBlockedThreads(fd);
+ }
+ } catch (IOException ignored) {
+ }
+ FileNotFoundException ex = new FileNotFoundException(path + ": "
+ + errnoException.getMessage());
+ ex.initCause(errnoException);
+ throw ex;
+ }
+ }
+}
diff --git a/ravenwood/runtime-helper-src/libcore-fake/libcore/util/NativeAllocationRegistry.java b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/NativeAllocationRegistry.java
index ad86135..cf1a513 100644
--- a/ravenwood/runtime-helper-src/libcore-fake/libcore/util/NativeAllocationRegistry.java
+++ b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/NativeAllocationRegistry.java
@@ -35,6 +35,11 @@
return new NativeAllocationRegistry(classLoader, freeFunction, size);
}
+ public static NativeAllocationRegistry createNonmalloced(
+ Class clazz, long freeFunction, long size) {
+ return new NativeAllocationRegistry(clazz.getClassLoader(), freeFunction, size);
+ }
+
public static NativeAllocationRegistry createMalloced(
ClassLoader classLoader, long freeFunction, long size) {
return new NativeAllocationRegistry(classLoader, freeFunction, size);
@@ -45,6 +50,11 @@
return new NativeAllocationRegistry(classLoader, freeFunction, 0);
}
+ public static NativeAllocationRegistry createMalloced(
+ Class clazz, long freeFunction, long size) {
+ return new NativeAllocationRegistry(clazz.getClassLoader(), freeFunction, size);
+ }
+
public NativeAllocationRegistry(ClassLoader classLoader, long freeFunction, long size) {
if (size < 0) {
throw new IllegalArgumentException("Invalid native allocation size: " + size);
@@ -52,6 +62,37 @@
mFreeFunction = freeFunction;
}
+ private class CleanerThunk implements Runnable {
+ private long nativePtr;
+
+ public CleanerThunk() {
+ nativePtr = 0;
+ }
+
+ public void setNativePtr(long ptr) {
+ nativePtr = ptr;
+ }
+
+ @Override
+ public void run() {
+ if (nativePtr != 0) {
+ applyFreeFunction(mFreeFunction, nativePtr);
+ }
+ }
+ }
+
+ private static class CleanableRunner implements Runnable {
+ private final Cleaner.Cleanable mCleanable;
+
+ public CleanableRunner(Cleaner.Cleanable cleanable) {
+ mCleanable = cleanable;
+ }
+
+ public void run() {
+ mCleanable.clean();
+ }
+ }
+
public Runnable registerNativeAllocation(Object referent, long nativePtr) {
if (referent == null) {
throw new IllegalArgumentException("referent is null");
@@ -60,13 +101,25 @@
throw new IllegalArgumentException("nativePtr is null");
}
- final Runnable releaser = () -> {
- RavenwoodRuntimeNative.applyFreeFunction(mFreeFunction, nativePtr);
- };
- sCleaner.register(referent, releaser);
+ final CleanerThunk thunk;
+ final CleanableRunner result;
+ try {
+ thunk = new CleanerThunk();
+ final var cleanable = sCleaner.register(referent, thunk);
+ result = new CleanableRunner(cleanable);
+ } catch (VirtualMachineError vme /* probably OutOfMemoryError */) {
+ applyFreeFunction(mFreeFunction, nativePtr);
+ throw vme;
+ }
+ // Enable the cleaner only after we can no longer throw anything, including OOME.
+ thunk.setNativePtr(nativePtr);
// Ensure that cleaner doesn't get invoked before we enable it.
Reference.reachabilityFence(referent);
- return releaser;
+ return result;
+ }
+
+ public static void applyFreeFunction(long freeFunction, long nativePtr) {
+ RavenwoodRuntimeNative.applyFreeFunction(freeFunction, nativePtr);
}
}
diff --git a/ravenwood/runtime-jni/ravenwood_runtime.cpp b/ravenwood/runtime-jni/ravenwood_runtime.cpp
index 8d8ed71..01ebdc9 100644
--- a/ravenwood/runtime-jni/ravenwood_runtime.cpp
+++ b/ravenwood/runtime-jni/ravenwood_runtime.cpp
@@ -20,6 +20,7 @@
#include <sys/syscall.h>
#include <unistd.h>
#include <utils/misc.h>
+#include <unicode/utypes.h>
#include <string>
@@ -183,6 +184,10 @@
return syscall(__NR_gettid);
}
+static jstring getIcuDataName(JNIEnv* env, jclass clazz) {
+ return env->NewStringUTF(U_ICUDATA_NAME);
+}
+
// ---- Registration ----
extern void register_android_system_OsConstants(JNIEnv* env);
@@ -201,6 +206,7 @@
{ "setenv", "(Ljava/lang/String;Ljava/lang/String;Z)V", (void*)Linux_setenv },
{ "getpid", "()I", (void*)Linux_getpid },
{ "gettid", "()I", (void*)Linux_gettid },
+ { "getIcuDataName", "()Ljava/lang/String;", (void*)getIcuDataName },
};
extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */) {
diff --git a/ravenwood/texts/ravenwood-annotation-allowed-classes.txt b/ravenwood/texts/ravenwood-annotation-allowed-classes.txt
index e202d0e..7462cc2 100644
--- a/ravenwood/texts/ravenwood-annotation-allowed-classes.txt
+++ b/ravenwood/texts/ravenwood-annotation-allowed-classes.txt
@@ -259,6 +259,8 @@
android.database.sqlite.SQLiteException
android.text.TextUtils
+android.text.Html
+android.text.HtmlToSpannedConverter
android.accounts.Account
@@ -278,6 +280,10 @@
android.graphics.Rect
android.graphics.RectF
+android.graphics.fonts.SystemFonts
+
+android.graphics.text.LineBreakConfig
+
android.content.ContentProvider
android.app.ActivityManager
@@ -383,3 +389,228 @@
com.android.server.compat.*
com.android.internal.compat.*
android.app.AppCompatCallbacks
+android.graphics.AvoidXfermode
+android.graphics.BLASTBufferQueue
+android.graphics.BaseCanvas
+android.graphics.BaseRecordingCanvas
+android.graphics.Bitmap
+android.graphics.BitmapFactory
+android.graphics.BitmapRegionDecoder
+android.graphics.BitmapShader
+android.graphics.BlendMode
+android.graphics.BlendModeColorFilter
+android.graphics.BlurMaskFilter
+android.graphics.Camera
+android.graphics.Canvas
+android.graphics.CanvasProperty
+android.graphics.ColorFilter
+android.graphics.ColorMatrix
+android.graphics.ColorMatrixColorFilter
+android.graphics.Compatibility
+android.graphics.ComposePathEffect
+android.graphics.ComposeShader
+android.graphics.CornerPathEffect
+android.graphics.DashPathEffect
+android.graphics.DiscretePathEffect
+android.graphics.DrawFilter
+android.graphics.EmbossMaskFilter
+android.graphics.FontFamily
+android.graphics.FontListParser
+android.graphics.ForceDarkType
+android.graphics.FrameInfo
+android.graphics.Gainmap
+android.graphics.GraphicBuffer
+android.graphics.GraphicsProtos
+android.graphics.GraphicsStatsService
+android.graphics.HardwareBufferRenderer
+android.graphics.HardwareRenderer
+android.graphics.HardwareRendererObserver
+android.graphics.ImageDecoder
+android.graphics.ImageFormat
+android.graphics.LayerRasterizer
+android.graphics.LeakyTypefaceStorage
+android.graphics.LightingColorFilter
+android.graphics.LinearGradient
+android.graphics.MaskFilter
+android.graphics.Mesh
+android.graphics.MeshSpecification
+android.graphics.Movie
+android.graphics.NinePatch
+android.graphics.Paint
+android.graphics.PaintFlagsDrawFilter
+android.graphics.PathDashPathEffect
+android.graphics.PathEffect
+android.graphics.PathIterator
+android.graphics.PathMeasure
+android.graphics.Picture
+android.graphics.PixelXorXfermode
+android.graphics.PorterDuff
+android.graphics.PorterDuffColorFilter
+android.graphics.PorterDuffXfermode
+android.graphics.PostProcessor
+android.graphics.RadialGradient
+android.graphics.Rasterizer
+android.graphics.RecordingCanvas
+android.graphics.Region
+android.graphics.RegionIterator
+android.graphics.RenderEffect
+android.graphics.RenderNode
+android.graphics.RuntimeColorFilter
+android.graphics.RuntimeShader
+android.graphics.RuntimeXfermode
+android.graphics.Shader
+android.graphics.SumPathEffect
+android.graphics.SurfaceTexture
+android.graphics.SweepGradient
+android.graphics.TableMaskFilter
+android.graphics.TemporaryBuffer
+android.graphics.TextureLayer
+android.graphics.Typeface
+android.graphics.Xfermode
+android.graphics.YuvImage
+android.graphics.fonts.Font
+android.graphics.fonts.FontCustomizationParser
+android.graphics.fonts.FontFamily
+android.graphics.fonts.FontFamilyUpdateRequest
+android.graphics.fonts.FontFileUpdateRequest
+android.graphics.fonts.FontFileUtil
+android.graphics.fonts.FontStyle
+android.graphics.fonts.FontVariationAxis
+android.graphics.text.GraphemeBreak
+android.graphics.text.LineBreaker
+android.graphics.text.MeasuredText
+android.graphics.text.PositionedGlyphs
+android.graphics.text.TextRunShaper
+android.text.AlteredCharSequence
+android.text.AndroidBidi
+android.text.AndroidCharacter
+android.text.Annotation
+android.text.AutoGrowArray
+android.text.AutoText
+android.text.BidiFormatter
+android.text.BoringLayout
+android.text.CharSequenceCharacterIterator
+android.text.ClipboardManager
+android.text.DynamicLayout
+android.text.Editable
+android.text.Emoji
+android.text.EmojiConsistency
+android.text.FontConfig
+android.text.GetChars
+android.text.GraphemeClusterSegmentFinder
+android.text.GraphicsOperations
+android.text.Highlights
+android.text.Hyphenator
+android.text.InputFilter
+android.text.InputType
+android.text.Layout
+android.text.LoginFilter
+android.text.MeasuredParagraph
+android.text.NoCopySpan
+android.text.PackedIntVector
+android.text.PackedObjectVector
+android.text.ParcelableSpan
+android.text.PrecomputedText
+android.text.SegmentFinder
+android.text.Selection
+android.text.SpanColors
+android.text.SpanSet
+android.text.SpanWatcher
+android.text.Spannable
+android.text.SpannableString
+android.text.SpannableStringBuilder
+android.text.SpannableStringInternal
+android.text.Spanned
+android.text.SpannedString
+android.text.StaticLayout
+android.text.TextDirectionHeuristic
+android.text.TextDirectionHeuristics
+android.text.TextLine
+android.text.TextPaint
+android.text.TextShaper
+android.text.TextWatcher
+android.text.WordSegmentFinder
+android.text.format.DateFormat
+android.text.format.DateIntervalFormat
+android.text.format.DateTimeFormat
+android.text.format.DateUtils
+android.text.format.DateUtilsBridge
+android.text.format.Formatter
+android.text.format.RelativeDateTimeFormatter
+android.text.format.Time
+android.text.format.TimeFormatter
+android.text.format.TimeMigrationUtils
+android.text.method.AllCapsTransformationMethod
+android.text.method.ArrowKeyMovementMethod
+android.text.method.BaseKeyListener
+android.text.method.BaseMovementMethod
+android.text.method.CharacterPickerDialog
+android.text.method.DateKeyListener
+android.text.method.DateTimeKeyListener
+android.text.method.DialerKeyListener
+android.text.method.DigitsKeyListener
+android.text.method.HideReturnsTransformationMethod
+android.text.method.InsertModeTransformationMethod
+android.text.method.KeyListener
+android.text.method.LinkMovementMethod
+android.text.method.MetaKeyKeyListener
+android.text.method.MovementMethod
+android.text.method.MultiTapKeyListener
+android.text.method.NumberKeyListener
+android.text.method.OffsetMapping
+android.text.method.PasswordTransformationMethod
+android.text.method.QwertyKeyListener
+android.text.method.ReplacementTransformationMethod
+android.text.method.ScrollingMovementMethod
+android.text.method.SingleLineTransformationMethod
+android.text.method.TextKeyListener
+android.text.method.TimeKeyListener
+android.text.method.Touch
+android.text.method.TransformationMethod
+android.text.method.TransformationMethod2
+android.text.method.TranslationTransformationMethod
+android.text.method.WordIterator
+android.text.style.AbsoluteSizeSpan
+android.text.style.AccessibilityClickableSpan
+android.text.style.AccessibilityReplacementSpan
+android.text.style.AccessibilityURLSpan
+android.text.style.AlignmentSpan
+android.text.style.BackgroundColorSpan
+android.text.style.BulletSpan
+android.text.style.CharacterStyle
+android.text.style.ClickableSpan
+android.text.style.ForegroundColorSpan
+android.text.style.IconMarginSpan
+android.text.style.LeadingMarginSpan
+android.text.style.LineBackgroundSpan
+android.text.style.LineBreakConfigSpan
+android.text.style.LineHeightSpan
+android.text.style.LocaleSpan
+android.text.style.MaskFilterSpan
+android.text.style.MetricAffectingSpan
+android.text.style.NoWritingToolsSpan
+android.text.style.ParagraphStyle
+android.text.style.QuoteSpan
+android.text.style.RasterizerSpan
+android.text.style.RelativeSizeSpan
+android.text.style.ReplacementSpan
+android.text.style.ScaleXSpan
+android.text.style.SpanUtils
+android.text.style.SpellCheckSpan
+android.text.style.StrikethroughSpan
+android.text.style.StyleSpan
+android.text.style.SubscriptSpan
+android.text.style.SuggestionRangeSpan
+android.text.style.SuggestionSpan
+android.text.style.SuperscriptSpan
+android.text.style.TabStopSpan
+android.text.style.TextAppearanceSpan
+android.text.style.TtsSpan
+android.text.style.TypefaceSpan
+android.text.style.URLSpan
+android.text.style.UnderlineSpan
+android.text.style.UpdateAppearance
+android.text.style.UpdateLayout
+android.text.style.WrapTogetherSpan
+android.text.util.Rfc822Token
+android.text.util.Rfc822Tokenizer
diff --git a/ravenwood/texts/ravenwood-build.prop b/ravenwood/texts/ravenwood-build.prop
index 7cc4454..37c50f1 100644
--- a/ravenwood/texts/ravenwood-build.prop
+++ b/ravenwood/texts/ravenwood-build.prop
@@ -8,7 +8,11 @@
ro.soc.model=Ravenwood
ro.debuggable=1
-# The ones starting with "ro.product" or "ro.bild" will be copied to all "partitions" too.
+# For the graphics stack
+ro.hwui.max_texture_allocation_size=104857600
+persist.sys.locale=en-US
+
+# The ones starting with "ro.product" or "ro.build" will be copied to all "partitions" too.
# See RavenwoodSystemProperties.
ro.product.brand=Android
ro.product.device=Ravenwood
diff --git a/ravenwood/texts/ravenwood-common-policies.txt b/ravenwood/texts/ravenwood-common-policies.txt
index fd4ea6c..f0f4b85 100644
--- a/ravenwood/texts/ravenwood-common-policies.txt
+++ b/ravenwood/texts/ravenwood-common-policies.txt
@@ -21,3 +21,7 @@
method setInt$ @com.android.ravenwood.RavenwoodJdkPatch.setInt$
class java.util.LinkedHashMap # no-pta
method eldest @com.android.ravenwood.RavenwoodJdkPatch.eldest
+
+# Always set flag UNICODE_CHARACTER_CLASS when compiling regex
+class java.util.regex.Pattern keep
+ method compile @com.android.ravenwood.RavenwoodJdkPatch.compilePattern
diff --git a/ravenwood/texts/ravenwood-framework-policies.txt b/ravenwood/texts/ravenwood-framework-policies.txt
index fff9e6a..0695316 100644
--- a/ravenwood/texts/ravenwood-framework-policies.txt
+++ b/ravenwood/texts/ravenwood-framework-policies.txt
@@ -63,3 +63,22 @@
# Just enough to allow ResourcesManager to run
class android.hardware.display.DisplayManagerGlobal keep # no-pta
method getInstance ()Landroid/hardware/display/DisplayManagerGlobal; ignore # no-pta
+
+# Bare minimum to support running ImageDecoderTest
+class android.graphics.drawable.Drawable$ConstantState keepclass # no-pta
+class android.graphics.drawable.BitmapDrawable$BitmapState keepclass # no-pta
+class android.graphics.drawable.BitmapDrawable keep # no-pta
+ method <init> (Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V keep
+ method init * keep
+ method updateLocalState * keep
+ method computeBitmapSize * keep
+ method getIntrinsicWidth * keep
+ method getIntrinsicHeight * keep
+ method getBitmap * keep
+class android.graphics.drawable.Drawable keep # no-pta
+ method <init> ()V keep
+ method resolveDensity * keep
+ method updateBlendModeFilter * ignore
+
+class android.os.StrictMode keep # no-pta
+ method noteSlowCall (Ljava/lang/String;)V ignore
diff --git a/services/accessibility/accessibility.aconfig b/services/accessibility/accessibility.aconfig
index 5e1fe8a6..b52b3dab 100644
--- a/services/accessibility/accessibility.aconfig
+++ b/services/accessibility/accessibility.aconfig
@@ -145,16 +145,6 @@
}
flag {
- name: "enable_magnification_follows_mouse_bugfix"
- namespace: "accessibility"
- description: "Whether to enable mouse following for fullscreen magnification"
- bug: "354696546"
- metadata {
- purpose: PURPOSE_BUGFIX
- }
-}
-
-flag {
name: "enable_magnification_follows_mouse_with_pointer_motion_filter"
namespace: "accessibility"
description: "Whether to enable mouse following using pointer motion filter"
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
index 9b5f22a..4e41808 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
@@ -53,7 +53,6 @@
import com.android.server.accessibility.magnification.FullScreenMagnificationVibrationHelper;
import com.android.server.accessibility.magnification.MagnificationGestureHandler;
import com.android.server.accessibility.magnification.MagnificationKeyHandler;
-import com.android.server.accessibility.magnification.MouseEventHandler;
import com.android.server.accessibility.magnification.WindowMagnificationGestureHandler;
import com.android.server.accessibility.magnification.WindowMagnificationPromptController;
import com.android.server.policy.WindowManagerPolicy;
@@ -899,8 +898,7 @@
triggerable,
new WindowMagnificationPromptController(displayContext, mUserId),
displayId,
- fullScreenMagnificationVibrationHelper,
- new MouseEventHandler(controller));
+ fullScreenMagnificationVibrationHelper);
}
return magnificationGestureHandler;
}
diff --git a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickIndicatorView.java b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickIndicatorView.java
index 01f359f..6beb47a 100644
--- a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickIndicatorView.java
+++ b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickIndicatorView.java
@@ -123,6 +123,7 @@
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// Get the screen dimensions.
+ // TODO(b/397944891): Handle device rotation case.
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;
diff --git a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
index ba3e3d1..342675a 100644
--- a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
+++ b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
@@ -25,6 +25,7 @@
import android.graphics.drawable.GradientDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.view.WindowInsets;
import android.view.WindowManager;
@@ -51,6 +52,16 @@
public static final int CORNER_TOP_LEFT = 2;
public static final int CORNER_TOP_RIGHT = 3;
+ // Distance between panel and screen edge.
+ // TODO(b/396402941): Finalize edge margin.
+ private static final int PANEL_EDGE_MARGIN = 15;
+
+ // Touch point when drag starts, it can be anywhere inside the panel.
+ private float mTouchStartX, mTouchStartY;
+ // Initial panel position in screen coordinates.
+ private int mPanelStartX, mPanelStartY;
+ private boolean mIsDragging = false;
+
// Types of click the AutoclickTypePanel supports.
@IntDef({
AUTOCLICK_TYPE_LEFT_CLICK,
@@ -101,6 +112,8 @@
private final WindowManager mWindowManager;
+ private WindowManager.LayoutParams mParams;
+
private final ClickPanelControllerInterface mClickPanelController;
// Whether the panel is expanded or not.
@@ -133,6 +146,7 @@
mContext = context;
mWindowManager = windowManager;
mClickPanelController = clickPanelController;
+ mParams = getDefaultLayoutParams();
mPauseButtonDrawable = mContext.getDrawable(
R.drawable.accessibility_autoclick_pause);
@@ -154,6 +168,91 @@
mPositionButton = mContentView.findViewById(R.id.accessibility_autoclick_position_layout);
initializeButtonState();
+
+ // Set up touch event handling for the panel to allow the user to drag and reposition the
+ // panel by touching and moving it.
+ mContentView.setOnTouchListener(this::onPanelTouch);
+ }
+
+ /**
+ * Handles touch events on the panel, enabling the user to drag and reposition it.
+ * This function supports the draggable panel feature, allowing users to move the panel
+ * to different screen locations for better usability and customization.
+ */
+ private boolean onPanelTouch(View v, MotionEvent event) {
+ // TODO(b/397681794): Make sure this works on multiple screens.
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ // Store initial touch positions.
+ mTouchStartX = event.getRawX();
+ mTouchStartY = event.getRawY();
+
+ // Store initial panel position relative to screen's top-left corner.
+ // getLocationOnScreen provides coordinates relative to the top-left corner of the
+ // screen's display. We are using this coordinate system to consistently track the
+ // panel's position during drag operations.
+ int[] location = new int[2];
+ v.getLocationOnScreen(location);
+ mPanelStartX = location[0];
+ mPanelStartY = location[1];
+ return true;
+ case MotionEvent.ACTION_MOVE:
+ mIsDragging = true;
+
+ // Set panel gravity to TOP|LEFT to match getLocationOnScreen's coordinate system
+ mParams.gravity = Gravity.LEFT | Gravity.TOP;
+
+ if (mIsDragging) {
+ // Calculate touch distance moved from start position.
+ float deltaX = event.getRawX() - mTouchStartX;
+ float deltaY = event.getRawY() - mTouchStartY;
+
+ // Update panel position, based on Top-Left absolute positioning.
+ mParams.x = mPanelStartX + (int) deltaX;
+ mParams.y = mPanelStartY + (int) deltaY;
+ mWindowManager.updateViewLayout(mContentView, mParams);
+ }
+ return true;
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL:
+ if (mIsDragging) {
+ // When drag ends, snap panel to nearest edge.
+ snapToNearestEdge(mParams);
+ }
+ mIsDragging = false;
+ return true;
+ }
+ return false;
+ }
+
+ private void snapToNearestEdge(WindowManager.LayoutParams params) {
+ // Get screen width to determine which side to snap to.
+ // TODO(b/397944891): Handle device rotation case.
+ int screenWidth = mContext.getResources().getDisplayMetrics().widthPixels;
+ int yPosition = params.y;
+
+ // Determine which half of the screen the panel is on.
+ boolean isOnLeftHalf = params.x < screenWidth / 2;
+
+ if (isOnLeftHalf) {
+ // Snap to left edge. Set params.gravity to make sure x, y offsets from correct anchor.
+ params.gravity = Gravity.START | Gravity.TOP;
+ // Set the current corner to be bottom-left to ensure that the subsequent reposition
+ // action rotates the panel clockwise from bottom-left towards top-left.
+ mCurrentCornerIndex = 1;
+ } else {
+ // Snap to right edge. Set params.gravity to make sure x, y offsets from correct anchor.
+ params.gravity = Gravity.END | Gravity.TOP;
+ // Set the current corner to be top-right to ensure that the subsequent reposition
+ // action rotates the panel clockwise from top-right towards bottom-right.
+ mCurrentCornerIndex = 3;
+ }
+
+ // Apply final position: set params.x to be edge margin, params.y to maintain vertical
+ // position.
+ params.x = PANEL_EDGE_MARGIN;
+ params.y = yPosition;
+ mWindowManager.updateViewLayout(mContentView, params);
}
private void initializeButtonState() {
@@ -209,7 +308,7 @@
}
public void show() {
- mWindowManager.addView(mContentView, getLayoutParams());
+ mWindowManager.addView(mContentView, mParams);
}
public void hide() {
@@ -291,9 +390,8 @@
@Corner int nextCornerIndex = (mCurrentCornerIndex + 1) % CORNER_ROTATION_ORDER.length;
mCurrentCornerIndex = nextCornerIndex;
- // getLayoutParams() will update the panel position based on current corner.
- WindowManager.LayoutParams params = getLayoutParams();
- mWindowManager.updateViewLayout(mContentView, params);
+ setPanelPositionForCorner(mParams, mCurrentCornerIndex);
+ mWindowManager.updateViewLayout(mContentView, mParams);
}
private void setPanelPositionForCorner(WindowManager.LayoutParams params, @Corner int corner) {
@@ -303,22 +401,22 @@
switch (corner) {
case CORNER_BOTTOM_RIGHT:
params.gravity = Gravity.END | Gravity.BOTTOM;
- params.x = 15;
+ params.x = PANEL_EDGE_MARGIN;
params.y = 90;
break;
case CORNER_BOTTOM_LEFT:
params.gravity = Gravity.START | Gravity.BOTTOM;
- params.x = 15;
+ params.x = PANEL_EDGE_MARGIN;
params.y = 90;
break;
case CORNER_TOP_LEFT:
params.gravity = Gravity.START | Gravity.TOP;
- params.x = 15;
+ params.x = PANEL_EDGE_MARGIN;
params.y = 30;
break;
case CORNER_TOP_RIGHT:
params.gravity = Gravity.END | Gravity.TOP;
- params.x = 15;
+ params.x = PANEL_EDGE_MARGIN;
params.y = 30;
break;
default:
@@ -343,13 +441,22 @@
return mCurrentCornerIndex;
}
+ @VisibleForTesting
+ WindowManager.LayoutParams getLayoutParamsForTesting() {
+ return mParams;
+ }
+
+ @VisibleForTesting
+ boolean getIsDraggingForTesting() {
+ return mIsDragging;
+ }
+
/**
* Retrieves the layout params for AutoclickIndicatorView, used when it's added to the Window
* Manager.
*/
- @VisibleForTesting
@NonNull
- WindowManager.LayoutParams getLayoutParams() {
+ private WindowManager.LayoutParams getDefaultLayoutParams() {
final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
@@ -362,7 +469,7 @@
mContext.getString(R.string.accessibility_autoclick_type_settings_panel_title);
layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
- setPanelPositionForCorner(layoutParams, mCurrentCornerIndex);
+ setPanelPositionForCorner(layoutParams, CORNER_BOTTOM_RIGHT);
return layoutParams;
}
}
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java b/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java
index d11ae0a..e0dd8b6 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java
@@ -182,7 +182,7 @@
private final int mMinimumVelocity;
private final int mMaximumVelocity;
- private MouseEventHandler mMouseEventHandler;
+ private final MouseEventHandler mMouseEventHandler;
public FullScreenMagnificationGestureHandler(
@UiContext Context context,
@@ -194,8 +194,7 @@
boolean detectShortcutTrigger,
@NonNull WindowMagnificationPromptController promptController,
int displayId,
- FullScreenMagnificationVibrationHelper fullScreenMagnificationVibrationHelper,
- MouseEventHandler mouseEventHandler) {
+ FullScreenMagnificationVibrationHelper fullScreenMagnificationVibrationHelper) {
this(
context,
fullScreenMagnificationController,
@@ -210,8 +209,7 @@
/* magnificationLogger= */ null,
ViewConfiguration.get(context),
new OneFingerPanningSettingsProvider(
- context, Flags.enableMagnificationOneFingerPanningGesture()),
- mouseEventHandler);
+ context, Flags.enableMagnificationOneFingerPanningGesture()));
}
/** Constructor for tests. */
@@ -229,8 +227,7 @@
FullScreenMagnificationVibrationHelper fullScreenMagnificationVibrationHelper,
MagnificationLogger magnificationLogger,
ViewConfiguration viewConfiguration,
- OneFingerPanningSettingsProvider oneFingerPanningSettingsProvider,
- MouseEventHandler mouseEventHandler) {
+ OneFingerPanningSettingsProvider oneFingerPanningSettingsProvider) {
super(displayId, detectSingleFingerTripleTap, detectTwoFingerTripleTap,
detectShortcutTrigger, trace, callback);
if (DEBUG_ALL) {
@@ -316,7 +313,7 @@
mOverscrollEdgeSlop = context.getResources().getDimensionPixelSize(
R.dimen.accessibility_fullscreen_magnification_gesture_edge_slop);
mIsWatch = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH);
- mMouseEventHandler = mouseEventHandler;
+ mMouseEventHandler = new MouseEventHandler(mFullScreenMagnificationController);
if (mDetectShortcutTrigger) {
mScreenStateReceiver = new ScreenStateReceiver(context, this);
@@ -340,15 +337,14 @@
@Override
void handleMouseOrStylusEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
- if (Flags.enableMagnificationFollowsMouseBugfix()) {
- if (mFullScreenMagnificationController.isActivated(mDisplayId)) {
- // TODO(b/354696546): Allow mouse/stylus to activate whichever display they are
- // over, rather than only interacting with the current display.
-
- // Send through the mouse/stylus event handler.
- mMouseEventHandler.onEvent(event, mDisplayId);
- }
+ if (!mFullScreenMagnificationController.isActivated(mDisplayId)) {
+ return;
}
+ // TODO(b/354696546): Allow mouse/stylus to activate whichever display they are
+ // over, rather than only interacting with the current display.
+
+ // Send through the mouse/stylus event handler.
+ mMouseEventHandler.onEvent(event, mDisplayId);
}
private void handleTouchEventWith(
@@ -1170,8 +1166,7 @@
protected void cacheDelayedMotionEvent(MotionEvent event, MotionEvent rawEvent,
int policyFlags) {
- if (Flags.enableMagnificationFollowsMouseBugfix()
- && !event.isFromSource(SOURCE_TOUCHSCREEN)) {
+ if (!event.isFromSource(SOURCE_TOUCHSCREEN)) {
// Only touch events need to be cached and sent later.
return;
}
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureHandler.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureHandler.java
index fa86ba3..6b39c98 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureHandler.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureHandler.java
@@ -146,8 +146,7 @@
} break;
case SOURCE_MOUSE:
case SOURCE_STYLUS: {
- if (magnificationShortcutExists()
- && Flags.enableMagnificationFollowsMouseBugfix()) {
+ if (magnificationShortcutExists()) {
handleMouseOrStylusEvent(event, rawEvent, policyFlags);
}
}
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 74a87ed..4441db7 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -5232,7 +5232,7 @@
}
}
return singleCategoryKeyedEntries;
- } catch (IOException e) {
+ } catch (Exception e) {
Slog.e(TAG, "Failed to load generated previews for " + provider, e);
return new SparseArray<>();
}
@@ -5261,7 +5261,7 @@
try {
provider.info.generatedPreviewCategories = readGeneratedPreviewCategoriesFromProto(
input);
- } catch (IOException e) {
+ } catch (Exception e) {
Slog.e(TAG, "Failed to read generated previews from file for " + provider, e);
previewsFile.delete();
provider.info.generatedPreviewCategories = 0;
@@ -5314,7 +5314,7 @@
scheduleNotifyGroupHostsForProvidersChangedLocked(provider.getUserId());
}
}
- } catch (IOException e) {
+ } catch (Exception e) {
if (file != null && stream != null) {
file.failWrite(stream);
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 07a4d52..8b701f0 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -198,6 +198,7 @@
import android.annotation.PermissionMethod;
import android.annotation.PermissionName;
import android.annotation.RequiresPermission;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.app.Activity;
import android.app.ActivityClient;
@@ -3921,8 +3922,8 @@
* The pkg name and app id have to be specified.
*/
@Override
- public void killApplication(String pkg, int appId, int userId, String reason,
- int exitInfoReason) {
+ public void killApplication(String pkg, int appId, @CanBeALL @UserIdInt int userId,
+ String reason, int exitInfoReason) {
if (pkg == null) {
return;
}
@@ -4307,7 +4308,7 @@
final boolean forceStopPackageLocked(String packageName, int appId,
boolean callerWillRestart, boolean purgeCache, boolean doit,
boolean evenPersistent, boolean uninstalling, boolean packageStateStopped,
- int userId, String reasonString, int reason) {
+ @CanBeALL @UserIdInt int userId, String reasonString, int reason) {
return forceStopPackageInternalLocked(packageName, appId, callerWillRestart, purgeCache,
doit, evenPersistent, uninstalling, packageStateStopped, userId, reasonString,
reason, ProcessList.INVALID_ADJ);
@@ -4317,7 +4318,7 @@
private boolean forceStopPackageInternalLocked(String packageName, int appId,
boolean callerWillRestart, boolean purgeCache, boolean doit,
boolean evenPersistent, boolean uninstalling, boolean packageStateStopped,
- int userId, String reasonString, int reason, int minOomAdj) {
+ @CanBeALL @UserIdInt int userId, String reasonString, int reason, int minOomAdj) {
int i;
if (userId == UserHandle.USER_ALL && packageName == null) {
@@ -18093,7 +18094,7 @@
}
@Override
- public void killApplicationSync(String pkgName, int appId, int userId,
+ public void killApplicationSync(String pkgName, int appId, @CanBeALL @UserIdInt int userId,
String reason, int exitInfoReason) {
if (pkgName == null) {
return;
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index b8babe6..a61368c 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -67,6 +67,8 @@
import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
+import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.ActivityManager.ProcessCapability;
import android.app.ActivityThread;
@@ -2961,8 +2963,8 @@
}
@GuardedBy({"mService", "mProcLock"})
- boolean killPackageProcessesLSP(String packageName, int appId, int userId, int minOomAdj,
- int reasonCode, int subReason, String reason) {
+ boolean killPackageProcessesLSP(String packageName, int appId, @CanBeALL @UserIdInt int userId,
+ int minOomAdj, int reasonCode, int subReason, String reason) {
return killPackageProcessesLSP(packageName, appId, userId, minOomAdj,
false /* callerWillRestart */, true /* allowRestart */, true /* doit */,
false /* evenPersistent */, false /* setRemoved */, false /* uninstalling */,
@@ -2970,7 +2972,8 @@
}
@GuardedBy("mService")
- void killAppZygotesLocked(String packageName, int appId, int userId, boolean force) {
+ void killAppZygotesLocked(String packageName, int appId, @CanBeALL @UserIdInt int userId,
+ boolean force) {
// See if there are any app zygotes running for this packageName / UID combination,
// and kill it if so.
final ArrayList<AppZygote> zygotesToKill = new ArrayList<>();
@@ -3050,9 +3053,9 @@
@GuardedBy({"mService", "mProcLock"})
boolean killPackageProcessesLSP(String packageName, int appId,
- int userId, int minOomAdj, boolean callerWillRestart, boolean allowRestart,
- boolean doit, boolean evenPersistent, boolean setRemoved, boolean uninstalling,
- int reasonCode, int subReason, String reason) {
+ @CanBeALL @UserIdInt int userId, int minOomAdj, boolean callerWillRestart,
+ boolean allowRestart, boolean doit, boolean evenPersistent, boolean setRemoved,
+ boolean uninstalling, int reasonCode, int subReason, String reason) {
final PackageManagerInternal pm = mService.getPackageManagerInternal();
final ArrayList<Pair<ProcessRecord, Boolean>> procs = new ArrayList<>();
@@ -5220,7 +5223,7 @@
}
@GuardedBy("mService")
- void sendPackageBroadcastLocked(int cmd, String[] packages, int userId) {
+ void sendPackageBroadcastLocked(int cmd, String[] packages, @CanBeALL @UserIdInt int userId) {
boolean foundProcess = false;
for (int i = mLruProcesses.size() - 1; i >= 0; i--) {
ProcessRecord r = mLruProcesses.get(i);
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index 2a9762c..c8b8909 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -66,7 +66,6 @@
import static android.app.AppOpsManager.opToName;
import static android.app.AppOpsManager.opToPublicName;
import static android.companion.virtual.VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT;
-import static android.content.Intent.ACTION_PACKAGE_ADDED;
import static android.content.Intent.ACTION_PACKAGE_REMOVED;
import static android.content.Intent.EXTRA_REPLACING;
import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS;
@@ -363,8 +362,6 @@
@GuardedBy("this")
@VisibleForTesting
final SparseArray<UidState> mUidStates = new SparseArray<>();
- @GuardedBy("this")
- private boolean mUidStatesInitialized;
// A rate limiter to prevent excessive Atom pushing. Used by noteOperation.
private static final Duration RATE_LIMITER_WINDOW = Duration.ofMillis(10);
@@ -415,6 +412,9 @@
@GuardedBy("this")
private ArraySet<String> mRarelyUsedPackages = new ArraySet<>();
+ @GuardedBy("this")
+ private boolean mRarelyUsedPackagesInitialized;
+
/** Sampling strategy used for current session */
@GuardedBy("this")
@AppOpsManager.SamplingStrategy
@@ -1076,41 +1076,53 @@
String pkgName = intent.getData().getEncodedSchemeSpecificPart().intern();
int uid = intent.getIntExtra(Intent.EXTRA_UID, Process.INVALID_UID);
- if (action.equals(ACTION_PACKAGE_ADDED)
- && !intent.getBooleanExtra(EXTRA_REPLACING, false)) {
- PackageInfo pi = getPackageManagerInternal().getPackageInfo(pkgName,
- PackageManager.GET_PERMISSIONS, Process.myUid(),
- UserHandle.getUserId(uid));
- boolean isSamplingTarget = isSamplingTarget(pi);
- synchronized (AppOpsService.this) {
- if (isSamplingTarget) {
- mRarelyUsedPackages.add(pkgName);
- }
- UidState uidState = getUidStateLocked(uid, true);
- if (!uidState.pkgOps.containsKey(pkgName)) {
- uidState.pkgOps.put(pkgName,
- new Ops(pkgName, uidState));
- }
-
- createSandboxUidStateIfNotExistsForAppLocked(uid, null);
- }
- } else if (action.equals(ACTION_PACKAGE_REMOVED) && !intent.hasExtra(EXTRA_REPLACING)) {
- synchronized (AppOpsService.this) {
- packageRemovedLocked(uid, pkgName);
- }
+ if (action.equals(ACTION_PACKAGE_REMOVED) && !intent.hasExtra(EXTRA_REPLACING)) {
+ onPackageRemoved(pkgName, uid);
} else if (action.equals(Intent.ACTION_PACKAGE_REPLACED)) {
- AndroidPackage pkg = getPackageManagerInternal().getPackage(pkgName);
- if (pkg == null) {
- return;
- }
-
- synchronized (AppOpsService.this) {
- refreshAttributionsLocked(pkg, uid);
- }
+ onPackageReplaced(pkgName, uid);
}
}
};
+ private void onPackageAdded(String pkgName, int uid) {
+ PackageInfo pi = getPackageManagerInternal().getPackageInfo(pkgName,
+ PackageManager.GET_PERMISSIONS, Process.myUid(),
+ UserHandle.getUserId(uid));
+ synchronized (AppOpsService.this) {
+ boolean isSamplingTarget = false;
+ if (mRarelyUsedPackagesInitialized) {
+ isSamplingTarget = isSamplingTarget(pi);
+ }
+ if (isSamplingTarget) {
+ mRarelyUsedPackages.add(pkgName);
+ }
+ UidState uidState = getUidStateLocked(uid, true);
+ if (!uidState.pkgOps.containsKey(pkgName)) {
+ uidState.pkgOps.put(pkgName,
+ new Ops(pkgName, uidState));
+ }
+
+ createSandboxUidStateIfNotExistsForAppLocked(uid, null);
+ }
+ }
+
+ private void onPackageRemoved(String pkgName, int uid) {
+ synchronized (AppOpsService.this) {
+ packageRemovedLocked(uid, pkgName);
+ }
+ }
+
+ private void onPackageReplaced(String pkgName, int uid) {
+ AndroidPackage pkg = getPackageManagerInternal().getPackage(pkgName);
+ if (pkg == null) {
+ return;
+ }
+
+ synchronized (AppOpsService.this) {
+ refreshAttributionsLocked(pkg, uid);
+ }
+ }
+
public void systemReady() {
mVirtualDeviceManagerInternal = LocalServices.getService(
VirtualDeviceManagerInternal.class);
@@ -1121,7 +1133,6 @@
mHistoricalRegistry.systemReady(mContext.getContentResolver());
IntentFilter packageUpdateFilter = new IntentFilter();
- packageUpdateFilter.addAction(ACTION_PACKAGE_ADDED);
packageUpdateFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
packageUpdateFilter.addAction(ACTION_PACKAGE_REMOVED);
packageUpdateFilter.addDataScheme("package");
@@ -1236,7 +1247,6 @@
}
trimUidStatesLocked(knownUids, packageStates);
- mUidStatesInitialized = true;
}
}
}
@@ -7182,12 +7192,13 @@
}
}
}
- synchronized (this) {
+ synchronized (AppOpsService.this) {
int numPkgs = mRarelyUsedPackages.size();
for (int i = 0; i < numPkgs; i++) {
candidates.add(mRarelyUsedPackages.valueAt(i));
}
mRarelyUsedPackages = candidates;
+ mRarelyUsedPackagesInitialized = true;
}
}
});
@@ -7495,6 +7506,15 @@
return number;
}
+
+ @Override
+ public void onPackageAdded(String pkgName, int appId) {
+ int[] userIds = AppOpsService.this.getUserManagerInternal().getUserIds();
+ for (int i = 0; i < userIds.length; i++) {
+ int userId = userIds[i];
+ AppOpsService.this.onPackageAdded(pkgName, UserHandle.getUid(userId, appId));
+ }
+ }
}
/**
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index d800503..4e84733 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -848,23 +848,6 @@
"media_audio.value_audio_playback_hardening_partial_restriction";
static final String METRIC_COUNTERS_PLAYBACK_STRICT =
"media_audio.value_audio_playback_hardening_strict_would_restrict";
-
- String getPackNameForUid(int uid) {
- final long token = Binder.clearCallingIdentity();
- try {
- final String[] names = AudioService.this.mContext.
- getPackageManager().getPackagesForUid(uid);
- if (names == null
- || names.length == 0
- || TextUtils.isEmpty(names[0])) {
- return "[" + uid + "]";
- }
- return names[0];
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
// oneway
@Override
public void playbackHardeningEvent(int uid, byte type, boolean bypassed) {
@@ -882,7 +865,7 @@
String msg = "AudioHardening background playback "
+ (bypassed ? "would be " : "")
+ "muted for "
- + getPackNameForUid(uid) + " (" + uid + "), "
+ + getPackageNameForUid(uid) + " (" + uid + "), "
+ "level: " + (type == HardeningType.PARTIAL ? "partial" : "full");
AudioService.this.mHardeningLogger.enqueueAndSlog(msg,
@@ -954,7 +937,8 @@
/**
* Stores information about a device using absolute volume behavior.
*/
- private static final class AbsoluteVolumeDeviceInfo {
+ private static final class AbsoluteVolumeDeviceInfo implements IBinder.DeathRecipient {
+ private final AudioService mParent;
private final AudioDeviceAttributes mDevice;
private final List<VolumeInfo> mVolumeInfos;
private final IAudioDeviceVolumeDispatcher mCallback;
@@ -962,16 +946,26 @@
private @AudioManager.AbsoluteDeviceVolumeBehavior int mDeviceVolumeBehavior;
private AbsoluteVolumeDeviceInfo(
+ AudioService parent,
AudioDeviceAttributes device,
List<VolumeInfo> volumeInfos,
IAudioDeviceVolumeDispatcher callback,
boolean handlesVolumeAdjustment,
@AudioManager.AbsoluteDeviceVolumeBehavior int behavior) {
+ this.mParent = parent;
this.mDevice = device;
this.mVolumeInfos = volumeInfos;
this.mCallback = callback;
this.mHandlesVolumeAdjustment = handlesVolumeAdjustment;
this.mDeviceVolumeBehavior = behavior;
+
+ try {
+ this.mCallback.asBinder().linkToDeath(this, 0);
+ } catch (RemoteException | NullPointerException e) {
+ // NPE can be raised when mocking the callback object
+ Slog.w(TAG, "Exception: " + e
+ + "\nCannot listen to callback binder death for device " + mDevice);
+ }
}
/**
@@ -991,6 +985,25 @@
}
return null;
}
+
+ @Override
+ public void binderDied() {
+ if (mParent.removeAudioSystemDeviceOutFromAbsVolumeDevices(mDevice.getInternalType())
+ != null) {
+ mParent.dispatchDeviceVolumeBehavior(mDevice,
+ AudioManager.DEVICE_VOLUME_BEHAVIOR_VARIABLE);
+ }
+ }
+
+ public void unlinkToDeath() {
+ try {
+ mCallback.asBinder().unlinkToDeath(this, 0);
+ } catch (NullPointerException e) {
+ // NPE can be raised when mocking the callback object
+ Slog.w(TAG, "Exception: " + e
+ + "\nCannot unlink to death, null binder object for device " + mDevice);
+ }
+ }
}
// Devices for the which use the "absolute volume" concept (framework sends audio signal
@@ -1256,8 +1269,7 @@
}
};
- @GuardedBy("mSettingsLock")
- private boolean mRttEnabled = false;
+ private AtomicBoolean mRttEnabled = new AtomicBoolean(false);
private AtomicBoolean mMasterMute = new AtomicBoolean(false);
@@ -1608,7 +1620,9 @@
mMusicFxHelper = new MusicFxHelper(mContext, mAudioHandler);
- mHardeningEnforcer = new HardeningEnforcer(mContext, isPlatformAutomotive(), mAppOps,
+ mHardeningEnforcer = new HardeningEnforcer(mContext, isPlatformAutomotive(),
+ mShouldEnableAllHardening,
+ mAppOps,
context.getPackageManager(),
mHardeningLogger);
}
@@ -1634,13 +1648,13 @@
* Called by handling of MSG_INIT_STREAMS_VOLUMES
*/
private void onInitStreamsAndVolumes() {
- synchronized (mSettingsLock) {
- mCameraSoundForced = readCameraSoundForced();
+ synchronized (this) {
+ mCameraSoundForced.set(readCameraSoundForced());
sendMsg(mAudioHandler,
MSG_SET_FORCE_USE,
SENDMSG_QUEUE,
AudioSystem.FOR_SYSTEM,
- mCameraSoundForced
+ mCameraSoundForced.get()
? AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE,
new String("AudioService ctor"),
0);
@@ -2047,11 +2061,9 @@
onUpdateAudioMode(AudioSystem.MODE_CURRENT, android.os.Process.myPid(),
mContext.getPackageName(), true /*force*/, false /*signal*/);
}
- final int forSys;
- synchronized (mSettingsLock) {
- forSys = mCameraSoundForced ?
- AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE;
- }
+
+ final int forSys = mCameraSoundForced.get()
+ ? AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE;
mDeviceBroker.setForceUse_Async(AudioSystem.FOR_SYSTEM, forSys, "onAudioServerDied");
@@ -2078,13 +2090,13 @@
// Restore setParameters and other queued setters.
mRestorableParameters.restoreAll();
+ final int forDock = mDockAudioMediaEnabled ?
+ AudioSystem.FORCE_DIGITAL_DOCK : AudioSystem.FORCE_NONE;
+ mDeviceBroker.setForceUse_Async(AudioSystem.FOR_DOCK, forDock, "onAudioServerDied");
+ sendEncodedSurroundMode(mContentResolver, "onAudioServerDied");
+ sendEnabledSurroundFormats(mContentResolver, true);
+ AudioSystem.setRttEnabled(mRttEnabled.get());
synchronized (mSettingsLock) {
- final int forDock = mDockAudioMediaEnabled ?
- AudioSystem.FORCE_DIGITAL_DOCK : AudioSystem.FORCE_NONE;
- mDeviceBroker.setForceUse_Async(AudioSystem.FOR_DOCK, forDock, "onAudioServerDied");
- sendEncodedSurroundMode(mContentResolver, "onAudioServerDied");
- sendEnabledSurroundFormats(mContentResolver, true);
- AudioSystem.setRttEnabled(mRttEnabled);
resetAssistantServicesUidsLocked();
}
@@ -3221,9 +3233,10 @@
sendEnabledSurroundFormats(cr, true);
updateAssistantUIdLocked(/* forceUpdate= */ true);
resetActiveAssistantUidsLocked();
- AudioSystem.setRttEnabled(mRttEnabled);
}
+ AudioSystem.setRttEnabled(mRttEnabled.get());
+
mMuteAffectedStreams = mSettings.getSystemIntForUser(cr,
System.MUTE_STREAMS_AFFECTED, AudioSystem.DEFAULT_MUTE_STREAMS_AFFECTED,
UserHandle.USER_CURRENT);
@@ -3904,7 +3917,9 @@
public void adjustStreamVolumeWithAttribution(int streamType, int direction, int flags,
String callingPackage, String attributionTag) {
if (mHardeningEnforcer.blockVolumeMethod(
- HardeningEnforcer.METHOD_AUDIO_MANAGER_ADJUST_STREAM_VOLUME)) {
+ HardeningEnforcer.METHOD_AUDIO_MANAGER_ADJUST_STREAM_VOLUME,
+ callingPackage,
+ Binder.getCallingUid())) {
return;
}
if ((streamType == AudioManager.STREAM_ACCESSIBILITY) && !canChangeAccessibilityVolume()) {
@@ -4247,7 +4262,7 @@
final VolumeStreamState vss = mStreamStates.valueAt(streamIdx);
if (vss != null && streamAlias == sStreamVolumeAlias.get(vss.getStreamType())
&& vss.isMutable()) {
- if (!(mCameraSoundForced && (vss.getStreamType()
+ if (!(mCameraSoundForced.get() && (vss.getStreamType()
== AudioSystem.STREAM_SYSTEM_ENFORCED))) {
boolean changed = vss.mute(state, /* apply= */ false,
"muteAliasStreams");
@@ -4665,7 +4680,9 @@
public void setStreamVolumeWithAttribution(int streamType, int index, int flags,
String callingPackage, String attributionTag) {
if (mHardeningEnforcer.blockVolumeMethod(
- HardeningEnforcer.METHOD_AUDIO_MANAGER_SET_STREAM_VOLUME)) {
+ HardeningEnforcer.METHOD_AUDIO_MANAGER_SET_STREAM_VOLUME,
+ callingPackage,
+ Binder.getCallingUid())) {
return;
}
setStreamVolumeWithAttributionInt(streamType, index, flags, /*device*/ null,
@@ -6114,7 +6131,9 @@
public void setRingerModeExternal(int ringerMode, String caller) {
if (mHardeningEnforcer.blockVolumeMethod(
- HardeningEnforcer.METHOD_AUDIO_MANAGER_SET_RINGER_MODE)) {
+ HardeningEnforcer.METHOD_AUDIO_MANAGER_SET_RINGER_MODE,
+ getPackageNameForUid(Binder.getCallingUid()),
+ Binder.getCallingUid())) {
return;
}
if (isAndroidNPlus(caller) && wouldToggleZenMode(ringerMode)
@@ -6817,7 +6836,7 @@
return false;
}
- /** @see AudioManager#setRttEnabled() */
+ /** @see AudioManager#setRttEnabled(boolean) */
@Override
public void setRttEnabled(boolean rttEnabled) {
if (mContext.checkCallingOrSelfPermission(
@@ -6827,8 +6846,8 @@
+ Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
return;
}
- synchronized (mSettingsLock) {
- mRttEnabled = rttEnabled;
+ synchronized (this) {
+ mRttEnabled.set(rttEnabled);
final long identity = Binder.clearCallingIdentity();
try {
AudioSystem.setRttEnabled(rttEnabled);
@@ -6838,6 +6857,11 @@
}
}
+ @VisibleForTesting(visibility = PACKAGE)
+ protected boolean isRttEnabled() {
+ return mRttEnabled.get();
+ }
+
/** @see AudioManager#adjustSuggestedStreamVolumeForUid(int, int, int, String, int, int, int) */
@Override
public void adjustSuggestedStreamVolumeForUid(int streamType, int direction, int flags,
@@ -6883,7 +6907,9 @@
@Override
public void adjustVolume(int direction, int flags) {
if (mHardeningEnforcer.blockVolumeMethod(
- HardeningEnforcer.METHOD_AUDIO_MANAGER_ADJUST_VOLUME)) {
+ HardeningEnforcer.METHOD_AUDIO_MANAGER_ADJUST_VOLUME,
+ getPackageNameForUid(Binder.getCallingUid()),
+ Binder.getCallingUid())) {
return;
}
getMediaSessionManager().dispatchAdjustVolume(AudioManager.USE_DEFAULT_STREAM_TYPE,
@@ -6898,7 +6924,9 @@
@Override
public void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags) {
if (mHardeningEnforcer.blockVolumeMethod(
- HardeningEnforcer.METHOD_AUDIO_MANAGER_ADJUST_SUGGESTED_STREAM_VOLUME)) {
+ HardeningEnforcer.METHOD_AUDIO_MANAGER_ADJUST_SUGGESTED_STREAM_VOLUME,
+ getPackageNameForUid(Binder.getCallingUid()),
+ Binder.getCallingUid())) {
return;
}
getMediaSessionManager().dispatchAdjustVolume(suggestedStreamType, direction, flags);
@@ -7619,7 +7647,7 @@
ringerModeAffectedStreams = mRingerModeDelegate
.getRingerModeAffectedStreams(ringerModeAffectedStreams);
}
- if (mCameraSoundForced) {
+ if (mCameraSoundForced.get()) {
ringerModeAffectedStreams &= ~(1 << AudioSystem.STREAM_SYSTEM_ENFORCED);
} else {
ringerModeAffectedStreams |= (1 << AudioSystem.STREAM_SYSTEM_ENFORCED);
@@ -8142,16 +8170,16 @@
int deviceOut = device.getInternalType();
if (register) {
- AbsoluteVolumeDeviceInfo info = new AbsoluteVolumeDeviceInfo(
+ AbsoluteVolumeDeviceInfo info = new AbsoluteVolumeDeviceInfo(this,
device, volumes, cb, handlesVolumeAdjustment, deviceVolumeBehavior);
final AbsoluteVolumeDeviceInfo oldInfo = getAbsoluteVolumeDeviceInfo(deviceOut);
+ addAudioSystemDeviceOutToAbsVolumeDevices(deviceOut, info);
boolean volumeBehaviorChanged = (oldInfo == null)
|| (oldInfo.mDeviceVolumeBehavior != deviceVolumeBehavior);
if (volumeBehaviorChanged) {
removeAudioSystemDeviceOutFromFullVolumeDevices(deviceOut);
removeAudioSystemDeviceOutFromFixedVolumeDevices(deviceOut);
- addAudioSystemDeviceOutToAbsVolumeDevices(deviceOut, info);
dispatchDeviceVolumeBehavior(device, deviceVolumeBehavior);
}
@@ -8177,8 +8205,10 @@
}
}
} else {
- boolean wasAbsVol = removeAudioSystemDeviceOutFromAbsVolumeDevices(deviceOut) != null;
- if (wasAbsVol) {
+ AbsoluteVolumeDeviceInfo deviceInfo = removeAudioSystemDeviceOutFromAbsVolumeDevices(
+ deviceOut);
+ if (deviceInfo != null) {
+ deviceInfo.unlinkToDeath();
dispatchDeviceVolumeBehavior(device, AudioManager.DEVICE_VOLUME_BEHAVIOR_VARIABLE);
}
}
@@ -9141,7 +9171,7 @@
continue;
}
if (mPublicStreamType == AudioSystem.STREAM_SYSTEM_ENFORCED
- && mCameraSoundForced) {
+ && mCameraSoundForced.get()) {
index = mIndexMax;
}
if (DEBUG_VOL) {
@@ -9504,28 +9534,25 @@
}
public void readSettings() {
- synchronized (mSettingsLock) {
- synchronized (mVolumeStateLock) {
- // force maximum volume on all streams if fixed volume property is set
- if (mUseFixedVolume) {
- mIndexMap.put(AudioSystem.DEVICE_OUT_DEFAULT, mIndexMax);
- return;
- }
- // do not read system stream volume from settings: this stream is always aliased
- // to another stream type and its volume is never persisted. Values in settings can
- // only be stale values
- if ((mStreamType == AudioSystem.STREAM_SYSTEM) ||
- (mStreamType == AudioSystem.STREAM_SYSTEM_ENFORCED)) {
- int index = 10 * AudioSystem.DEFAULT_STREAM_VOLUME[mStreamType];
- if (mCameraSoundForced) {
- index = mIndexMax;
- }
- mIndexMap.put(AudioSystem.DEVICE_OUT_DEFAULT, index);
- return;
- }
- }
- }
synchronized (mVolumeStateLock) {
+ // force maximum volume on all streams if fixed volume property is set
+ if (mUseFixedVolume) {
+ mIndexMap.put(AudioSystem.DEVICE_OUT_DEFAULT, mIndexMax);
+ return;
+ }
+ // do not read system stream volume from settings: this stream is always aliased
+ // to another stream type and its volume is never persisted. Values in settings can
+ // only be stale values
+ if ((mStreamType == AudioSystem.STREAM_SYSTEM)
+ || (mStreamType == AudioSystem.STREAM_SYSTEM_ENFORCED)) {
+ int index = 10 * AudioSystem.DEFAULT_STREAM_VOLUME[mStreamType];
+ if (mCameraSoundForced.get()) {
+ index = mIndexMax;
+ }
+ mIndexMap.put(AudioSystem.DEVICE_OUT_DEFAULT, index);
+ return;
+ }
+
for (int device : AudioSystem.DEVICE_OUT_ALL_SET) {
// retrieve current volume for device
@@ -9674,7 +9701,8 @@
index = getValidIndex(index, hasModifyAudioSettings);
// for STREAM_SYSTEM_ENFORCED, do not sync aliased streams on the enforced index
int aliasIndex = index;
- if ((mStreamType == AudioSystem.STREAM_SYSTEM_ENFORCED) && mCameraSoundForced) {
+ if ((mStreamType == AudioSystem.STREAM_SYSTEM_ENFORCED)
+ && mCameraSoundForced.get()) {
index = mIndexMax;
}
mIndexMap.put(device, index);
@@ -12200,10 +12228,10 @@
Configuration config = mContext.getResources().getConfiguration();
mSoundDoseHelper.configureSafeMedia(/*forced*/false, TAG);
- boolean cameraSoundForced = readCameraSoundForced();
+ final boolean cameraSoundForced = readCameraSoundForced();
+ final boolean cameraSoundForcedChanged =
+ (mCameraSoundForced.getAndSet(cameraSoundForced) != cameraSoundForced);
synchronized (mSettingsLock) {
- final boolean cameraSoundForcedChanged = (cameraSoundForced != mCameraSoundForced);
- mCameraSoundForced = cameraSoundForced;
if (cameraSoundForcedChanged) {
if (!mIsSingleVolume) {
synchronized (mVolumeStateLock) {
@@ -12233,7 +12261,6 @@
0,
0,
getVssForStreamOrDefault(AudioSystem.STREAM_SYSTEM_ENFORCED), 0);
-
}
}
mVolumeController.setLayoutDirection(config.getLayoutDirection());
@@ -12598,14 +12625,11 @@
//==========================================================================================
// cached value of com.android.internal.R.bool.config_camera_sound_forced
- @GuardedBy("mSettingsLock")
- private boolean mCameraSoundForced;
+ private AtomicBoolean mCameraSoundForced = new AtomicBoolean(false);
// called by android.hardware.Camera to populate CameraInfo.canDisableShutterSound
public boolean isCameraSoundForced() {
- synchronized (mSettingsLock) {
- return mCameraSoundForced;
- }
+ return mCameraSoundForced.get();
}
//==========================================================================================
@@ -15457,4 +15481,22 @@
}
return true;
}
+
+ private String getPackageNameForUid(int uid) {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ final String[] names = AudioService.this.mContext.
+ getPackageManager().getPackagesForUid(uid);
+ if (names == null
+ || names.length == 0
+ || TextUtils.isEmpty(names[0])) {
+ return "[" + uid + "]";
+ }
+ return names[0];
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+
}
diff --git a/services/core/java/com/android/server/audio/HardeningEnforcer.java b/services/core/java/com/android/server/audio/HardeningEnforcer.java
index f69a810..9bb5160 100644
--- a/services/core/java/com/android/server/audio/HardeningEnforcer.java
+++ b/services/core/java/com/android/server/audio/HardeningEnforcer.java
@@ -37,6 +37,7 @@
import com.android.server.utils.EventLogger;
import java.io.PrintWriter;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* Class to encapsulate all audio API hardening operations
@@ -49,6 +50,7 @@
final Context mContext;
final AppOpsManager mAppOps;
+ final AtomicBoolean mShouldEnableAllHardening;
final boolean mIsAutomotive;
final ActivityManager mActivityManager;
@@ -106,10 +108,16 @@
*/
public static final int METHOD_AUDIO_MANAGER_REQUEST_AUDIO_FOCUS = 300;
- public HardeningEnforcer(Context ctxt, boolean isAutomotive, AppOpsManager appOps,
- PackageManager pm, EventLogger logger) {
+ private static final int ALLOWED = 0;
+ private static final int DENIED_IF_PARTIAL = 1;
+ private static final int DENIED_IF_FULL = 2;
+
+ public HardeningEnforcer(Context ctxt, boolean isAutomotive,
+ AtomicBoolean shouldEnableHardening, AppOpsManager appOps, PackageManager pm,
+ EventLogger logger) {
mContext = ctxt;
mIsAutomotive = isAutomotive;
+ mShouldEnableAllHardening = shouldEnableHardening;
mAppOps = appOps;
mActivityManager = ctxt.getSystemService(ActivityManager.class);
mPackageManager = pm;
@@ -121,29 +129,59 @@
* @param volumeMethod name of the method to check, for logging purposes
* @return false if the method call is allowed, true if it should be a no-op
*/
- protected boolean blockVolumeMethod(int volumeMethod) {
+ protected boolean blockVolumeMethod(int volumeMethod, String packageName, int uid) {
+ // Regardless of flag state, always permit callers with MODIFY_AUDIO_SETTINGS_PRIVILEGED
+ // Prevent them from showing up in metrics as well
+ if (mContext.checkCallingOrSelfPermission(
+ Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
+ == PackageManager.PERMISSION_GRANTED) {
+ return false;
+ }
// for Auto, volume methods require MODIFY_AUDIO_SETTINGS_PRIVILEGED
if (mIsAutomotive) {
if (!autoPublicVolumeApiHardening()) {
// automotive hardening flag disabled, no blocking on auto
return false;
}
- if (mContext.checkCallingOrSelfPermission(
- Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
- == PackageManager.PERMISSION_GRANTED) {
- return false;
- }
- if (Binder.getCallingUid() < UserHandle.AID_APP_START) {
+ if (uid < UserHandle.AID_APP_START) {
return false;
}
// TODO metrics?
// TODO log for audio dumpsys?
Slog.e(TAG, "Preventing volume method " + volumeMethod + " for "
- + getPackNameForUid(Binder.getCallingUid()));
+ + packageName);
return true;
+ } else {
+ int allowed;
+ // No flags controlling restriction yet
+ boolean enforced = mShouldEnableAllHardening.get();
+ if (!noteOp(AppOpsManager.OP_CONTROL_AUDIO_PARTIAL, uid, packageName, null)) {
+ // blocked by partial
+ Counter.logIncrementWithUid(
+ "media_audio.value_audio_volume_hardening_partial_restriction", uid);
+ allowed = DENIED_IF_PARTIAL;
+ } else if (!noteOp(AppOpsManager.OP_CONTROL_AUDIO, uid, packageName, null)) {
+ // blocked by full, permitted by partial
+ Counter.logIncrementWithUid(
+ "media_audio.value_audio_volume_hardening_strict_restriction", uid);
+ allowed = DENIED_IF_FULL;
+ } else {
+ // permitted with strict hardening, log anyway for API metrics
+ Counter.logIncrementWithUid(
+ "media_audio.value_audio_volume_hardening_allowed", uid);
+ allowed = ALLOWED;
+ }
+ if (allowed != ALLOWED) {
+ String msg = "AudioHardening volume control for api "
+ + volumeMethod
+ + (!enforced ? " would be " : " ")
+ + "ignored for "
+ + getPackNameForUid(uid) + " (" + uid + "), "
+ + "level: " + (allowed == DENIED_IF_PARTIAL ? "partial" : "full");
+ mEventLogger.enqueueAndSlog(msg, EventLogger.Event.ALOGW, TAG);
+ }
+ return enforced && allowed != ALLOWED;
}
- // not blocking
- return false;
}
/**
diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java
index a5058dd..cf5fa96 100644
--- a/services/core/java/com/android/server/biometrics/BiometricService.java
+++ b/services/core/java/com/android/server/biometrics/BiometricService.java
@@ -540,9 +540,23 @@
DEFAULT_MANDATORY_BIOMETRICS_STATUS)
&& mMandatoryBiometricsRequirementsSatisfied.getOrDefault(userId,
DEFAULT_MANDATORY_BIOMETRICS_REQUIREMENTS_SATISFIED_STATUS)
- && getEnabledForApps(userId, TYPE_ANY_BIOMETRIC)
- && (mFingerprintEnrolledForUser.getOrDefault(userId, false /* default */)
- || mFaceEnrolledForUser.getOrDefault(userId, false /* default */));
+ && getBiometricStatusForIdentityCheck(userId);
+ }
+
+ private boolean getBiometricStatusForIdentityCheck(int userId) {
+ if (com.android.settings.flags.Flags.biometricsOnboardingEducation()) {
+ if (mFingerprintEnrolledForUser.getOrDefault(userId, false /* default */)
+ && getEnabledForApps(userId, TYPE_FINGERPRINT)) {
+ return true;
+ } else {
+ return mFaceEnrolledForUser.getOrDefault(userId, false /* default */)
+ && getEnabledForApps(userId, TYPE_FACE);
+ }
+ } else {
+ return (mFingerprintEnrolledForUser.getOrDefault(userId, false /* default */)
+ || mFaceEnrolledForUser.getOrDefault(userId, false /* default */))
+ && getEnabledForApps(userId, TYPE_ANY_BIOMETRIC);
+ }
}
void notifyEnabledOnKeyguardCallbacks(int userId, int modality) {
diff --git a/services/core/java/com/android/server/content/ContentService.java b/services/core/java/com/android/server/content/ContentService.java
index c393e92..79af6ed 100644
--- a/services/core/java/com/android/server/content/ContentService.java
+++ b/services/core/java/com/android/server/content/ContentService.java
@@ -24,6 +24,8 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.annotation.SpecialUsers.CanBeALL;
+import android.annotation.SpecialUsers.CanBeCURRENT;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.ActivityManager.RestrictionLevel;
@@ -361,7 +363,8 @@
*/
@Override
public void registerContentObserver(Uri uri, boolean notifyForDescendants,
- IContentObserver observer, int userHandle, int targetSdkVersion) {
+ IContentObserver observer, @CanBeALL @CanBeCURRENT @UserIdInt int userHandle,
+ int targetSdkVersion) {
if (observer == null || uri == null) {
throw new IllegalArgumentException("You must pass a valid uri and observer");
}
@@ -1398,8 +1401,8 @@
}
}
- private int handleIncomingUser(Uri uri, int pid, int uid, int modeFlags, boolean allowNonFull,
- int userId) {
+ private @CanBeALL @UserIdInt int handleIncomingUser(Uri uri, int pid, int uid, int modeFlags,
+ boolean allowNonFull, @CanBeALL @CanBeCURRENT @UserIdInt int userId) {
if (userId == UserHandle.USER_CURRENT) {
userId = ActivityManager.getCurrentUser();
}
diff --git a/services/core/java/com/android/server/inputmethod/ClientController.java b/services/core/java/com/android/server/inputmethod/ClientController.java
index 0381a31..d03c086 100644
--- a/services/core/java/com/android/server/inputmethod/ClientController.java
+++ b/services/core/java/com/android/server/inputmethod/ClientController.java
@@ -43,21 +43,23 @@
@GuardedBy("ImfLock.class")
private final List<ClientControllerCallback> mCallbacks = new ArrayList<>();
+ @NonNull
private final PackageManagerInternal mPackageManagerInternal;
interface ClientControllerCallback {
- void onClientRemoved(ClientState client);
+ void onClientRemoved(@NonNull ClientState client);
}
- ClientController(PackageManagerInternal packageManagerInternal) {
+ ClientController(@NonNull PackageManagerInternal packageManagerInternal) {
mPackageManagerInternal = packageManagerInternal;
}
@GuardedBy("ImfLock.class")
- ClientState addClient(IInputMethodClientInvoker clientInvoker,
- IRemoteInputConnection inputConnection, int selfReportedDisplayId, int callerUid,
- int callerPid) {
+ @NonNull
+ ClientState addClient(@NonNull IInputMethodClientInvoker clientInvoker,
+ @NonNull IRemoteInputConnection fallbackInputConnection, int selfReportedDisplayId,
+ int callerUid, int callerPid) {
final IBinder.DeathRecipient deathRecipient = () -> {
// Exceptionally holding ImfLock here since this is a internal lambda expression.
synchronized (ImfLock.class) {
@@ -90,15 +92,15 @@
// have the client crash. Thus we do not verify the display ID at all here. Instead we
// later check the display ID every time the client needs to interact with the specified
// display.
- final ClientState cs = new ClientState(clientInvoker, inputConnection,
- callerUid, callerPid, selfReportedDisplayId, deathRecipient);
+ final var cs = new ClientState(clientInvoker, fallbackInputConnection, callerUid, callerPid,
+ selfReportedDisplayId, deathRecipient);
mClients.put(clientInvoker.asBinder(), cs);
return cs;
}
@VisibleForTesting
@GuardedBy("ImfLock.class")
- boolean removeClient(IInputMethodClient client) {
+ boolean removeClient(@NonNull IInputMethodClient client) {
return removeClientAsBinder(client.asBinder());
}
@@ -116,7 +118,7 @@
}
@GuardedBy("ImfLock.class")
- void addClientControllerCallback(ClientControllerCallback callback) {
+ void addClientControllerCallback(@NonNull ClientControllerCallback callback) {
mCallbacks.add(callback);
}
@@ -127,15 +129,15 @@
}
@GuardedBy("ImfLock.class")
- void forAllClients(Consumer<ClientState> consumer) {
+ void forAllClients(@NonNull Consumer<ClientState> consumer) {
for (int i = 0; i < mClients.size(); i++) {
consumer.accept(mClients.valueAt(i));
}
}
@GuardedBy("ImfLock.class")
- boolean verifyClientAndPackageMatch(
- @NonNull IInputMethodClient client, @NonNull String packageName) {
+ boolean verifyClientAndPackageMatch(@NonNull IInputMethodClient client,
+ @NonNull String packageName) {
final ClientState cs = mClients.get(client.asBinder());
if (cs == null) {
throw new IllegalArgumentException("unknown client " + client.asBinder());
diff --git a/services/core/java/com/android/server/inputmethod/ClientState.java b/services/core/java/com/android/server/inputmethod/ClientState.java
index e98a5a7..ea80995 100644
--- a/services/core/java/com/android/server/inputmethod/ClientState.java
+++ b/services/core/java/com/android/server/inputmethod/ClientState.java
@@ -16,6 +16,8 @@
package com.android.server.inputmethod;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.os.IBinder;
import android.util.SparseArray;
import android.view.inputmethod.InputBinding;
@@ -24,12 +26,17 @@
import com.android.internal.inputmethod.IRemoteInputConnection;
final class ClientState {
+
+ @NonNull
final IInputMethodClientInvoker mClient;
+ @NonNull
final IRemoteInputConnection mFallbackInputConnection;
final int mUid;
final int mPid;
final int mSelfReportedDisplayId;
+ @NonNull
final InputBinding mBinding;
+ @NonNull
final IBinder.DeathRecipient mClientDeathRecipient;
@GuardedBy("ImfLock.class")
@@ -39,30 +46,31 @@
boolean mSessionRequestedForAccessibility;
@GuardedBy("ImfLock.class")
+ @Nullable
InputMethodManagerService.SessionState mCurSession;
@GuardedBy("ImfLock.class")
- SparseArray<InputMethodManagerService.AccessibilitySessionState> mAccessibilitySessions =
+ @NonNull
+ final SparseArray<InputMethodManagerService.AccessibilitySessionState> mAccessibilitySessions =
new SparseArray<>();
- @Override
- public String toString() {
- return "ClientState{" + Integer.toHexString(
- System.identityHashCode(this)) + " mUid=" + mUid
- + " mPid=" + mPid + " mSelfReportedDisplayId=" + mSelfReportedDisplayId + "}";
- }
-
- ClientState(IInputMethodClientInvoker client,
- IRemoteInputConnection fallbackInputConnection,
- int uid, int pid, int selfReportedDisplayId,
- IBinder.DeathRecipient clientDeathRecipient) {
+ ClientState(@NonNull IInputMethodClientInvoker client,
+ @NonNull IRemoteInputConnection fallbackInputConnection, int uid, int pid,
+ int selfReportedDisplayId, @NonNull IBinder.DeathRecipient clientDeathRecipient) {
mClient = client;
mFallbackInputConnection = fallbackInputConnection;
mUid = uid;
mPid = pid;
mSelfReportedDisplayId = selfReportedDisplayId;
- mBinding = new InputBinding(null /*conn*/, mFallbackInputConnection.asBinder(), mUid,
+ mBinding = new InputBinding(null /* conn */, fallbackInputConnection.asBinder(), mUid,
mPid);
mClientDeathRecipient = clientDeathRecipient;
}
+
+ @Override
+ public String toString() {
+ return "ClientState{" + Integer.toHexString(System.identityHashCode(this))
+ + " mUid=" + mUid + " mPid=" + mPid
+ + " mSelfReportedDisplayId=" + mSelfReportedDisplayId + "}";
+ }
}
diff --git a/services/core/java/com/android/server/inputmethod/IInputMethodClientInvoker.java b/services/core/java/com/android/server/inputmethod/IInputMethodClientInvoker.java
index 650ea60..9d88983 100644
--- a/services/core/java/com/android/server/inputmethod/IInputMethodClientInvoker.java
+++ b/services/core/java/com/android/server/inputmethod/IInputMethodClientInvoker.java
@@ -58,23 +58,17 @@
private final Handler mHandler;
@AnyThread
- @Nullable
- static IInputMethodClientInvoker create(@Nullable IInputMethodClient inputMethodClient,
+ @NonNull
+ static IInputMethodClientInvoker create(@NonNull IInputMethodClient inputMethodClient,
@NonNull Handler handler) {
- if (inputMethodClient == null) {
- return null;
- }
final boolean isProxy = Binder.isProxy(inputMethodClient);
return new IInputMethodClientInvoker(inputMethodClient, isProxy, isProxy ? null : handler);
}
@AnyThread
- @Nullable
- static IInputMethodClientInvoker create$ravenwood(
- @Nullable IInputMethodClient inputMethodClient, @NonNull Handler handler) {
- if (inputMethodClient == null) {
- return null;
- }
+ @NonNull
+ static IInputMethodClientInvoker create$ravenwood(@NonNull IInputMethodClient inputMethodClient,
+ @NonNull Handler handler) {
return new IInputMethodClientInvoker(inputMethodClient, true, null);
}
diff --git a/services/core/java/com/android/server/inputmethod/IInputMethodManagerImpl.java b/services/core/java/com/android/server/inputmethod/IInputMethodManagerImpl.java
index a8b61af..02987a9 100644
--- a/services/core/java/com/android/server/inputmethod/IInputMethodManagerImpl.java
+++ b/services/core/java/com/android/server/inputmethod/IInputMethodManagerImpl.java
@@ -89,8 +89,8 @@
@BinderThread
interface Callback {
- void addClient(IInputMethodClient client, IRemoteInputConnection inputConnection,
- int selfReportedDisplayId);
+ void addClient(@NonNull IInputMethodClient client,
+ @NonNull IRemoteInputConnection inputConnection, int selfReportedDisplayId);
InputMethodInfo getCurrentInputMethodInfoAsUser(@UserIdInt int userId);
@@ -242,9 +242,9 @@
}
@Override
- public void addClient(IInputMethodClient client, IRemoteInputConnection inputmethod,
- int untrustedDisplayId) {
- mCallback.addClient(client, inputmethod, untrustedDisplayId);
+ public void addClient(@NonNull IInputMethodClient client,
+ @NonNull IRemoteInputConnection fallbackInputConnection, int untrustedDisplayId) {
+ mCallback.addClient(client, fallbackInputConnection, untrustedDisplayId);
}
@Override
@@ -414,7 +414,7 @@
}
@Override
- public void reportPerceptibleAsync(IBinder windowToken, boolean perceptible) {
+ public void reportPerceptibleAsync(@NonNull IBinder windowToken, boolean perceptible) {
mCallback.reportPerceptibleAsync(windowToken, perceptible);
}
diff --git a/services/core/java/com/android/server/inputmethod/ImeBindingState.java b/services/core/java/com/android/server/inputmethod/ImeBindingState.java
index 5deed39..adfd991 100644
--- a/services/core/java/com/android/server/inputmethod/ImeBindingState.java
+++ b/services/core/java/com/android/server/inputmethod/ImeBindingState.java
@@ -43,9 +43,9 @@
final int mUserId;
/**
- * The last window token that we confirmed to be focused. This is always updated upon
- * reports from the input method client. If the window state is already changed before the
- * report is handled, this field just keeps the last value.
+ * The last window token that we confirmed to be focused. This is always updated upon reports
+ * from the input method client. If the window state is already changed before the report is
+ * handled, this field just keeps the last value.
*/
@Nullable
final IBinder mFocusedWindow;
@@ -59,11 +59,9 @@
final int mFocusedWindowSoftInputMode;
/**
- * The client by which {@link #mFocusedWindow} was reported. This gets updated whenever
- * an
- * IME-focusable window gained focus (without necessarily starting an input connection),
- * while {@link InputMethodManagerService#mClient} only gets updated when we actually start an
- * input connection.
+ * The client by which {@link #mFocusedWindow} was reported. This gets updated whenever an
+ * IME-focusable window gained focus (without necessarily starting an input connection), while
+ * {@link UserData#mCurClient} only gets updated when we actually start an input connection.
*
* @see #mFocusedWindow
*/
@@ -72,15 +70,16 @@
/**
* The editor info by which {@link #mFocusedWindow} was reported. This differs from
- * {@link InputMethodManagerService#mCurEditorInfo} the same way {@link #mFocusedWindowClient}
- * differs from {@link InputMethodManagerService#mCurClient}.
+ * {@link UserData#mCurEditorInfo} the same way {@link #mFocusedWindowClient} differs from
+ * {@link UserData#mCurClient}.
*
* @see #mFocusedWindow
*/
@Nullable
final EditorInfo mFocusedWindowEditorInfo;
- void dumpDebug(ProtoOutputStream proto, WindowManagerInternal windowManagerInternal) {
+ void dumpDebug(@NonNull ProtoOutputStream proto,
+ @NonNull WindowManagerInternal windowManagerInternal) {
proto.write(CUR_FOCUSED_WINDOW_NAME,
windowManagerInternal.getWindowName(mFocusedWindow));
proto.write(CUR_FOCUSED_WINDOW_SOFT_INPUT_MODE,
@@ -94,18 +93,14 @@
p.println(prefix + "mFocusedWindowClient=" + mFocusedWindowClient);
}
+ @NonNull
static ImeBindingState newEmptyState() {
- return new ImeBindingState(
- /*userId=*/ UserHandle.USER_NULL,
- /*focusedWindow=*/ null,
- /*focusedWindowSoftInputMode=*/ SOFT_INPUT_STATE_UNSPECIFIED,
- /*focusedWindowClient=*/ null,
- /*focusedWindowEditorInfo=*/ null
- );
+ return new ImeBindingState(UserHandle.USER_NULL /* userId */, null /* focusedWindow */,
+ SOFT_INPUT_STATE_UNSPECIFIED /* focusedWindowSoftInputMode */,
+ null /* focusedWindowClient */, null /* focusedWindowEditorInfo */);
}
- ImeBindingState(@UserIdInt int userId,
- @Nullable IBinder focusedWindow,
+ ImeBindingState(@UserIdInt int userId, @Nullable IBinder focusedWindow,
@SoftInputModeFlags int focusedWindowSoftInputMode,
@Nullable ClientState focusedWindowClient,
@Nullable EditorInfo focusedWindowEditorInfo) {
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index dfdd9e5..af726bd 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -482,10 +482,15 @@
};
static class SessionState {
+
+ @NonNull
final ClientState mClient;
+ @NonNull
final IInputMethodInvoker mMethod;
+ @Nullable
IInputMethodSession mSession;
+ @Nullable
InputChannel mChannel;
@UserIdInt
@@ -496,14 +501,13 @@
return "SessionState{uid=" + mClient.mUid + " pid=" + mClient.mPid
+ " method=" + Integer.toHexString(
IInputMethodInvoker.getBinderIdentityHashCode(mMethod))
- + " session=" + Integer.toHexString(
- System.identityHashCode(mSession))
+ + " session=" + Integer.toHexString(System.identityHashCode(mSession))
+ " channel=" + mChannel
+ " userId=" + mUserId
+ "}";
}
- SessionState(ClientState client, IInputMethodInvoker method,
+ SessionState(@NonNull ClientState client, @NonNull IInputMethodInvoker method,
IInputMethodSession session, InputChannel channel, @UserIdInt int userId) {
mClient = client;
mMethod = method;
@@ -517,22 +521,24 @@
* Record session state for an accessibility service.
*/
static class AccessibilitySessionState {
+
+ @NonNull
final ClientState mClient;
// Id of the accessibility service.
final int mId;
- public IAccessibilityInputMethodSession mSession;
+ @Nullable
+ IAccessibilityInputMethodSession mSession;
@Override
public String toString() {
return "AccessibilitySessionState{uid=" + mClient.mUid + " pid=" + mClient.mPid
+ " id=" + Integer.toHexString(mId)
- + " session=" + Integer.toHexString(
- System.identityHashCode(mSession))
+ + " session=" + Integer.toHexString(System.identityHashCode(mSession))
+ "}";
}
- AccessibilitySessionState(ClientState client, int id,
+ AccessibilitySessionState(@NonNull ClientState client, int id,
IAccessibilityInputMethodSession session) {
mClient = client;
mId = id;
@@ -544,6 +550,7 @@
* Manages the IME clients.
*/
@SharedByAllUsersField
+ @NonNull
private final ClientController mClientController;
/**
@@ -1770,19 +1777,21 @@
* <p>As a general principle, IPCs from the application process that take
* {@link IInputMethodClient} will be rejected without this step.</p>
*
- * @param client {@link android.os.Binder} proxy that is associated with the
- * singleton instance of
- * {@link android.view.inputmethod.InputMethodManager} that runs
- * on the client process
- * @param inputConnection communication channel for the fallback {@link InputConnection}
- * @param selfReportedDisplayId self-reported display ID to which the client is associated.
- * Whether the client is still allowed to access to this display
- * or not needs to be evaluated every time the client interacts
- * with the display
+ * @param client {@link android.os.Binder} proxy that is associated with the
+ * singleton instance of
+ * {@link android.view.inputmethod.InputMethodManager} that runs
+ * on the client process
+ * @param fallbackInputConnection communication channel for the fallback {@link InputConnection}
+ * @param selfReportedDisplayId self-reported display ID to which the client is associated.
+ * Whether the client is still allowed to access to this display
+ * or not needs to be evaluated every time the client interacts
+ * with the display
*/
@Override
- public void addClient(IInputMethodClient client, IRemoteInputConnection inputConnection,
- int selfReportedDisplayId) {
+ public void addClient(@NonNull IInputMethodClient client,
+ @NonNull IRemoteInputConnection fallbackInputConnection, int selfReportedDisplayId) {
+ Objects.requireNonNull(client, "client must not be null");
+ Objects.requireNonNull(fallbackInputConnection, "fallbackInputConnection must not be null");
// Here there are two scenarios where this method is called:
// A. IMM is being instantiated in a different process and this is an IPC from that process
// B. IMM is being instantiated in the same process but Binder.clearCallingIdentity() is
@@ -1791,16 +1800,15 @@
// actually running.
final int callerUid = Binder.getCallingUid();
final int callerPid = Binder.getCallingPid();
- final IInputMethodClientInvoker clientInvoker =
- IInputMethodClientInvoker.create(client, mHandler);
+ final var clientInvoker = IInputMethodClientInvoker.create(client, mHandler);
synchronized (ImfLock.class) {
- mClientController.addClient(clientInvoker, inputConnection, selfReportedDisplayId,
- callerUid, callerPid);
+ mClientController.addClient(clientInvoker, fallbackInputConnection,
+ selfReportedDisplayId, callerUid, callerPid);
}
}
@GuardedBy("ImfLock.class")
- private void onClientRemoved(ClientState client) {
+ private void onClientRemoved(@NonNull ClientState client) {
clearClientSessionLocked(client);
clearClientSessionForAccessibilityLocked(client);
// TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed.
@@ -1814,7 +1822,8 @@
*/
// TODO(b/325515685): Move this method to InputMethodBindingController
@GuardedBy("ImfLock.class")
- private void onClientRemovedInternalLocked(ClientState client, @NonNull UserData userData) {
+ private void onClientRemovedInternalLocked(@NonNull ClientState client,
+ @NonNull UserData userData) {
final int userId = userData.mUserId;
if (userData.mCurClient == client) {
hideCurrentInputLocked(userData.mImeBindingState.mFocusedWindow, 0 /* flags */,
@@ -1962,7 +1971,7 @@
session.mMethod.startInput(startInputToken, userData.mCurInputConnection,
userData.mCurEditorInfo, restarting, navButtonFlags, userData.mCurImeDispatcher);
if (Flags.refactorInsetsController()) {
- if (isShowRequestedForCurrentWindow(userId) && userData.mImeBindingState != null
+ if (isShowRequestedForCurrentWindow(userId)
&& userData.mImeBindingState.mFocusedWindow != null) {
// Re-use current statsToken, if it exists.
final var statsToken = userData.mCurStatsToken != null ? userData.mCurStatsToken
@@ -2028,15 +2037,14 @@
}
}
+ @NonNull
private SparseArray<IAccessibilityInputMethodSession> createAccessibilityInputMethodSessions(
- SparseArray<AccessibilitySessionState> accessibilitySessions) {
- final SparseArray<IAccessibilityInputMethodSession> accessibilityInputMethodSessions =
- new SparseArray<>();
- if (accessibilitySessions != null) {
- for (int i = 0; i < accessibilitySessions.size(); i++) {
- accessibilityInputMethodSessions.append(accessibilitySessions.keyAt(i),
- accessibilitySessions.valueAt(i).mSession);
- }
+ @NonNull SparseArray<AccessibilitySessionState> accessibilitySessions) {
+ final var accessibilityInputMethodSessions =
+ new SparseArray<IAccessibilityInputMethodSession>();
+ for (int i = 0; i < accessibilitySessions.size(); i++) {
+ accessibilityInputMethodSessions.append(accessibilitySessions.keyAt(i),
+ accessibilitySessions.valueAt(i).mSession);
}
return accessibilityInputMethodSessions;
}
@@ -2547,14 +2555,14 @@
}
@GuardedBy("ImfLock.class")
- void clearClientSessionLocked(ClientState cs) {
+ void clearClientSessionLocked(@NonNull ClientState cs) {
finishSessionLocked(cs.mCurSession);
cs.mCurSession = null;
cs.mSessionRequested = false;
}
@GuardedBy("ImfLock.class")
- void clearClientSessionForAccessibilityLocked(ClientState cs) {
+ void clearClientSessionForAccessibilityLocked(@NonNull ClientState cs) {
for (int i = 0; i < cs.mAccessibilitySessions.size(); i++) {
finishSessionForAccessibilityLocked(cs.mAccessibilitySessions.valueAt(i));
}
@@ -2563,7 +2571,7 @@
}
@GuardedBy("ImfLock.class")
- void clearClientSessionForAccessibilityLocked(ClientState cs, int id) {
+ void clearClientSessionForAccessibilityLocked(@NonNull ClientState cs, int id) {
AccessibilitySessionState session = cs.mAccessibilitySessions.get(id);
if (session != null) {
finishSessionForAccessibilityLocked(session);
@@ -2572,7 +2580,7 @@
}
@GuardedBy("ImfLock.class")
- private void finishSessionLocked(SessionState sessionState) {
+ private void finishSessionLocked(@Nullable SessionState sessionState) {
if (sessionState != null) {
if (sessionState.mSession != null) {
try {
@@ -2885,8 +2893,7 @@
ProtoLog.v(IMMS_DEBUG, "IME window vis: %s active: %s visible: %s displayId: %s", vis,
(vis & InputMethodService.IME_ACTIVE), (vis & InputMethodService.IME_VISIBLE),
curTokenDisplayId);
- final IBinder focusedWindowToken = userData.mImeBindingState != null
- ? userData.mImeBindingState.mFocusedWindow : null;
+ final IBinder focusedWindowToken = userData.mImeBindingState.mFocusedWindow;
final Boolean windowPerceptible = focusedWindowToken != null
? mFocusedWindowPerceptible.get(focusedWindowToken) : null;
@@ -3474,7 +3481,7 @@
@BinderThread
@Override
- public void reportPerceptibleAsync(IBinder windowToken, boolean perceptible) {
+ public void reportPerceptibleAsync(@NonNull IBinder windowToken, boolean perceptible) {
Binder.withCleanCallingIdentity(() -> {
Objects.requireNonNull(windowToken, "windowToken must not be null");
synchronized (ImfLock.class) {
@@ -4868,7 +4875,7 @@
@GuardedBy("ImfLock.class")
void setEnabledSessionForAccessibilityLocked(
- SparseArray<AccessibilitySessionState> accessibilitySessions,
+ @NonNull SparseArray<AccessibilitySessionState> accessibilitySessions,
@NonNull UserData userData) {
// mEnabledAccessibilitySessions could the same object as accessibilitySessions.
SparseArray<IAccessibilityInputMethodSession> disabledSessions = new SparseArray<>();
@@ -4964,8 +4971,8 @@
}
}
- mMenuControllerNew.show(imList, lastInputMethodId, selectedSubtypeIndex, displayId,
- userId);
+ mMenuControllerNew.show(imList, lastInputMethodId, selectedSubtypeIndex, isScreenLocked,
+ displayId, userId);
} else {
mMenuController.showInputMethodMenuLocked(showAuxSubtypes, displayId,
lastInputMethodId, lastInputMethodSubtypeIndex, imList, userId);
@@ -5156,7 +5163,7 @@
interactive ? bindingController.getImeWindowVis() : 0,
bindingController.getBackDisposition(), userId);
// Inform the current client of the change in active status
- if (userData.mCurClient == null || userData.mCurClient.mClient == null) {
+ if (userData.mCurClient == null) {
return;
}
if (mImePlatformCompatUtils.shouldUseSetInteractiveProtocol(
@@ -5920,9 +5927,8 @@
// from all clients.
if (bindingController.getCurMethod() != null) {
// TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed.
- @SuppressWarnings("GuardedBy") Consumer<ClientState> clearClientSession =
- c -> clearClientSessionForAccessibilityLocked(c,
- accessibilityConnectionId);
+ @SuppressWarnings("GuardedBy") Consumer<ClientState> clearClientSession = c ->
+ clearClientSessionForAccessibilityLocked(c, accessibilityConnectionId);
mClientController.forAllClients(clearClientSession);
AccessibilitySessionState session = userData.mEnabledAccessibilitySessions.get(
@@ -5998,7 +6004,7 @@
@BinderThread
@GuardedBy("ImfLock.class")
private void reportFullscreenModeLocked(boolean fullscreen, @NonNull UserData userData) {
- if (userData.mCurClient != null && userData.mCurClient.mClient != null) {
+ if (userData.mCurClient != null) {
userData.mInFullscreenMode = fullscreen;
userData.mCurClient.mClient.reportFullscreenMode(fullscreen);
}
@@ -6732,9 +6738,7 @@
boolean setImeVisibilityOnFocusedWindowClient(boolean visible, UserData userData,
@NonNull ImeTracker.Token statsToken) {
if (Flags.refactorInsetsController()) {
- if (userData.mImeBindingState != null
- && userData.mImeBindingState.mFocusedWindowClient != null
- && userData.mImeBindingState.mFocusedWindowClient.mClient != null) {
+ if (userData.mImeBindingState.mFocusedWindowClient != null) {
userData.mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(visible,
statsToken);
return true;
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodMenuControllerNew.java b/services/core/java/com/android/server/inputmethod/InputMethodMenuControllerNew.java
index 9f94905..ea8aabc 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodMenuControllerNew.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodMenuControllerNew.java
@@ -87,12 +87,14 @@
* @param selectedSubtypeIndex the index of the selected subtype in the input method's array of
* subtypes, or {@link InputMethodUtils#NOT_A_SUBTYPE_INDEX} if no
* subtype is selected.
+ * @param isScreenLocked whether the screen is current locked.
* @param displayId the ID of the display where the menu was requested.
* @param userId the ID of the user that requested the menu.
*/
@RequiresPermission(allOf = {INTERACT_ACROSS_USERS, HIDE_OVERLAY_WINDOWS})
void show(@NonNull List<ImeSubtypeListItem> items, @Nullable String selectedImeId,
- int selectedSubtypeIndex, int displayId, @UserIdInt int userId) {
+ int selectedSubtypeIndex, boolean isScreenLocked, int displayId,
+ @UserIdInt int userId) {
// Hide the menu in case it was already showing.
hide(displayId, userId);
@@ -133,7 +135,7 @@
recyclerView.requestFocus();
final var selectedItem = selectedIndex > -1 ? menuItems.get(selectedIndex) : null;
- updateLanguageSettingsButton(selectedItem, contentView, displayId, userId);
+ updateLanguageSettingsButton(selectedItem, contentView, isScreenLocked, displayId, userId);
builder.setOnCancelListener(dialog -> hide(displayId, userId));
mMenuItems = menuItems;
@@ -280,23 +282,24 @@
/**
* Updates the visibility of the Language Settings button to visible if the currently selected
- * item specifies a (language) settings activity and the device is provisioned. Otherwise,
- * the button won't be shown.
+ * item specifies a (language) settings activity, the screen is not locked and the device is
+ * provisioned. Otherwise, the button won't be shown.
*
- * @param selectedItem the currently selected item, or {@code null} if no item is selected.
- * @param view the menu dialog view.
- * @param displayId the ID of the display where the menu was requested.
- * @param userId the ID of the user that requested the menu.
+ * @param selectedItem the currently selected item, or {@code null} if no item is selected.
+ * @param view the menu dialog view.
+ * @param isScreenLocked whether the screen is currently locked.
+ * @param displayId the ID of the display where the menu was requested.
+ * @param userId the ID of the user that requested the menu.
*/
@RequiresPermission(allOf = {INTERACT_ACROSS_USERS})
private void updateLanguageSettingsButton(@Nullable MenuItem selectedItem, @NonNull View view,
- int displayId, @UserIdInt int userId) {
+ boolean isScreenLocked, int displayId, @UserIdInt int userId) {
final var settingsIntent = (selectedItem instanceof SubtypeItem selectedSubtypeItem)
? selectedSubtypeItem.mImi.createImeLanguageSettingsActivityIntent() : null;
final boolean isDeviceProvisioned = Settings.Global.getInt(
view.getContext().getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
0) != 0;
- final boolean hasButton = settingsIntent != null && isDeviceProvisioned;
+ final boolean hasButton = settingsIntent != null && !isScreenLocked && isDeviceProvisioned;
final View buttonBar = view.requireViewById(com.android.internal.R.id.button_bar);
final Button button = view.requireViewById(com.android.internal.R.id.button1);
final RecyclerView recyclerView = view.requireViewById(com.android.internal.R.id.list);
diff --git a/services/core/java/com/android/server/inputmethod/UserData.java b/services/core/java/com/android/server/inputmethod/UserData.java
index 96da17e..7377908a 100644
--- a/services/core/java/com/android/server/inputmethod/UserData.java
+++ b/services/core/java/com/android/server/inputmethod/UserData.java
@@ -140,9 +140,9 @@
InputMethodManagerService.SessionState mEnabledSession;
@GuardedBy("ImfLock.class")
- @Nullable
- SparseArray<InputMethodManagerService.AccessibilitySessionState>
- mEnabledAccessibilitySessions = new SparseArray<>();
+ @NonNull
+ SparseArray<InputMethodManagerService.AccessibilitySessionState> mEnabledAccessibilitySessions =
+ new SparseArray<>();
/**
* A per-user cache of {@link InputMethodSettings#getEnabledInputMethodsStr()}.
diff --git a/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java b/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java
index b863c96..7252925 100644
--- a/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java
+++ b/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java
@@ -128,9 +128,9 @@
}
@Override
- public void addClient(IInputMethodClient client, IRemoteInputConnection inputConnection,
- int selfReportedDisplayId) {
- offload(() -> mInner.addClient(client, inputConnection, selfReportedDisplayId));
+ public void addClient(@NonNull IInputMethodClient client,
+ @NonNull IRemoteInputConnection fallbackInputConnection, int selfReportedDisplayId) {
+ offload(() -> mInner.addClient(client, fallbackInputConnection, selfReportedDisplayId));
}
@Override
@@ -331,7 +331,7 @@
}
@Override
- public void reportPerceptibleAsync(IBinder windowToken, boolean perceptible) {
+ public void reportPerceptibleAsync(@NonNull IBinder windowToken, boolean perceptible) {
// Already async TODO(b/293640003): ordering issues?
mInner.reportPerceptibleAsync(windowToken, perceptible);
}
@@ -468,7 +468,7 @@
IInputMethodClient client, InputBindResult res, int startInputSeq) {
synchronized (ImfLock.class) {
final ClientState cs = mInner.getClientStateLocked(client);
- if (cs != null && cs.mClient != null) {
+ if (cs != null) {
cs.mClient.onStartInputResult(res, startInputSeq);
} else {
// client is unbound.
diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java
index 1a29150..940bcb4 100644
--- a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java
+++ b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java
@@ -16,6 +16,7 @@
package com.android.server.location.contexthub;
+import android.annotation.NonNull;
import android.app.AppOpsManager;
import android.content.Context;
import android.hardware.contexthub.EndpointInfo;
@@ -64,7 +65,7 @@
* Internal interface used to invoke client callbacks.
*/
interface CallbackConsumer {
- void accept(IContextHubEndpointCallback callback) throws RemoteException;
+ void accept(@NonNull IContextHubEndpointCallback callback) throws RemoteException;
}
/** The context of the service. */
@@ -86,7 +87,7 @@
private final EndpointInfo mHalEndpointInfo;
/** The remote callback interface for this endpoint. */
- private final IContextHubEndpointCallback mContextHubEndpointCallback;
+ @NonNull private final IContextHubEndpointCallback mContextHubEndpointCallback;
/** True if this endpoint is registered with the service/HAL. */
@GuardedBy("mRegistrationLock")
@@ -158,7 +159,7 @@
IEndpointCommunication hubInterface,
ContextHubEndpointManager endpointManager,
EndpointInfo halEndpointInfo,
- IContextHubEndpointCallback callback,
+ @NonNull IContextHubEndpointCallback callback,
String packageName,
String attributionTag,
ContextHubTransactionManager transactionManager) {
@@ -419,9 +420,7 @@
}
/* package */ void attachDeathRecipient() throws RemoteException {
- if (mContextHubEndpointCallback != null) {
- mContextHubEndpointCallback.asBinder().linkToDeath(this, 0 /* flags */);
- }
+ mContextHubEndpointCallback.asBinder().linkToDeath(this, 0 /* flags */);
}
/* package */ void onEndpointSessionOpenRequest(
@@ -664,15 +663,13 @@
* @return false if the callback threw a RemoteException
*/
private boolean invokeCallback(CallbackConsumer consumer) {
- if (mContextHubEndpointCallback != null) {
- acquireWakeLock();
- try {
- consumer.accept(mContextHubEndpointCallback);
- } catch (RemoteException e) {
- Log.e(TAG, "RemoteException while calling endpoint callback", e);
- releaseWakeLock();
- return false;
- }
+ acquireWakeLock();
+ try {
+ consumer.accept(mContextHubEndpointCallback);
+ } catch (RemoteException e) {
+ Log.e(TAG, "RemoteException while calling endpoint callback", e);
+ releaseWakeLock();
+ return false;
}
return true;
}
diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java
index 30bb8f3..8ab581e 100644
--- a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java
+++ b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java
@@ -17,6 +17,7 @@
package com.android.server.location.contexthub;
import android.annotation.IntDef;
+import android.annotation.NonNull;
import android.content.Context;
import android.hardware.contexthub.ContextHubInfo;
import android.hardware.contexthub.EndpointInfo;
@@ -240,7 +241,7 @@
*/
/* package */ IContextHubEndpoint registerEndpoint(
HubEndpointInfo pendingEndpointInfo,
- IContextHubEndpointCallback callback,
+ @NonNull IContextHubEndpointCallback callback,
String packageName,
String attributionTag)
throws RemoteException {
diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubService.java b/services/core/java/com/android/server/location/contexthub/ContextHubService.java
index bf7351c..2c0c55b 100644
--- a/services/core/java/com/android/server/location/contexthub/ContextHubService.java
+++ b/services/core/java/com/android/server/location/contexthub/ContextHubService.java
@@ -792,6 +792,10 @@
Log.e(TAG, "Endpoint manager failed to initialize");
throw new UnsupportedOperationException("Endpoint registration is not supported");
}
+ if (callback == null) {
+ Log.e(TAG, "Endpoint callback is invalid");
+ throw new IllegalArgumentException("registerEndpoint must have a non-null callback");
+ }
return mEndpointManager.registerEndpoint(
pendingHubEndpointInfo, callback, packageName, attributionTag);
}
diff --git a/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java b/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
index 177eefb..3f75b11 100644
--- a/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
+++ b/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
@@ -29,7 +29,6 @@
import android.util.Log;
import com.android.internal.telephony.TelephonyIntents;
-import com.android.internal.telephony.flags.Flags;
import com.android.server.FgThread;
import java.util.Objects;
@@ -107,26 +106,19 @@
boolean isInExtensionTime = mEmergencyCallEndRealtimeMs != Long.MIN_VALUE
&& (SystemClock.elapsedRealtime() - mEmergencyCallEndRealtimeMs) < extensionTimeMs;
- if (!Flags.enforceTelephonyFeatureMapping()) {
- return mIsInEmergencyCall
- || isInExtensionTime
- || mTelephonyManager.getEmergencyCallbackMode()
- || mTelephonyManager.isInEmergencySmsMode();
- } else {
- boolean emergencyCallbackMode = false;
- boolean emergencySmsMode = false;
- PackageManager pm = mContext.getPackageManager();
- if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CALLING)) {
- emergencyCallbackMode = mTelephonyManager.getEmergencyCallbackMode();
- }
- if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_MESSAGING)) {
- emergencySmsMode = mTelephonyManager.isInEmergencySmsMode();
- }
- return mIsInEmergencyCall
- || isInExtensionTime
- || emergencyCallbackMode
- || emergencySmsMode;
+ boolean emergencyCallbackMode = false;
+ boolean emergencySmsMode = false;
+ PackageManager pm = mContext.getPackageManager();
+ if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CALLING)) {
+ emergencyCallbackMode = mTelephonyManager.getEmergencyCallbackMode();
}
+ if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_MESSAGING)) {
+ emergencySmsMode = mTelephonyManager.isInEmergencySmsMode();
+ }
+ return mIsInEmergencyCall
+ || isInExtensionTime
+ || emergencyCallbackMode
+ || emergencySmsMode;
}
private class EmergencyCallTelephonyCallback extends TelephonyCallback implements
diff --git a/services/core/java/com/android/server/om/OverlayManagerSettings.java b/services/core/java/com/android/server/om/OverlayManagerSettings.java
index cb01727..1ac9711 100644
--- a/services/core/java/com/android/server/om/OverlayManagerSettings.java
+++ b/services/core/java/com/android/server/om/OverlayManagerSettings.java
@@ -544,6 +544,7 @@
// and overwritten.
throw new XmlPullParserException("old version " + oldVersion + "; ignoring");
case 3:
+ case 4:
// Upgrading from version 3 to 5 is not a breaking change so do not ignore the
// overlay file.
return;
diff --git a/services/core/java/com/android/server/pm/AppDataHelper.java b/services/core/java/com/android/server/pm/AppDataHelper.java
index 29f8243..ae41519 100644
--- a/services/core/java/com/android/server/pm/AppDataHelper.java
+++ b/services/core/java/com/android/server/pm/AppDataHelper.java
@@ -24,6 +24,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.content.pm.PackageManager;
import android.os.CreateAppDataArgs;
@@ -548,7 +549,7 @@
return prepareAppDataFuture;
}
- void clearAppDataLIF(AndroidPackage pkg, int userId, int flags) {
+ void clearAppDataLIF(AndroidPackage pkg, @CanBeALL @UserIdInt int userId, int flags) {
if (pkg == null) {
return;
}
@@ -559,7 +560,8 @@
}
}
- void clearAppDataLeafLIF(String packageName, String volumeUuid, int userId, int flags) {
+ void clearAppDataLeafLIF(String packageName, String volumeUuid, @CanBeALL @UserIdInt int userId,
+ int flags) {
final Computer snapshot = mPm.snapshotComputer();
final PackageStateInternal packageStateInternal =
snapshot.getPackageStateInternal(packageName);
diff --git a/services/core/java/com/android/server/pm/BackgroundInstallControlService.java b/services/core/java/com/android/server/pm/BackgroundInstallControlService.java
index c3af578..463989a 100644
--- a/services/core/java/com/android/server/pm/BackgroundInstallControlService.java
+++ b/services/core/java/com/android/server/pm/BackgroundInstallControlService.java
@@ -332,7 +332,8 @@
userId)
!= PERMISSION_GRANTED) {
if(Build.IS_DEBUGGABLE) {
- Slog.d(TAG, "handlePackageAdd " + packageName + ": installer doesn't "
+ Slog.d(TAG, "handlePackageAdd " + packageName + ": installer ("
+ + installerPackageName + ") doesn't "
+ "have INSTALL_PACKAGES permission, skipping");
}
return;
diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java
index 90adb66..38aa57f 100644
--- a/services/core/java/com/android/server/pm/DeletePackageHelper.java
+++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java
@@ -24,6 +24,7 @@
import static android.content.pm.PackageManager.DELETE_SUCCEEDED;
import static android.content.pm.PackageManager.MATCH_KNOWN_PACKAGES;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import static android.os.UserHandle.USER_ALL;
import static com.android.server.pm.InstructionSets.getAppDexInstructionSets;
import static com.android.server.pm.PackageManagerService.DEBUG_COMPRESSION;
@@ -35,6 +36,8 @@
import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
+import android.annotation.UserIdInt;
import android.app.ApplicationExitInfo;
import android.app.ApplicationPackageManager;
import android.content.Intent;
@@ -120,7 +123,7 @@
final boolean res;
final int removeUser = (deleteFlags & PackageManager.DELETE_ALL_USERS) != 0
- ? UserHandle.USER_ALL : userId;
+ ? USER_ALL : userId;
final PackageSetting uninstalledPs;
final PackageSetting disabledSystemPs;
@@ -181,7 +184,7 @@
if (libraryInfo != null) {
boolean flagSdkLibIndependence = Flags.sdkLibIndependence();
for (int currUserId : allUsers) {
- if (removeUser != UserHandle.USER_ALL && removeUser != currUserId) {
+ if (removeUser != USER_ALL && removeUser != currUserId) {
continue;
}
var libClientPackagesPair = computer.getPackagesUsingSharedLibrary(
@@ -225,7 +228,7 @@
&& ((deleteFlags & PackageManager.DELETE_SYSTEM_APP) == 0)) {
// We're downgrading a system app, which will apply to all users, so
// freeze them all during the downgrade
- freezeUser = UserHandle.USER_ALL;
+ freezeUser = USER_ALL;
priorUserStates = new SparseArray<>();
for (int i = 0; i < allUsers.length; i++) {
PackageUserState userState = uninstalledPs.readUserState(allUsers[i]);
@@ -419,7 +422,7 @@
if (PackageManagerServiceUtils.isSystemApp(ps)) {
final boolean deleteSystem = (flags & PackageManager.DELETE_SYSTEM_APP) != 0;
final boolean deleteAllUsers =
- user == null || user.getIdentifier() == UserHandle.USER_ALL;
+ user == null || user.getIdentifier() == USER_ALL;
if ((!deleteSystem || deleteAllUsers) && disabledPs == null) {
Slog.w(TAG, "Attempt to delete unknown system package "
+ ps.getPkg().getPackageName());
@@ -462,9 +465,9 @@
Manifest.permission.SUSPEND_APPS, packageName, userId) == PERMISSION_GRANTED);
}
- final int userId = user == null ? UserHandle.USER_ALL : user.getIdentifier();
+ final int userId = user == null ? USER_ALL : user.getIdentifier();
// Remember which users are affected, before the installed states are modified
- outInfo.mRemovedUsers = userId == UserHandle.USER_ALL
+ outInfo.mRemovedUsers = userId == USER_ALL
? ps.queryUsersInstalledOrHasData(allUserHandles)
: new int[]{userId};
outInfo.populateBroadcastUsers(ps);
@@ -477,7 +480,7 @@
outInfo.mRemovedPackageVersionCode = ps.getVersionCode();
if ((!systemApp || (flags & PackageManager.DELETE_SYSTEM_APP) != 0)
- && userId != UserHandle.USER_ALL) {
+ && userId != USER_ALL) {
// The caller is asking that the package only be deleted for a single
// user. To do this, we just mark its uninstalled state and delete
// its data. If this is a system app, we only allow this to happen if
@@ -550,7 +553,7 @@
for (final int affectedUserId : outInfo.mRemovedUsers) {
if (hadSuspendAppsPermission.get(affectedUserId)) {
mPm.unsuspendForSuspendingPackage(snapshot, packageName,
- affectedUserId /*suspendingUserId*/, true /*inAllUsers*/);
+ affectedUserId /*suspendingUserId*/, USER_ALL);
mPm.removeAllDistractingPackageRestrictions(snapshot, affectedUserId);
}
}
@@ -562,7 +565,7 @@
}
@GuardedBy("mPm.mInstallLock")
- private void deleteInstalledPackageLIF(PackageSetting ps, int userId,
+ private void deleteInstalledPackageLIF(PackageSetting ps, @CanBeALL @UserIdInt int userId,
boolean deleteCodeAndResources, int flags, @NonNull int[] allUserHandles,
@NonNull PackageRemovedInfo outInfo, boolean writeSettings) {
synchronized (mPm.mLock) {
@@ -588,7 +591,7 @@
@GuardedBy("mPm.mLock")
private void markPackageUninstalledForUserLPw(PackageSetting ps, UserHandle user, int flags) {
- final int[] userIds = (user == null || user.getIdentifier() == UserHandle.USER_ALL)
+ final int[] userIds = (user == null || user.getIdentifier() == USER_ALL)
? mUserManagerInternal.getUserIds()
: new int[] {user.getIdentifier()};
for (int nextUserId : userIds) {
@@ -685,7 +688,7 @@
flags |= PackageManager.DELETE_KEEP_DATA;
}
try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
- deleteInstalledPackageLIF(deletedPs, UserHandle.USER_ALL, true, flags, allUserHandles,
+ deleteInstalledPackageLIF(deletedPs, USER_ALL, true, flags, allUserHandles,
outInfo, writeSettings);
}
}
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index 2811747..f96846c 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -1398,6 +1398,8 @@
Map<String, Boolean> createdAppId, boolean success) {
if (success) {
for (InstallRequest request : requests) {
+ mInjector.getAppOpsManagerInternal().onPackageAdded(
+ request.getName(), request.getAppId());
if (request.getDataLoaderType() != DataLoaderType.INCREMENTAL) {
continue;
}
diff --git a/services/core/java/com/android/server/pm/PackageFreezer.java b/services/core/java/com/android/server/pm/PackageFreezer.java
index 11f2059..d66eb81 100644
--- a/services/core/java/com/android/server/pm/PackageFreezer.java
+++ b/services/core/java/com/android/server/pm/PackageFreezer.java
@@ -18,6 +18,8 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
+import android.annotation.UserIdInt;
import android.content.pm.Flags;
import android.content.pm.PackageManager;
@@ -60,12 +62,12 @@
}
}
- PackageFreezer(String packageName, int userId, String killReason,
+ PackageFreezer(String packageName, @CanBeALL @UserIdInt int userId, String killReason,
PackageManagerService pm, int exitInfoReason, @Nullable InstallRequest request) {
this(packageName, userId, killReason, pm, exitInfoReason, request, false);
}
- PackageFreezer(String packageName, int userId, String killReason,
+ PackageFreezer(String packageName, @CanBeALL @UserIdInt int userId, String killReason,
PackageManagerService pm, int exitInfoReason, @Nullable InstallRequest request,
boolean waitAppKilled) {
mPm = pm;
diff --git a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
index ed568b8..f5230c5 100644
--- a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
+++ b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
@@ -689,7 +689,7 @@
final int suspendingUserId =
crossUserSuspensionEnabledRo() ? UserHandle.USER_SYSTEM : affectedUser;
mService.unsuspendForSuspendingPackage(
- snapshot(), PLATFORM_PACKAGE_NAME, suspendingUserId, /* inAllUsers= */ false);
+ snapshot(), PLATFORM_PACKAGE_NAME, suspendingUserId, affectedUser);
}
@Override
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 2464a29..b60812c 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -34,6 +34,7 @@
import static android.crashrecovery.flags.Flags.refactorCrashrecovery;
import static android.os.Process.INVALID_UID;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
+import static android.os.UserHandle.USER_ALL;
import static android.os.storage.StorageManager.FLAG_STORAGE_CE;
import static android.os.storage.StorageManager.FLAG_STORAGE_DE;
import static android.os.storage.StorageManager.FLAG_STORAGE_EXTERNAL;
@@ -50,12 +51,14 @@
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.StringRes;
import android.annotation.UserIdInt;
import android.annotation.WorkerThread;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.AppOpsManager;
+import android.app.AppOpsManagerInternal;
import android.app.ApplicationExitInfo;
import android.app.ApplicationPackageManager;
import android.app.BroadcastOptions;
@@ -1586,13 +1589,13 @@
}
void scheduleWritePackageRestrictions(UserHandle user) {
- final int userId = user == null ? UserHandle.USER_ALL : user.getIdentifier();
+ final int userId = user == null ? USER_ALL : user.getIdentifier();
scheduleWritePackageRestrictions(userId);
}
- void scheduleWritePackageRestrictions(int userId) {
+ void scheduleWritePackageRestrictions(@CanBeALL @UserIdInt int userId) {
invalidatePackageInfoCache();
- if (userId == UserHandle.USER_ALL) {
+ if (userId == USER_ALL) {
synchronized (mDirtyUsers) {
for (int aUserId : mUserManager.getUserIds()) {
mDirtyUsers.add(aUserId);
@@ -1690,6 +1693,7 @@
(i, pm) -> new ComponentResolver(i.getUserManagerService(), pm.mUserNeedsBadging),
(i, pm) -> PermissionManagerService.create(context,
i.getSystemConfig().getAvailableFeatures()),
+ (i, pm) -> LocalServices.getService(AppOpsManagerInternal.class),
(i, pm) -> new UserManagerService(context, pm,
new UserDataPreparer(installer, installLock, context), lock),
(i, pm) -> new Settings(Environment.getDataDirectory(),
@@ -1805,7 +1809,7 @@
private void installAllowlistedSystemPackages() {
if (mUserManager.installWhitelistedSystemPackages(isFirstBoot(), isDeviceUpgrading(),
mExistingPackages)) {
- scheduleWritePackageRestrictions(UserHandle.USER_ALL);
+ scheduleWritePackageRestrictions(USER_ALL);
scheduleWriteSettings();
}
}
@@ -2392,7 +2396,7 @@
final PackageSetting ps = packageSettings.valueAt(i);
if (Objects.equals(StorageManager.UUID_PRIVATE_INTERNAL, ps.getVolumeUuid())) {
// No apps are running this early, so no need to freeze
- mAppDataHelper.clearAppDataLIF(ps.getPkg(), UserHandle.USER_ALL,
+ mAppDataHelper.clearAppDataLIF(ps.getPkg(), USER_ALL,
FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL
| Installer.FLAG_CLEAR_CODE_CACHE_ONLY
| Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES);
@@ -3074,8 +3078,8 @@
}
@NonNull
- int[] resolveUserIds(int userId) {
- return (userId == UserHandle.USER_ALL) ? mUserManager.getUserIds() : new int[] { userId };
+ int[] resolveUserIds(@CanBeALL @UserIdInt int userId) {
+ return (userId == USER_ALL) ? mUserManager.getUserIds() : new int[]{userId};
}
private void setUpInstantAppInstallerActivityLP(ActivityInfo installerActivity) {
@@ -3108,11 +3112,11 @@
}
void killApplication(String pkgName, @AppIdInt int appId, String reason, int exitInfoReason) {
- killApplication(pkgName, appId, UserHandle.USER_ALL, reason, exitInfoReason);
+ killApplication(pkgName, appId, USER_ALL, reason, exitInfoReason);
}
void killApplication(String pkgName, @AppIdInt int appId,
- @UserIdInt int userId, String reason, int exitInfoReason) {
+ @CanBeALL @UserIdInt int userId, String reason, int exitInfoReason) {
// Request the ActivityManager to kill the process(only for existing packages)
// so that we do not end up in a confused state while the user is still using the older
// version of the application while the new one gets installed.
@@ -3131,7 +3135,7 @@
}
void killApplicationSync(String pkgName, @AppIdInt int appId,
- @UserIdInt int userId, String reason, int exitInfoReason) {
+ @CanBeALL @UserIdInt int userId, String reason, int exitInfoReason) {
ActivityManagerInternal mAmi = LocalServices.getService(ActivityManagerInternal.class);
if (Thread.holdsLock(mLock) || mAmi == null) {
// holds PM's lock, go back killApplication to avoid it run into watchdog reset.
@@ -3228,23 +3232,24 @@
}
/**
- * @param inAllUsers Whether to unsuspend packages suspended by the given package in other
- * users. This flag is only used when cross-user suspension is enabled.
+ * @param suspendingUserId The user that has suspended apps using the suspending package.
+ * @param targetUserId The user whose apps should be unsuspended. Pass {@code USER_ALL} to
+ * unsuspend for all users.
*/
void unsuspendForSuspendingPackage(@NonNull Computer computer, String suspendingPackage,
- @UserIdInt int suspendingUserId, boolean inAllUsers) {
+ @UserIdInt int suspendingUserId, @CanBeALL @UserIdInt int targetUserId) {
// TODO: This can be replaced by a special parameter to iterate all packages, rather than
// this weird pre-collect of all packages.
final String[] allPackages = computer.getPackageStates().keySet().toArray(new String[0]);
final Predicate<UserPackage> suspenderPredicate =
UserPackage.of(suspendingUserId, suspendingPackage)::equals;
- if (!crossUserSuspensionEnabledRo() || !inAllUsers) {
+ if (!crossUserSuspensionEnabledRo() || targetUserId != USER_ALL) {
mSuspendPackageHelper.removeSuspensionsBySuspendingPackage(computer,
- allPackages, suspenderPredicate, suspendingUserId);
+ allPackages, suspenderPredicate, targetUserId);
} else {
- for (int targetUserId: mUserManager.getUserIds()) {
+ for (int user : mUserManager.getUserIds()) {
mSuspendPackageHelper.removeSuspensionsBySuspendingPackage(
- computer, allPackages, suspenderPredicate, targetUserId);
+ computer, allPackages, suspenderPredicate, user);
}
}
}
@@ -3381,11 +3386,11 @@
&& !snapshot.isCallerSameApp(packageName, callingUid)) {
return false;
}
- return isPackageDeviceAdmin(packageName, UserHandle.USER_ALL);
+ return isPackageDeviceAdmin(packageName, USER_ALL);
}
// TODO(b/261957226): centralise this logic in DPM
- boolean isPackageDeviceAdmin(String packageName, int userId) {
+ boolean isPackageDeviceAdmin(String packageName, @CanBeALL @UserIdInt int userId) {
final IDevicePolicyManager dpm = getDevicePolicyManager();
final DevicePolicyManagerInternal dpmi =
mInjector.getLocalService(DevicePolicyManagerInternal.class);
@@ -3405,7 +3410,7 @@
// Does it contain a device admin for any user?
int[] allUsers = mUserManager.getUserIds();
int[] targetUsers;
- if (userId == UserHandle.USER_ALL) {
+ if (userId == USER_ALL) {
targetUsers = allUsers;
} else {
targetUsers = new int[]{userId};
@@ -3555,7 +3560,7 @@
/** This method takes a specific user id as well as UserHandle.USER_ALL. */
@GuardedBy("mLock")
void clearPackagePreferredActivitiesLPw(String packageName,
- @NonNull SparseBooleanArray outUserChanged, int userId) {
+ @NonNull SparseBooleanArray outUserChanged, @CanBeALL @UserIdInt int userId) {
mSettings.clearPackagePreferredActivities(packageName, outUserChanged, userId);
}
@@ -4152,7 +4157,7 @@
// This app should not generally be allowed to get disabled by the UI, but
// if it ever does, we don't want to end up with some of the user's apps
// permanently suspended.
- unsuspendForSuspendingPackage(computer, packageName, userId, true /* inAllUsers */);
+ unsuspendForSuspendingPackage(computer, packageName, userId, USER_ALL);
removeAllDistractingPackageRestrictions(computer, userId);
}
success = true;
@@ -4243,9 +4248,9 @@
};
mContext.getContentResolver().registerContentObserver(android.provider.Settings.Global
.getUriFor(Global.ENABLE_EPHEMERAL_FEATURE),
- false, co, UserHandle.USER_ALL);
+ false, co, USER_ALL);
mContext.getContentResolver().registerContentObserver(android.provider.Settings.Secure
- .getUriFor(Secure.INSTANT_APPS_ENABLED), false, co, UserHandle.USER_ALL);
+ .getUriFor(Secure.INSTANT_APPS_ENABLED), false, co, USER_ALL);
co.onChange(true);
mAppsFilter.onSystemReady(LocalServices.getService(PackageManagerInternal.class));
@@ -4388,14 +4393,14 @@
}
}
- public PackageFreezer freezePackage(String packageName, int userId, String killReason,
- int exitInfoReason, InstallRequest request) {
+ public PackageFreezer freezePackage(String packageName, @CanBeALL @UserIdInt int userId,
+ String killReason, int exitInfoReason, InstallRequest request) {
return freezePackage(packageName, userId, killReason, exitInfoReason, request,
/* waitAppKilled= */ false);
}
- private PackageFreezer freezePackage(String packageName, int userId, String killReason,
- int exitInfoReason, InstallRequest request, boolean waitAppKilled) {
+ private PackageFreezer freezePackage(String packageName, @CanBeALL @UserIdInt int userId,
+ String killReason, int exitInfoReason, InstallRequest request, boolean waitAppKilled) {
return new PackageFreezer(packageName, userId, killReason, this, exitInfoReason, request,
waitAppKilled);
}
@@ -4773,7 +4778,7 @@
final Computer snapshot = snapshotComputer();
final AndroidPackage pkg = snapshot.getPackage(packageName);
try (PackageFreezer ignored =
- freezePackage(packageName, UserHandle.USER_ALL,
+ freezePackage(packageName, USER_ALL,
"clearApplicationProfileData",
ApplicationExitInfo.REASON_OTHER, null /* request */)) {
try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
@@ -4819,7 +4824,7 @@
public void run() {
mHandler.removeCallbacks(this);
final boolean succeeded;
- try (PackageFreezer freezer = freezePackage(packageName, UserHandle.USER_ALL,
+ try (PackageFreezer freezer = freezePackage(packageName, USER_ALL,
"clearApplicationUserData",
ApplicationExitInfo.REASON_USER_REQUESTED, null /* request */,
/* waitAppKilled= */ true)) {
@@ -4846,7 +4851,7 @@
== PERMISSION_GRANTED) {
final Computer snapshot = snapshotComputer();
unsuspendForSuspendingPackage(
- snapshot, packageName, userId, true /* inAllUsers */);
+ snapshot, packageName, userId, USER_ALL);
removeAllDistractingPackageRestrictions(snapshot, userId);
synchronized (mLock) {
flushPackageRestrictionsAsUserInternalLocked(userId);
@@ -6371,13 +6376,13 @@
if (mComponentResolver.updateMimeGroup(snapshotComputer(), packageName, mimeGroup)) {
Binder.withCleanCallingIdentity(() -> {
mPreferredActivityHelper.clearPackagePreferredActivities(packageName,
- UserHandle.USER_ALL);
+ USER_ALL);
// Send the ACTION_PACKAGE_CHANGED when the mimeGroup has changes
final Computer snapShot = snapshotComputer();
final ArrayList<String> components = new ArrayList<>(
Collections.singletonList(packageName));
final int appId = packageState.getAppId();
- final int[] userIds = resolveUserIds(UserHandle.USER_ALL);
+ final int[] userIds = resolveUserIds(USER_ALL);
final String reason = "The mimeGroup is changed";
for (int i = 0; i < userIds.length; i++) {
final PackageUserStateInternal pkgUserState =
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceInjector.java b/services/core/java/com/android/server/pm/PackageManagerServiceInjector.java
index ae2eaeb..a9d367e 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceInjector.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceInjector.java
@@ -17,6 +17,7 @@
package com.android.server.pm;
import android.app.ActivityManagerInternal;
+import android.app.AppOpsManagerInternal;
import android.app.backup.IBackupManager;
import android.content.ComponentName;
import android.content.Context;
@@ -96,6 +97,7 @@
mComponentResolverProducer;
private final Singleton<PermissionManagerServiceInternal>
mPermissionManagerServiceProducer;
+ private final Singleton<AppOpsManagerInternal> mAppOpsManagerInternalProducer;
private final Singleton<UserManagerService>
mUserManagerProducer;
private final Singleton<Settings> mSettingsProducer;
@@ -149,6 +151,7 @@
List<ScanPartition> systemPartitions,
Producer<ComponentResolver> componentResolverProducer,
Producer<PermissionManagerServiceInternal> permissionManagerServiceProducer,
+ Producer<AppOpsManagerInternal> appOpsManagerInternalProducer,
Producer<UserManagerService> userManagerProducer,
Producer<Settings> settingsProducer,
Producer<AppsFilterImpl> appsFilterProducer,
@@ -194,6 +197,7 @@
componentResolverProducer);
mPermissionManagerServiceProducer = new Singleton<>(
permissionManagerServiceProducer);
+ mAppOpsManagerInternalProducer = new Singleton<>(appOpsManagerInternalProducer);
mUserManagerProducer = new Singleton<>(userManagerProducer);
mSettingsProducer = new Singleton<>(settingsProducer);
mAppsFilterProducer = new Singleton<>(appsFilterProducer);
@@ -290,6 +294,10 @@
return mPermissionManagerServiceProducer.get(this, mPackageManager);
}
+ public AppOpsManagerInternal getAppOpsManagerInternal() {
+ return mAppOpsManagerInternalProducer.get(this, mPackageManager);
+ }
+
public Context getContext() {
return mContext;
}
diff --git a/services/core/java/com/android/server/pm/PreferredActivityHelper.java b/services/core/java/com/android/server/pm/PreferredActivityHelper.java
index 41d2aeb..fa56596 100644
--- a/services/core/java/com/android/server/pm/PreferredActivityHelper.java
+++ b/services/core/java/com/android/server/pm/PreferredActivityHelper.java
@@ -25,6 +25,7 @@
import static com.android.server.pm.PackageManagerService.TAG;
import android.annotation.NonNull;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.content.ComponentName;
import android.content.Intent;
@@ -115,7 +116,8 @@
}
/** This method takes a specific user id as well as UserHandle.USER_ALL. */
- public void clearPackagePreferredActivities(String packageName, int userId) {
+ public void clearPackagePreferredActivities(String packageName,
+ @CanBeALL @UserIdInt int userId) {
final SparseBooleanArray changedUsers = new SparseBooleanArray();
synchronized (mPm.mLock) {
mPm.clearPackagePreferredActivitiesLPw(packageName, changedUsers, userId);
diff --git a/services/core/java/com/android/server/pm/RemovePackageHelper.java b/services/core/java/com/android/server/pm/RemovePackageHelper.java
index f01a74e..22b4ec7 100644
--- a/services/core/java/com/android/server/pm/RemovePackageHelper.java
+++ b/services/core/java/com/android/server/pm/RemovePackageHelper.java
@@ -30,6 +30,8 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
+import android.annotation.UserIdInt;
import android.content.pm.PackageManager;
import android.content.pm.parsing.ApkLiteParseUtils;
import android.content.pm.parsing.PackageLite;
@@ -256,7 +258,8 @@
* Make sure this flag is set for partially installed apps. If not it's meaningless to
* delete a partially installed application.
*/
- public void clearPackageStateForUserLIF(PackageSetting ps, int userId, int flags) {
+ public void clearPackageStateForUserLIF(PackageSetting ps, @CanBeALL @UserIdInt int userId,
+ int flags) {
final String packageName = ps.getPackageName();
// Step 1: always destroy app profiles except when explicitly preserved
if ((flags & Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES) == 0) {
@@ -370,13 +373,13 @@
* This method deletes the package from internal data structures such as mPackages / mSettings.
*
* @param targetUserId indicates the target user of the deletion. It equals to
- * {@link UserHandle.USER_ALL} if the deletion was initiated for all users,
+ * {@link UserHandle#USER_ALL} if the deletion was initiated for all users,
* otherwise it equals to the specific user id that the deletion was meant
* for.
*/
@GuardedBy("mPm.mInstallLock")
- public void removePackageDataLIF(final PackageSetting deletedPs, int targetUserId,
- @NonNull int[] allUserHandles,
+ public void removePackageDataLIF(final PackageSetting deletedPs,
+ @CanBeALL @UserIdInt int targetUserId, @NonNull int[] allUserHandles,
@NonNull PackageRemovedInfo outInfo, int flags, boolean writeSettings) {
String packageName = deletedPs.getPackageName();
if (DEBUG_REMOVE) Slog.d(TAG, "removePackageDataLI: " + deletedPs);
@@ -482,7 +485,8 @@
}
}
- private static boolean shouldDeletePackageSetting(PackageSetting deletedPs, int userId,
+ private static boolean shouldDeletePackageSetting(PackageSetting deletedPs,
+ @CanBeALL @UserIdInt int userId,
int[] allUserHandles, int flags) {
if ((flags & PackageManager.DELETE_KEEP_DATA) != 0) {
return false;
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 485a280..92257f1 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -35,6 +35,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.app.compat.ChangeIdStateCache;
import android.content.ComponentName;
@@ -6639,7 +6640,7 @@
/** This method takes a specific user id as well as UserHandle.USER_ALL. */
void clearPackagePreferredActivities(String packageName,
- @NonNull SparseBooleanArray outUserChanged, int userId) {
+ @NonNull SparseBooleanArray outUserChanged, @CanBeALL @UserIdInt int userId) {
boolean changed = false;
ArrayList<PreferredActivity> removed = null;
for (int i = 0; i < mPreferredActivities.size(); i++) {
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index 5c5a9c1..ac19ea1 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -37,6 +37,7 @@
import android.annotation.AppIdInt;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.AppOpsManager;
@@ -765,7 +766,7 @@
@Override
public void onPackageUninstalled(@NonNull String packageName, int appId,
@NonNull PackageState packageState, @Nullable AndroidPackage pkg,
- @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId) {
+ @NonNull List<AndroidPackage> sharedUserPkgs, @CanBeALL @UserIdInt int userId) {
if (userId != UserHandle.USER_ALL) {
final int[] userIds = getAllUserIds();
if (!ArrayUtils.contains(userIds, userId)) {
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
index e51ec04..33d57d5 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
@@ -65,6 +65,7 @@
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.AppOpsManager;
@@ -5284,7 +5285,7 @@
@Override
public void onPackageUninstalled(@NonNull String packageName, int appId,
@NonNull PackageState packageState, @Nullable AndroidPackage pkg,
- @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId) {
+ @NonNull List<AndroidPackage> sharedUserPkgs, @CanBeALL @UserIdInt int userId) {
Objects.requireNonNull(packageState, "packageState");
Objects.requireNonNull(packageName, "packageName");
Objects.requireNonNull(sharedUserPkgs, "sharedUserPkgs");
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
index 3d295f7..f2491d9 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
@@ -19,6 +19,7 @@
import android.annotation.AppIdInt;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -662,5 +663,5 @@
*/
void onPackageUninstalled(@NonNull String packageName, int appId,
@NonNull PackageState packageState, @Nullable AndroidPackage pkg,
- @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId);
+ @NonNull List<AndroidPackage> sharedUserPkgs, @CanBeALL @UserIdInt int userId);
}
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java
index a5c1284..ad765c8 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.app.AppOpsManager;
import android.content.pm.PackageInstaller.SessionParams;
@@ -325,7 +326,7 @@
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
void onPackageUninstalled(@NonNull String packageName, int appId,
@Nullable PackageState packageState, @Nullable AndroidPackage pkg,
- @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId);
+ @NonNull List<AndroidPackage> sharedUserPkgs, @CanBeALL @UserIdInt int userId);
/**
* The permission-related parameters passed in for package installation.
diff --git a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
index 1d62087..2cf6b7e 100644
--- a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
+++ b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
@@ -2911,19 +2911,7 @@
return false;
}
- mCounter.getCounts(counts, procState);
-
- // Return counts only if at least one of the elements is non-zero.
- for (int i = counts.length - 1; i >= 0; --i) {
- if (counts[i] != 0) {
- return true;
- }
- }
- return false;
- }
-
- public void logState(Printer pw, String prefix) {
- pw.println(prefix + "mCounter=" + mCounter);
+ return mCounter.getCounts(counts, procState);
}
/**
diff --git a/services/core/java/com/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor.java
index 5f93bdf..a550f2d 100644
--- a/services/core/java/com/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor.java
@@ -68,11 +68,15 @@
// processor. All that remains to be done is copy the estimates over.
MultiStateStats.States.forEachTrackedStateCombination(deviceStateConfig,
states -> {
- screenStats.getDeviceStats(mTmpScreenStats, states);
+ if (!screenStats.getDeviceStats(mTmpScreenStats, states)) {
+ return;
+ }
double power =
mScreenPowerStatsLayout.getScreenDozePowerEstimate(mTmpScreenStats);
- mStatsLayout.setDevicePowerEstimate(mTmpDeviceStats, power);
- stats.setDeviceStats(states, mTmpDeviceStats);
+ if (power != 0) {
+ mStatsLayout.setDevicePowerEstimate(mTmpDeviceStats, power);
+ stats.setDeviceStats(states, mTmpDeviceStats);
+ }
});
}
}
diff --git a/services/core/java/com/android/server/power/stats/processor/CpuPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/CpuPowerStatsProcessor.java
index ab2489c..98280be 100644
--- a/services/core/java/com/android/server/power/stats/processor/CpuPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/CpuPowerStatsProcessor.java
@@ -407,7 +407,10 @@
deviceStatsIntermediates.timeByBracket = new long[powerBracketCount];
deviceStatsIntermediates.powerByBracket = new double[powerBracketCount];
- stats.getDeviceStats(mTmpDeviceStatsArray, deviceStateEstimation.stateValues);
+ if (!stats.getDeviceStats(mTmpDeviceStatsArray, deviceStateEstimation.stateValues)) {
+ continue;
+ }
+
for (int step = 0; step < cpuScalingStepCount; step++) {
if (intermediates.timeByScalingStep[step] == 0) {
continue;
@@ -432,16 +435,19 @@
}
if (wakelockStats != null) {
- wakelockStats.getDeviceStats(mTmpWakelockDeviceStats,
- deviceStateEstimation.stateValues);
- double wakelockPowerEstimate = mWakelockPowerStatsLayout.getDevicePowerEstimate(
- mTmpWakelockDeviceStats);
- power = Math.max(0, power - wakelockPowerEstimate);
+ if (wakelockStats.getDeviceStats(mTmpWakelockDeviceStats,
+ deviceStateEstimation.stateValues)) {
+ double wakelockPowerEstimate = mWakelockPowerStatsLayout.getDevicePowerEstimate(
+ mTmpWakelockDeviceStats);
+ power = Math.max(0, power - wakelockPowerEstimate);
+ }
}
- deviceStatsIntermediates.power = power;
- mStatsLayout.setDevicePowerEstimate(mTmpDeviceStatsArray, power);
- stats.setDeviceStats(deviceStateEstimation.stateValues, mTmpDeviceStatsArray);
+ if (power != 0) {
+ deviceStatsIntermediates.power = power;
+ mStatsLayout.setDevicePowerEstimate(mTmpDeviceStatsArray, power);
+ stats.setDeviceStats(deviceStateEstimation.stateValues, mTmpDeviceStatsArray);
+ }
}
}
@@ -541,11 +547,12 @@
}
if (wakelockStats != null) {
- wakelockStats.getUidStats(mTmpWakelockUidStats, uid,
- proportionalEstimate.stateValues);
- double wakelockPowerEstimate = mWakelockPowerStatsLayout.getUidPowerEstimate(
- mTmpWakelockUidStats);
- power = Math.max(0, power - wakelockPowerEstimate);
+ if (wakelockStats.getUidStats(mTmpWakelockUidStats, uid,
+ proportionalEstimate.stateValues)) {
+ double wakelockPowerEstimate = mWakelockPowerStatsLayout.getUidPowerEstimate(
+ mTmpWakelockUidStats);
+ power = Math.max(0, power - wakelockPowerEstimate);
+ }
}
if (power != 0) {
diff --git a/services/core/java/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessor.java
index a544daa..58835053 100644
--- a/services/core/java/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessor.java
@@ -259,7 +259,9 @@
stats.forEachStateStatsKey(key -> {
RxTxPowerEstimators estimators = mRxTxPowerEstimators.get(key);
- stats.getStateStats(mTmpStateStatsArray, key, deviceStates);
+ if (!stats.getStateStats(mTmpStateStatsArray, key, deviceStates)) {
+ return;
+ }
long rxTime = mStatsLayout.getStateRxTime(mTmpStateStatsArray);
intermediates.rxPower += estimators.mRxPowerEstimator.calculatePower(rxTime);
for (int txLevel = 0; txLevel < ModemActivityInfo.getNumTxPowerLevels(); txLevel++) {
diff --git a/services/core/java/com/android/server/power/stats/processor/MultiStateStats.java b/services/core/java/com/android/server/power/stats/processor/MultiStateStats.java
index 6932575..0038943 100644
--- a/services/core/java/com/android/server/power/stats/processor/MultiStateStats.java
+++ b/services/core/java/com/android/server/power/stats/processor/MultiStateStats.java
@@ -16,6 +16,7 @@
package com.android.server.power.stats.processor;
+import android.annotation.CheckResult;
import android.annotation.Nullable;
import android.util.Slog;
@@ -342,10 +343,12 @@
}
/**
- * Returns accumulated stats for the specified composite state.
+ * Returns accumulated stats for the specified composite state or false if the results are
+ * all zeros.
*/
- void getStats(long[] outValues, int[] states) {
- mCounter.getCounts(outValues, mFactory.getSerialState(states));
+ @CheckResult
+ boolean getStats(long[] outValues, int[] states) {
+ return mCounter.getCounts(outValues, mFactory.getSerialState(states));
}
/**
@@ -389,15 +392,7 @@
private void writeXmlForStates(TypedXmlSerializer serializer, int[] states, long[] values)
throws IOException {
- mCounter.getCounts(values, mFactory.getSerialState(states));
- boolean nonZero = false;
- for (long value : values) {
- if (value != 0) {
- nonZero = true;
- break;
- }
- }
- if (!nonZero) {
+ if (!mCounter.getCounts(values, mFactory.getSerialState(states))) {
return;
}
@@ -470,15 +465,7 @@
StringBuilder sb = new StringBuilder();
long[] values = new long[mCounter.getArrayLength()];
States.forEachTrackedStateCombination(mFactory.mStates, states -> {
- mCounter.getCounts(values, mFactory.getSerialState(states));
- boolean nonZero = false;
- for (long value : values) {
- if (value != 0) {
- nonZero = true;
- break;
- }
- }
- if (!nonZero) {
+ if (!mCounter.getCounts(values, mFactory.getSerialState(states))) {
return;
}
diff --git a/services/core/java/com/android/server/power/stats/processor/PhoneCallPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/PhoneCallPowerStatsProcessor.java
index 3957ae0..ad628e4 100644
--- a/services/core/java/com/android/server/power/stats/processor/PhoneCallPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/PhoneCallPowerStatsProcessor.java
@@ -69,12 +69,15 @@
// processor. All that remains to be done is copy the estimates over.
MultiStateStats.States.forEachTrackedStateCombination(deviceStateConfig,
states -> {
- mobileRadioStats.getDeviceStats(mTmpMobileRadioDeviceStats, states);
- double callPowerEstimate =
- mMobileRadioStatsLayout.getDeviceCallPowerEstimate(
- mTmpMobileRadioDeviceStats);
- mStatsLayout.setDevicePowerEstimate(mTmpDeviceStats, callPowerEstimate);
- stats.setDeviceStats(states, mTmpDeviceStats);
+ if (!mobileRadioStats.getDeviceStats(mTmpMobileRadioDeviceStats, states)) {
+ return;
+ }
+ double callPowerEstimate = mMobileRadioStatsLayout.getDeviceCallPowerEstimate(
+ mTmpMobileRadioDeviceStats);
+ if (callPowerEstimate != 0) {
+ mStatsLayout.setDevicePowerEstimate(mTmpDeviceStats, callPowerEstimate);
+ stats.setDeviceStats(states, mTmpDeviceStats);
+ }
});
}
}
diff --git a/services/core/java/com/android/server/power/stats/processor/PowerComponentAggregatedPowerStats.java b/services/core/java/com/android/server/power/stats/processor/PowerComponentAggregatedPowerStats.java
index f9b9da9..d285a59 100644
--- a/services/core/java/com/android/server/power/stats/processor/PowerComponentAggregatedPowerStats.java
+++ b/services/core/java/com/android/server/power/stats/processor/PowerComponentAggregatedPowerStats.java
@@ -16,6 +16,7 @@
package com.android.server.power.stats.processor;
+import android.annotation.CheckResult;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.BatteryStats;
@@ -312,6 +313,11 @@
return uids;
}
+ /**
+ * Populates outValues with the stats for the specified states. If the stats are all 0,
+ * returns false, leaving outValues unchanged.
+ */
+ @CheckResult
boolean getDeviceStats(long[] outValues, int[] deviceStates) {
if (deviceStates.length != mDeviceStateConfig.length) {
throw new IllegalArgumentException(
@@ -319,12 +325,16 @@
+ " expected: " + mDeviceStateConfig.length);
}
if (mDeviceStats != null) {
- mDeviceStats.getStats(outValues, deviceStates);
- return true;
+ return mDeviceStats.getStats(outValues, deviceStates);
}
return false;
}
+ /**
+ * Populates outValues with the stats for the specified key and device states. If the stats
+ * are all 0, returns false, leaving outValues unchanged.
+ */
+ @CheckResult
boolean getStateStats(long[] outValues, int key, int[] deviceStates) {
if (deviceStates.length != mDeviceStateConfig.length) {
throw new IllegalArgumentException(
@@ -333,8 +343,7 @@
}
MultiStateStats stateStats = mStateStats.get(key);
if (stateStats != null) {
- stateStats.getStats(outValues, deviceStates);
- return true;
+ return stateStats.getStats(outValues, deviceStates);
}
return false;
}
@@ -345,6 +354,11 @@
}
}
+ /**
+ * Populates outValues with the stats for the specified UID and UID states. If the stats are
+ * all 0, returns false, leaving outValues unchanged.
+ */
+ @CheckResult
boolean getUidStats(long[] outValues, int uid, int[] uidStates) {
if (uidStates.length != mUidStateConfig.length) {
throw new IllegalArgumentException(
@@ -353,8 +367,7 @@
}
UidStats uidStats = mUidStats.get(uid);
if (uidStats != null && uidStats.stats != null) {
- uidStats.stats.getStats(outValues, uidStates);
- return true;
+ return uidStats.stats.getStats(outValues, uidStates);
}
return false;
}
@@ -578,15 +591,7 @@
long[] values = new long[stats.getDimensionCount()];
MultiStateStats.States[] stateInfo = stats.getStates();
MultiStateStats.States.forEachTrackedStateCombination(stateInfo, states -> {
- stats.getStats(values, states);
- boolean nonZero = false;
- for (long value : values) {
- if (value != 0) {
- nonZero = true;
- break;
- }
- }
- if (!nonZero) {
+ if (!stats.getStats(values, states)) {
return;
}
diff --git a/services/core/java/com/android/server/power/stats/processor/SensorPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/SensorPowerStatsProcessor.java
index ba728d3..284e6a9 100644
--- a/services/core/java/com/android/server/power/stats/processor/SensorPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/SensorPowerStatsProcessor.java
@@ -298,12 +298,16 @@
continue;
}
- if (!stats.getDeviceStats(mTmpDeviceStatsArray, estimation.stateValues)) {
+ double power = ((Intermediates) estimation.intermediates).power;
+ if (power == 0) {
continue;
}
- mStatsLayout.setDevicePowerEstimate(mTmpDeviceStatsArray,
- ((Intermediates) estimation.intermediates).power);
+ if (!stats.getDeviceStats(mTmpDeviceStatsArray, estimation.stateValues)) {
+ Arrays.fill(mTmpDeviceStatsArray, 0);
+ }
+
+ mStatsLayout.setDevicePowerEstimate(mTmpDeviceStatsArray, power);
stats.setDeviceStats(estimation.stateValues, mTmpDeviceStatsArray);
}
}
diff --git a/services/core/java/com/android/server/security/CertificateRevocationStatusManager.java b/services/core/java/com/android/server/security/CertificateRevocationStatusManager.java
index 4cd4b3b..7991575 100644
--- a/services/core/java/com/android/server/security/CertificateRevocationStatusManager.java
+++ b/services/core/java/com/android/server/security/CertificateRevocationStatusManager.java
@@ -24,7 +24,7 @@
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.os.Environment;
-import android.os.PersistableBundle;
+import android.util.AtomicFile;
import android.util.Slog;
import com.android.internal.R;
@@ -35,6 +35,7 @@
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -42,52 +43,27 @@
import java.net.URL;
import java.security.cert.CertPathValidatorException;
import java.security.cert.X509Certificate;
-import java.time.Duration;
-import java.time.LocalDate;
import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeParseException;
+import java.time.OffsetDateTime;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
/** Manages the revocation status of certificates used in remote attestation. */
class CertificateRevocationStatusManager {
private static final String TAG = "AVF_CRL";
// Must be unique within system server
private static final int JOB_ID = 1737671340;
- private static final String REVOCATION_STATUS_FILE_NAME = "certificate_revocation_status.txt";
- private static final String REVOCATION_STATUS_FILE_FIELD_DELIMITER = ",";
+ private static final String REVOCATION_LIST_FILE_NAME = "certificate_revocation_list.json";
+ @VisibleForTesting static final int MAX_OFFLINE_REVOCATION_LIST_AGE_DAYS = 30;
- /**
- * The number of days since last update for which a stored revocation status can be accepted.
- */
- @VisibleForTesting static final int MAX_DAYS_SINCE_LAST_CHECK = 30;
-
- @VisibleForTesting static final int NUM_HOURS_BEFORE_NEXT_CHECK = 24;
-
- /**
- * The number of days since issue date for an intermediary certificate to be considered fresh
- * and not require a revocation list check.
- */
- private static final int FRESH_INTERMEDIARY_CERT_DAYS = 70;
-
- /**
- * The expected number of days between a certificate's issue date and notBefore date. Used to
- * infer a certificate's issue date from its notBefore date.
- */
- private static final int DAYS_BETWEEN_ISSUE_AND_NOT_BEFORE_DATES = 2;
+ @VisibleForTesting static final int NUM_HOURS_BEFORE_NEXT_FETCH = 24;
private static final String TOP_LEVEL_JSON_PROPERTY_KEY = "entries";
private static final Object sFileLock = new Object();
private final Context mContext;
private final String mTestRemoteRevocationListUrl;
- private final File mTestRevocationStatusFile;
+ private final File mTestStoredRevocationListFile;
private final boolean mShouldScheduleJob;
CertificateRevocationStatusManager(Context context) {
@@ -98,29 +74,22 @@
CertificateRevocationStatusManager(
Context context,
String testRemoteRevocationListUrl,
- File testRevocationStatusFile,
+ File testStoredRevocationListFile,
boolean shouldScheduleJob) {
mContext = context;
mTestRemoteRevocationListUrl = testRemoteRevocationListUrl;
- mTestRevocationStatusFile = testRevocationStatusFile;
+ mTestStoredRevocationListFile = testStoredRevocationListFile;
mShouldScheduleJob = shouldScheduleJob;
}
/**
* Check the revocation status of the provided {@link X509Certificate}s.
*
- * <p>The provided certificates should have been validated and ordered from leaf to a
- * certificate issued by the trust anchor, per the convention specified in the javadoc of {@link
- * java.security.cert.CertPath}.
- *
* @param certificates List of certificates to be checked
* @throws CertPathValidatorException if the check failed
*/
void checkRevocationStatus(List<X509Certificate> certificates)
throws CertPathValidatorException {
- if (!needToCheckRevocationStatus(certificates)) {
- return;
- }
List<String> serialNumbers = new ArrayList<>();
for (X509Certificate certificate : certificates) {
String serialNumber = certificate.getSerialNumber().toString(16);
@@ -129,217 +98,124 @@
}
serialNumbers.add(serialNumber);
}
+ LocalDateTime now = LocalDateTime.now();
+ JSONObject revocationList;
try {
- if (isLastCheckedWithin(Duration.ofHours(NUM_HOURS_BEFORE_NEXT_CHECK), serialNumbers)) {
- Slog.d(
- TAG,
- "All certificates have been checked for revocation recently. No need to"
- + " check this time.");
+ if (getLastModifiedDateTime(getRevocationListFile())
+ .isAfter(now.minusHours(NUM_HOURS_BEFORE_NEXT_FETCH))) {
+ Slog.d(TAG, "CRL is fetched recently, do not fetch again.");
+ revocationList = getStoredRevocationList();
+ checkRevocationStatus(revocationList, serialNumbers);
return;
}
- } catch (IOException ignored) {
- // Proceed to check the revocation status
+ } catch (IOException | JSONException ignored) {
+ // Proceed to fetch the remote revocation list
}
try {
- JSONObject revocationList = fetchRemoteRevocationList();
- Map<String, Boolean> areCertificatesRevoked = new HashMap<>();
- for (String serialNumber : serialNumbers) {
- areCertificatesRevoked.put(serialNumber, revocationList.has(serialNumber));
- }
- updateLastRevocationCheckData(areCertificatesRevoked);
- for (Map.Entry<String, Boolean> entry : areCertificatesRevoked.entrySet()) {
- if (entry.getValue()) {
- throw new CertPathValidatorException(
- "Certificate " + entry.getKey() + " has been revoked.");
- }
- }
+ byte[] revocationListBytes = fetchRemoteRevocationListBytes();
+ silentlyStoreRevocationList(revocationListBytes);
+ revocationList = parseRevocationList(revocationListBytes);
+ checkRevocationStatus(revocationList, serialNumbers);
} catch (IOException | JSONException ex) {
Slog.d(TAG, "Fallback to check stored revocation status", ex);
if (ex instanceof IOException && mShouldScheduleJob) {
- scheduleJobToUpdateStoredDataWithRemoteRevocationList(serialNumbers);
- }
- for (X509Certificate certificate : certificates) {
- // Assume recently issued certificates are not revoked.
- if (isIssuedWithinDays(certificate, MAX_DAYS_SINCE_LAST_CHECK)) {
- String serialNumber = certificate.getSerialNumber().toString(16);
- serialNumbers.remove(serialNumber);
- }
+ scheduleJobToFetchRemoteRevocationJob();
}
try {
- if (!isLastCheckedWithin(
- Duration.ofDays(MAX_DAYS_SINCE_LAST_CHECK), serialNumbers)) {
- throw new CertPathValidatorException(
- "Unable to verify the revocation status of one of the certificates "
- + serialNumbers);
- }
- } catch (IOException ex2) {
+ revocationList = getStoredRevocationList();
+ checkRevocationStatus(revocationList, serialNumbers);
+ } catch (IOException | JSONException ex2) {
throw new CertPathValidatorException(
- "Unable to load stored revocation status", ex2);
+ "Unable to load or parse stored revocation status", ex2);
}
}
}
- private boolean isLastCheckedWithin(Duration lastCheckedWithin, List<String> serialNumbers)
- throws IOException {
- Map<String, LocalDateTime> lastRevocationCheckData = getLastRevocationCheckData();
+ private static void checkRevocationStatus(JSONObject revocationList, List<String> serialNumbers)
+ throws CertPathValidatorException {
for (String serialNumber : serialNumbers) {
- if (!lastRevocationCheckData.containsKey(serialNumber)
- || lastRevocationCheckData
- .get(serialNumber)
- .isBefore(LocalDateTime.now().minus(lastCheckedWithin))) {
- return false;
+ if (revocationList.has(serialNumber)) {
+ throw new CertPathValidatorException(
+ "Certificate has been revoked: " + serialNumber);
}
}
- return true;
}
- private static boolean needToCheckRevocationStatus(
- List<X509Certificate> certificatesOrderedLeafFirst) {
- if (certificatesOrderedLeafFirst.isEmpty()) {
- return false;
+ private JSONObject getStoredRevocationList() throws IOException, JSONException {
+ File offlineRevocationListFile = getRevocationListFile();
+ if (!offlineRevocationListFile.exists()
+ || isRevocationListExpired(offlineRevocationListFile)) {
+ throw new FileNotFoundException("Offline copy does not exist or has expired.");
}
- // A certificate isn't revoked when it is first issued, so we treat it as checked on its
- // issue date.
- if (!isIssuedWithinDays(certificatesOrderedLeafFirst.get(0), MAX_DAYS_SINCE_LAST_CHECK)) {
- return true;
- }
- for (int i = 1; i < certificatesOrderedLeafFirst.size(); i++) {
- if (!isIssuedWithinDays(
- certificatesOrderedLeafFirst.get(i), FRESH_INTERMEDIARY_CERT_DAYS)) {
- return true;
+ synchronized (sFileLock) {
+ try (FileInputStream inputStream = new FileInputStream(offlineRevocationListFile)) {
+ return parseRevocationList(inputStream.readAllBytes());
}
}
- return false;
}
- private static boolean isIssuedWithinDays(X509Certificate certificate, int days) {
- LocalDate notBeforeDate =
- LocalDate.ofInstant(certificate.getNotBefore().toInstant(), ZoneId.systemDefault());
- LocalDate expectedIssueData =
- notBeforeDate.plusDays(DAYS_BETWEEN_ISSUE_AND_NOT_BEFORE_DATES);
- return LocalDate.now().minusDays(days + 1).isBefore(expectedIssueData);
+ private boolean isRevocationListExpired(File offlineRevocationListFile) {
+ LocalDateTime acceptableLastModifiedDate =
+ LocalDateTime.now().minusDays(MAX_OFFLINE_REVOCATION_LIST_AGE_DAYS);
+ LocalDateTime lastModifiedDate = getLastModifiedDateTime(offlineRevocationListFile);
+ return lastModifiedDate.isBefore(acceptableLastModifiedDate);
}
- void updateLastRevocationCheckDataForAllPreviouslySeenCertificates(
- JSONObject revocationList, Collection<String> otherCertificatesToCheck) {
- Set<String> allCertificatesToCheck = new HashSet<>(otherCertificatesToCheck);
- try {
- allCertificatesToCheck.addAll(getLastRevocationCheckData().keySet());
- } catch (IOException ex) {
- Slog.e(TAG, "Unable to update last check date of stored data.", ex);
- }
- Map<String, Boolean> areCertificatesRevoked = new HashMap<>();
- for (String serialNumber : allCertificatesToCheck) {
- areCertificatesRevoked.put(serialNumber, revocationList.has(serialNumber));
- }
- updateLastRevocationCheckData(areCertificatesRevoked);
+ private static LocalDateTime getLastModifiedDateTime(File file) {
+ // if the file does not exist, file.lastModified() returns 0, so this method returns the
+ // epoch time
+ return LocalDateTime.ofEpochSecond(
+ file.lastModified() / 1000, 0, OffsetDateTime.now().getOffset());
}
/**
- * Update the last revocation check data stored on this device.
+ * Store the provided bytes to the local revocation list file.
*
- * @param areCertificatesRevoked A Map whose keys are certificate serial numbers and values are
- * whether that certificate has been revoked
+ * <p>This method does not throw an exception even if it fails to store the bytes.
+ *
+ * <p>This method internally synchronize file access with other methods in this class.
+ *
+ * @param revocationListBytes The bytes to store to the local revocation list file.
*/
- void updateLastRevocationCheckData(Map<String, Boolean> areCertificatesRevoked) {
- LocalDateTime now = LocalDateTime.now();
+ void silentlyStoreRevocationList(byte[] revocationListBytes) {
synchronized (sFileLock) {
- Map<String, LocalDateTime> lastRevocationCheckData;
+ AtomicFile atomicRevocationListFile = new AtomicFile(getRevocationListFile());
+ FileOutputStream fileOutputStream = null;
try {
- lastRevocationCheckData = getLastRevocationCheckData();
+ fileOutputStream = atomicRevocationListFile.startWrite();
+ fileOutputStream.write(revocationListBytes);
+ atomicRevocationListFile.finishWrite(fileOutputStream);
+ Slog.d(TAG, "Successfully stored revocation list.");
} catch (IOException ex) {
- Slog.e(TAG, "Unable to updateLastRevocationCheckData", ex);
- return;
- }
- for (Map.Entry<String, Boolean> entry : areCertificatesRevoked.entrySet()) {
- if (entry.getValue()) {
- lastRevocationCheckData.remove(entry.getKey());
- } else {
- lastRevocationCheckData.put(entry.getKey(), now);
- }
- }
- storeLastRevocationCheckData(lastRevocationCheckData);
- }
- }
-
- Map<String, LocalDateTime> getLastRevocationCheckData() throws IOException {
- Map<String, LocalDateTime> data = new HashMap<>();
- File dataFile = getLastRevocationCheckDataFile();
- synchronized (sFileLock) {
- if (!dataFile.exists()) {
- return data;
- }
- String dataString;
- try (FileInputStream in = new FileInputStream(dataFile)) {
- dataString = new String(in.readAllBytes(), UTF_8);
- }
- for (String line : dataString.split(System.lineSeparator())) {
- String[] elements = line.split(REVOCATION_STATUS_FILE_FIELD_DELIMITER);
- if (elements.length != 2) {
- continue;
- }
- try {
- data.put(elements[0], LocalDateTime.parse(elements[1]));
- } catch (DateTimeParseException ex) {
- Slog.e(
- TAG,
- "Unable to parse last checked LocalDateTime from file. Deleting the"
- + " potentially corrupted file.",
- ex);
- dataFile.delete();
- return data;
+ Slog.e(TAG, "Failed to store the certificate revocation list.", ex);
+ // this happens when fileOutputStream.write fails
+ if (fileOutputStream != null) {
+ atomicRevocationListFile.failWrite(fileOutputStream);
}
}
}
- return data;
}
- @VisibleForTesting
- void storeLastRevocationCheckData(Map<String, LocalDateTime> lastRevocationCheckData) {
- StringBuilder dataStringBuilder = new StringBuilder();
- for (Map.Entry<String, LocalDateTime> entry : lastRevocationCheckData.entrySet()) {
- dataStringBuilder
- .append(entry.getKey())
- .append(REVOCATION_STATUS_FILE_FIELD_DELIMITER)
- .append(entry.getValue())
- .append(System.lineSeparator());
+ private File getRevocationListFile() {
+ if (mTestStoredRevocationListFile != null) {
+ return mTestStoredRevocationListFile;
}
- synchronized (sFileLock) {
- try (FileOutputStream fileOutputStream =
- new FileOutputStream(getLastRevocationCheckDataFile())) {
- fileOutputStream.write(dataStringBuilder.toString().getBytes(UTF_8));
- Slog.d(TAG, "Successfully stored revocation status data.");
- } catch (IOException ex) {
- Slog.e(TAG, "Failed to store revocation status data.", ex);
- }
- }
+ return new File(Environment.getDataSystemDirectory(), REVOCATION_LIST_FILE_NAME);
}
- private File getLastRevocationCheckDataFile() {
- if (mTestRevocationStatusFile != null) {
- return mTestRevocationStatusFile;
- }
- return new File(Environment.getDataSystemDirectory(), REVOCATION_STATUS_FILE_NAME);
- }
-
- private void scheduleJobToUpdateStoredDataWithRemoteRevocationList(List<String> serialNumbers) {
+ private void scheduleJobToFetchRemoteRevocationJob() {
JobScheduler jobScheduler = mContext.getSystemService(JobScheduler.class);
if (jobScheduler == null) {
Slog.e(TAG, "Unable to get job scheduler.");
return;
}
Slog.d(TAG, "Scheduling job to fetch remote CRL.");
- PersistableBundle extras = new PersistableBundle();
- extras.putStringArray(
- UpdateCertificateRevocationStatusJobService.EXTRA_KEY_CERTIFICATES_TO_CHECK,
- serialNumbers.toArray(new String[0]));
jobScheduler.schedule(
new JobInfo.Builder(
JOB_ID,
new ComponentName(
mContext,
UpdateCertificateRevocationStatusJobService.class))
- .setExtras(extras)
.setRequiredNetwork(
new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
@@ -351,13 +227,11 @@
* Fetches the revocation list from the URL specified in
* R.string.vendor_required_attestation_revocation_list_url
*
- * @return The remote revocation list entries in a JSONObject
+ * @return The remote revocation list entries in a byte[].
* @throws CertPathValidatorException if the URL is not defined or is malformed.
* @throws IOException if the URL is valid but the fetch failed.
- * @throws JSONException if the revocation list content cannot be parsed
*/
- JSONObject fetchRemoteRevocationList()
- throws CertPathValidatorException, IOException, JSONException {
+ byte[] fetchRemoteRevocationListBytes() throws CertPathValidatorException, IOException {
String urlString = getRemoteRevocationListUrl();
if (urlString == null || urlString.isEmpty()) {
throw new CertPathValidatorException(
@@ -369,10 +243,13 @@
} catch (MalformedURLException ex) {
throw new CertPathValidatorException("Unable to parse the URL " + urlString, ex);
}
- byte[] revocationListBytes;
try (InputStream inputStream = url.openStream()) {
- revocationListBytes = inputStream.readAllBytes();
+ return inputStream.readAllBytes();
}
+ }
+
+ private JSONObject parseRevocationList(byte[] revocationListBytes)
+ throws IOException, JSONException {
JSONObject revocationListJson = new JSONObject(new String(revocationListBytes, UTF_8));
return revocationListJson.getJSONObject(TOP_LEVEL_JSON_PROPERTY_KEY);
}
diff --git a/services/core/java/com/android/server/security/UpdateCertificateRevocationStatusJobService.java b/services/core/java/com/android/server/security/UpdateCertificateRevocationStatusJobService.java
index 768c812..7d1a70e 100644
--- a/services/core/java/com/android/server/security/UpdateCertificateRevocationStatusJobService.java
+++ b/services/core/java/com/android/server/security/UpdateCertificateRevocationStatusJobService.java
@@ -20,17 +20,15 @@
import android.app.job.JobService;
import android.util.Slog;
-import org.json.JSONObject;
-
-import java.util.Arrays;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-/** A {@link JobService} that fetches the certificate revocation list from a remote location. */
+/**
+ * A {@link JobService} that fetches the certificate revocation list from a remote location and
+ * stores it locally.
+ */
public class UpdateCertificateRevocationStatusJobService extends JobService {
- static final String EXTRA_KEY_CERTIFICATES_TO_CHECK =
- "com.android.server.security.extra.CERTIFICATES_TO_CHECK";
private static final String TAG = "AVF_CRL";
private ExecutorService mExecutorService;
@@ -48,20 +46,12 @@
CertificateRevocationStatusManager certificateRevocationStatusManager =
new CertificateRevocationStatusManager(this);
Slog.d(TAG, "Starting to fetch remote CRL from job service.");
- JSONObject revocationList =
- certificateRevocationStatusManager.fetchRemoteRevocationList();
- String[] certificatesToCheckFromJobParams =
- params.getExtras().getStringArray(EXTRA_KEY_CERTIFICATES_TO_CHECK);
- if (certificatesToCheckFromJobParams == null) {
- Slog.e(TAG, "Extras not found: " + EXTRA_KEY_CERTIFICATES_TO_CHECK);
- return;
- }
- certificateRevocationStatusManager
- .updateLastRevocationCheckDataForAllPreviouslySeenCertificates(
- revocationList,
- Arrays.asList(certificatesToCheckFromJobParams));
+ byte[] revocationList =
+ certificateRevocationStatusManager.fetchRemoteRevocationListBytes();
+ certificateRevocationStatusManager.silentlyStoreRevocationList(
+ revocationList);
} catch (Throwable t) {
- Slog.e(TAG, "Unable to update the stored revocation status.", t);
+ Slog.e(TAG, "Unable to update the stored revocation list.", t);
}
jobFinished(params, false);
});
diff --git a/services/core/java/com/android/server/storage/ImmutableVolumeInfo.java b/services/core/java/com/android/server/storage/ImmutableVolumeInfo.java
index 9d60a57..0f8212e 100644
--- a/services/core/java/com/android/server/storage/ImmutableVolumeInfo.java
+++ b/services/core/java/com/android/server/storage/ImmutableVolumeInfo.java
@@ -136,4 +136,9 @@
public boolean isVisibleForWrite(int userId) {
return mVolumeInfo.isVisibleForWrite(userId);
}
+
+ @Override
+ public String toString() {
+ return mVolumeInfo.toString();
+ }
}
diff --git a/services/core/java/com/android/server/storage/WatchedVolumeInfo.java b/services/core/java/com/android/server/storage/WatchedVolumeInfo.java
index 4124cfb..94e52cd 100644
--- a/services/core/java/com/android/server/storage/WatchedVolumeInfo.java
+++ b/services/core/java/com/android/server/storage/WatchedVolumeInfo.java
@@ -203,4 +203,9 @@
public boolean isVisibleForWrite(int userId) {
return mVolumeInfo.isVisibleForWrite(userId);
}
+
+ @Override
+ public String toString() {
+ return mVolumeInfo.toString();
+ }
}
\ No newline at end of file
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperCropper.java b/services/core/java/com/android/server/wallpaper/WallpaperCropper.java
index b3e68a35..8e8455a 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperCropper.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperCropper.java
@@ -16,6 +16,8 @@
package com.android.server.wallpaper;
+import static android.app.WallpaperManager.ORIENTATION_LANDSCAPE;
+import static android.app.WallpaperManager.ORIENTATION_SQUARE_LANDSCAPE;
import static android.app.WallpaperManager.ORIENTATION_UNKNOWN;
import static android.app.WallpaperManager.getOrientation;
import static android.app.WallpaperManager.getRotatedOrientation;
@@ -28,6 +30,7 @@
import static com.android.server.wallpaper.WallpaperUtils.getWallpaperDir;
import static com.android.window.flags.Flags.multiCrop;
+import android.app.WallpaperManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.ImageDecoder;
@@ -821,4 +824,54 @@
}
}
}
+
+ /**
+ * Returns true if a wallpaper is compatible with a given display with ID, {@code displayId}.
+ *
+ * <p>A wallpaper is compatible with a display if any of the following are true
+ * <ol>the display is a default display</o>
+ * <ol>the wallpaper is a stock wallpaper</ol>
+ * <ol>the wallpaper size is at least 3/4 of the display resolution and, in landscape displays,
+ * the wallpaper has an aspect ratio of at least 11:13.</ol>
+ */
+ @VisibleForTesting
+ boolean isWallpaperCompatibleForDisplay(int displayId, WallpaperData wallpaperData) {
+ if (displayId == DEFAULT_DISPLAY) {
+ return true;
+ }
+
+ File wallpaperFile = wallpaperData.getWallpaperFile();
+ if (!wallpaperFile.exists()) {
+ // Assumption: Stock wallpaper is suitable for all display sizes.
+ return true;
+ }
+
+ DisplayInfo displayInfo = mWallpaperDisplayHelper.getDisplayInfo(displayId);
+ Point displaySize = new Point(displayInfo.logicalWidth, displayInfo.logicalHeight);
+ int displayOrientation = WallpaperManager.getOrientation(displaySize);
+
+ Point wallpaperImageSize = new Point(
+ (int) Math.ceil(wallpaperData.cropHint.width() / wallpaperData.mSampleSize),
+ (int) Math.ceil(wallpaperData.cropHint.height() / wallpaperData.mSampleSize));
+ if (wallpaperImageSize.equals(0, 0)) {
+ BitmapFactory.Options options = new BitmapFactory.Options();
+ options.inJustDecodeBounds = true;
+ BitmapFactory.decodeFile(wallpaperFile.getAbsolutePath(), options);
+ wallpaperImageSize.set(options.outWidth, options.outHeight);
+ }
+
+ double maxDisplayToImageRatio = Math.max((double) displaySize.x / wallpaperImageSize.x,
+ (double) displaySize.y / wallpaperImageSize.y);
+ if (maxDisplayToImageRatio > 1.5) {
+ return false;
+ }
+
+ // For displays in landscape, we only support images with an aspect ratio >= 11:13
+ if (displayOrientation == ORIENTATION_LANDSCAPE) {
+ return ((double) wallpaperImageSize.x / wallpaperImageSize.y) >= 11.0 / 13;
+ }
+
+ // For other orientations, we don't enforce any aspect ratio.
+ return true;
+ }
}
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 69b2b9b..d620e98 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -118,7 +118,6 @@
import android.system.ErrnoException;
import android.system.Os;
import android.text.TextUtils;
-import android.util.ArraySet;
import android.util.EventLog;
import android.util.IntArray;
import android.util.Slog;
@@ -161,7 +160,6 @@
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
-import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -743,10 +741,8 @@
final WallpaperDisplayHelper mWallpaperDisplayHelper;
final WallpaperCropper mWallpaperCropper;
- // TODO(b/384519749): Remove this set after we introduce the aspect ratio check.
- private final Set<Integer> mWallpaperCompatibleDisplaysForTest = new ArraySet<>();
-
- private boolean isWallpaperCompatibleForDisplay(int displayId, WallpaperConnection connection) {
+ @VisibleForTesting
+ boolean isWallpaperCompatibleForDisplay(int displayId, WallpaperConnection connection) {
if (connection == null) {
return false;
}
@@ -757,26 +753,14 @@
// Image wallpaper
if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) {
- // TODO(b/384519749): check display's resolution and image wallpaper cropped image
- // aspect ratio.
- return displayId == DEFAULT_DISPLAY
- || mWallpaperCompatibleDisplaysForTest.contains(displayId);
+ return mWallpaperCropper.isWallpaperCompatibleForDisplay(displayId,
+ connection.mWallpaper);
}
// When enableConnectedDisplaysWallpaper is off, we assume the image wallpaper supports all
// usable displays.
return true;
}
- @VisibleForTesting
- void addWallpaperCompatibleDisplayForTest(int displayId) {
- mWallpaperCompatibleDisplaysForTest.add(displayId);
- }
-
- @VisibleForTesting
- void removeWallpaperCompatibleDisplayForTest(int displayId) {
- mWallpaperCompatibleDisplaysForTest.remove(displayId);
- }
-
private void updateFallbackConnection(int clientUid) {
if (mLastWallpaper == null || mFallbackWallpaper == null) return;
final WallpaperConnection systemConnection = mLastWallpaper.connection;
@@ -844,7 +828,7 @@
// `which` flag.
DisplayConnector fallbackConnector =
mFallbackWallpaper.connection.getDisplayConnectorOrCreate(displayId);
- if (fallbackConnector != null && fallbackConnector.mEngine != null) {
+ if (fallbackConnector != null) {
fallbackConnector.mWhich = which;
fallbackConnector.connectLocked(mFallbackWallpaper.connection,
mFallbackWallpaper);
diff --git a/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java b/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java
index 15c0789..3535a96 100644
--- a/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java
+++ b/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java
@@ -36,8 +36,7 @@
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Rect;
-
-import com.android.window.flags.Flags;
+import android.window.DesktopModeFlags;
/**
* Encapsulate app compat policy logic related to aspect ratio.
@@ -298,7 +297,8 @@
// Camera compat mode is an exception to this, where the activity is letterboxed
// to an aspect ratio commonly found on phones, e.g. 16:9, to avoid issues like
// stretching of the camera preview.
- || (Flags.ignoreAspectRatioRestrictionsForResizeableFreeformActivities()
+ || (DesktopModeFlags
+ .IGNORE_ASPECT_RATIO_RESTRICTIONS_FOR_RESIZEABLE_FREEFORM_ACTIVITIES.isTrue()
&& task.getWindowingMode() == WINDOWING_MODE_FREEFORM
&& !mActivityRecord.shouldCreateAppCompatDisplayInsets()
&& !AppCompatCameraPolicy.shouldCameraCompatControlAspectRatio(
diff --git a/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java b/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java
index 47d30c9..5eed5470 100644
--- a/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java
+++ b/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java
@@ -23,6 +23,7 @@
import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA;
import static android.content.pm.ActivityInfo.OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA;
import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION;
+import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION;
import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH;
import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE;
import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE;
@@ -32,6 +33,7 @@
import static com.android.server.wm.AppCompatUtils.isChangeEnabled;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import com.android.server.wm.utils.OptPropFactory;
import com.android.window.flags.Flags;
@@ -60,6 +62,8 @@
private final OptPropFactory.OptProp mCameraCompatEnableRefreshViaPauseOptProp;
@NonNull
private final OptPropFactory.OptProp mCameraCompatAllowForceRotationOptProp;
+ @Nullable
+ private final OptPropFactory.OptProp mCameraCompatAllowOrientationTreatmentOptProp;
AppCompatCameraOverrides(@NonNull ActivityRecord activityRecord,
@NonNull AppCompatConfiguration appCompatConfiguration,
@@ -80,6 +84,10 @@
mCameraCompatAllowForceRotationOptProp = optPropBuilder.create(
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION,
isCameraCompatTreatmentEnabled);
+ mCameraCompatAllowOrientationTreatmentOptProp =
+ Flags.enableCameraCompatForDesktopWindowingOptOut() ? optPropBuilder.create(
+ PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION,
+ isCameraCompatTreatmentEnabled) : null;
}
/**
@@ -168,10 +176,31 @@
* </ul>
*/
boolean shouldApplyFreeformTreatmentForCameraCompat() {
- return Flags.enableCameraCompatForDesktopWindowing() && (isChangeEnabled(mActivityRecord,
- OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT)
- || mActivityRecord.mWmService.mAppCompatConfiguration
- .isCameraCompatFreeformWindowingTreatmentEnabled());
+ return Flags.enableCameraCompatForDesktopWindowing()
+ && (shouldEnableCameraCompatFreeformTreatmentForApp()
+ || shouldEnableCameraCompatFreeformTreatmentForAllApps());
+ }
+
+ private boolean shouldEnableCameraCompatFreeformTreatmentForApp() {
+ if (mCameraCompatAllowOrientationTreatmentOptProp != null) {
+ return mCameraCompatAllowOrientationTreatmentOptProp
+ .shouldEnableWithOptOutOverrideAndProperty(isChangeEnabled(mActivityRecord,
+ OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT));
+ } else {
+ return isChangeEnabled(mActivityRecord,
+ OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT);
+ }
+ }
+
+ /**
+ * Returns whether camera compat treatment should be enabled for all apps targeted for treatment
+ * (usually fixed-orientation apps).
+ *
+ * <p>This can be enabled via adb only.
+ */
+ private boolean shouldEnableCameraCompatFreeformTreatmentForAllApps() {
+ return mActivityRecord.mWmService.mAppCompatConfiguration
+ .isCameraCompatFreeformWindowingTreatmentEnabled();
}
boolean isOverrideOrientationOnlyForCameraEnabled() {
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 9353ced..214a3a1 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -831,20 +831,27 @@
return false;
}
- // When switching the app task, we keep the IME window visibility for better
- // transitioning experiences.
- // However, in case IME created a child window or the IME selection dialog without
- // dismissing during the task switching to keep the window focus because IME window has
- // higher window hierarchy, we don't give it focus if the next IME layering target
- // doesn't request IME visible.
- if (w.mIsImWindow && w.isChildWindow() && (mImeLayeringTarget == null
- || !mImeLayeringTarget.isRequestedVisible(ime()))) {
- return false;
- }
- if (w.mAttrs.type == TYPE_INPUT_METHOD_DIALOG && mImeLayeringTarget != null
- && !(mImeLayeringTarget.isRequestedVisible(ime())
- && mImeLayeringTarget.isVisibleRequested())) {
- return false;
+ // IME windows remain visibleRequested while switching apps to maintain a smooth animation.
+ // This persists until the new app is focused, so they can be visibleRequested despite not
+ // being visible to the user (i.e. occluded). These rank higher in the window hierarchy than
+ // app windows, so they will always be considered first. To avoid having the focus stuck,
+ // an IME window (child or not) cannot be focused if the IME parent is not visible. However,
+ // child windows also require the IME to be visible in the current app.
+ if (w.mIsImWindow) {
+ final boolean imeParentVisible = mInputMethodSurfaceParentWindow != null
+ && mInputMethodSurfaceParentWindow.isVisibleRequested();
+ if (!imeParentVisible) {
+ ProtoLog.v(WM_DEBUG_FOCUS, "findFocusedWindow: IME window not focusable as"
+ + " IME parent is not visible");
+ return false;
+ }
+
+ if (w.isChildWindow()
+ && !getInsetsStateController().getImeSourceProvider().isImeShowing()) {
+ ProtoLog.v(WM_DEBUG_FOCUS, "findFocusedWindow: IME child window not focusable as"
+ + " IME is not visible");
+ return false;
+ }
}
final ActivityRecord activity = w.mActivityRecord;
diff --git a/services/core/java/com/android/server/wm/InsetsPolicy.java b/services/core/java/com/android/server/wm/InsetsPolicy.java
index b4d55a1..5c6695f 100644
--- a/services/core/java/com/android/server/wm/InsetsPolicy.java
+++ b/services/core/java/com/android/server/wm/InsetsPolicy.java
@@ -113,25 +113,33 @@
abortTransient();
}
mFocusedWin = focusedWin;
+ final @InsetsType int[] requestedVisibleTypes =
+ {focusedWin != null ? focusedWin.getRequestedVisibleTypes() : 0};
final WindowState notificationShade = mPolicy.getNotificationShade();
final WindowState topApp = mPolicy.getTopFullscreenOpaqueWindow();
final InsetsControlTarget statusControlTarget =
- getStatusControlTarget(focusedWin, false /* fake */);
+ getStatusControlTarget(focusedWin, false /* fake */, requestedVisibleTypes);
mFakeStatusControlTarget = statusControlTarget == mTransientControlTarget
- ? getStatusControlTarget(focusedWin, true /* fake */)
+ ? getStatusControlTarget(focusedWin, true /* fake */, requestedVisibleTypes)
: statusControlTarget == notificationShade
- ? getStatusControlTarget(topApp, true /* fake */)
+ ? getStatusControlTarget(topApp, true /* fake */, requestedVisibleTypes)
: null;
final InsetsControlTarget navControlTarget =
- getNavControlTarget(focusedWin, false /* fake */);
+ getNavControlTarget(focusedWin, false /* fake */, requestedVisibleTypes);
mFakeNavControlTarget = navControlTarget == mTransientControlTarget
- ? getNavControlTarget(focusedWin, true /* fake */)
+ ? getNavControlTarget(focusedWin, true /* fake */, requestedVisibleTypes)
: navControlTarget == notificationShade
- ? getNavControlTarget(topApp, true /* fake */)
+ ? getNavControlTarget(topApp, true /* fake */, requestedVisibleTypes)
: null;
mStateController.onBarControlTargetChanged(
statusControlTarget, mFakeStatusControlTarget,
navControlTarget, mFakeNavControlTarget);
+
+ if (statusControlTarget == mDisplayContent.mRemoteInsetsControlTarget
+ && navControlTarget == mDisplayContent.mRemoteInsetsControlTarget) {
+ notifyRemoteInsetsController(focusedWin, requestedVisibleTypes[0]);
+ }
+
mStatusBar.updateVisibility(statusControlTarget, Type.statusBars());
mNavBar.updateVisibility(navControlTarget, Type.navigationBars());
}
@@ -182,12 +190,12 @@
@VisibleForTesting
InsetsControlTarget getTransientControlTarget() {
- return mTransientControlTarget;
+ return mTransientControlTarget;
}
@VisibleForTesting
InsetsControlTarget getPermanentControlTarget() {
- return mPermanentControlTarget;
+ return mPermanentControlTarget;
}
void hideTransient() {
@@ -259,7 +267,7 @@
* modes.
*
* @param target the target on which the policy is applied
- * @param state the input inset state containing all the sources
+ * @param state the input inset state containing all the sources
* @return The state stripped of the necessary information.
*/
InsetsState enforceInsetsPolicyForTarget(WindowState target, InsetsState state) {
@@ -461,7 +469,7 @@
mStateController.getFakeControllingTypes(caller);
final @InsetsType int abortTypes =
(fakeControllingTypes & caller.getRequestedVisibleTypes())
- | (isImeVisible ? Type.navigationBars() : 0);
+ | (isImeVisible ? Type.navigationBars() : 0);
mShowingTransientTypes &= ~abortTypes;
if (abortTypes != 0) {
mDisplayContent.setLayoutNeeded();
@@ -496,6 +504,18 @@
}
private @Nullable InsetsControlTarget getStatusControlTarget(@Nullable WindowState focusedWin,
+ boolean fake, @InsetsType int[] requestedVisibleTypes) {
+ final InsetsControlTarget target = getStatusControlTargetInner(focusedWin, fake);
+ if (remoteInsetsControllerControlsSystemBars(target)) {
+ requestedVisibleTypes[0] = (requestedVisibleTypes[0] & ~Type.statusBars()) | (
+ target.getRequestedVisibleTypes() & Type.statusBars());
+ return mDisplayContent.mRemoteInsetsControlTarget;
+ }
+ return target;
+ }
+
+ private @Nullable InsetsControlTarget getStatusControlTargetInner(
+ @Nullable WindowState focusedWin,
boolean fake) {
if (!fake && isTransient(Type.statusBars())) {
return mTransientControlTarget;
@@ -521,17 +541,7 @@
&& (notificationShade == null || !notificationShade.canReceiveKeys())) {
// Non-fullscreen focused window should not break the state that the top-fullscreen-app
// window hides status bar, unless the notification shade can receive keys.
- if (remoteInsetsControllerControlsSystemBars(
- mPolicy.getTopFullscreenOpaqueWindow())) {
- notifyRemoteInsetsController(mPolicy.getTopFullscreenOpaqueWindow());
- return mDisplayContent.mRemoteInsetsControlTarget;
- } else {
- return mPolicy.getTopFullscreenOpaqueWindow();
- }
- }
- if (remoteInsetsControllerControlsSystemBars(focusedWin)) {
- notifyRemoteInsetsController(focusedWin);
- return mDisplayContent.mRemoteInsetsControlTarget;
+ return mPolicy.getTopFullscreenOpaqueWindow();
}
return focusedWin;
}
@@ -547,6 +557,17 @@
}
private @Nullable InsetsControlTarget getNavControlTarget(@Nullable WindowState focusedWin,
+ boolean fake, @InsetsType int[] requestedVisibleTypes) {
+ final InsetsControlTarget target = getNavControlTargetInner(focusedWin, fake);
+ if (remoteInsetsControllerControlsSystemBars(target)) {
+ requestedVisibleTypes[0] = (requestedVisibleTypes[0] & ~Type.navigationBars()) | (
+ target.getRequestedVisibleTypes() & Type.navigationBars());
+ return mDisplayContent.mRemoteInsetsControlTarget;
+ }
+ return target;
+ }
+
+ private @Nullable InsetsControlTarget getNavControlTargetInner(@Nullable WindowState focusedWin,
boolean fake) {
final WindowState imeWin = mDisplayContent.mInputMethodWindow;
if (imeWin != null && imeWin.isVisible() && !mHideNavBarForKeyboard) {
@@ -585,29 +606,21 @@
&& (notificationShade == null || !notificationShade.canReceiveKeys())) {
// Non-fullscreen focused window should not break the state that the top-fullscreen-app
// window hides navigation bar, unless the notification shade can receive keys.
- if (remoteInsetsControllerControlsSystemBars(
- mPolicy.getTopFullscreenOpaqueWindow())) {
- notifyRemoteInsetsController(mPolicy.getTopFullscreenOpaqueWindow());
- return mDisplayContent.mRemoteInsetsControlTarget;
- } else {
- return mPolicy.getTopFullscreenOpaqueWindow();
- }
- }
- if (remoteInsetsControllerControlsSystemBars(focusedWin)) {
- notifyRemoteInsetsController(focusedWin);
- return mDisplayContent.mRemoteInsetsControlTarget;
+ return mPolicy.getTopFullscreenOpaqueWindow();
}
return focusedWin;
}
- private void notifyRemoteInsetsController(@Nullable WindowState win) {
+ private void notifyRemoteInsetsController(@Nullable WindowState win,
+ @InsetsType int requestVisibleTypes) {
if (win == null) {
return;
}
ComponentName component = win.mActivityRecord != null
? win.mActivityRecord.mActivityComponent : null;
+
mDisplayContent.mRemoteInsetsControlTarget.topFocusedWindowChanged(
- component, win.getRequestedVisibleTypes());
+ component, requestVisibleTypes);
}
boolean areTypesForciblyShowing(@InsetsType int types) {
@@ -645,8 +658,8 @@
* Determines whether the remote insets controller should take control of system bars for all
* windows.
*/
- boolean remoteInsetsControllerControlsSystemBars(@Nullable WindowState focusedWin) {
- if (focusedWin == null) {
+ boolean remoteInsetsControllerControlsSystemBars(@Nullable InsetsControlTarget target) {
+ if (!(target instanceof WindowState win)) {
return false;
}
@@ -660,8 +673,8 @@
// If necessary, auto can control application windows when
// config_remoteInsetsControllerControlsSystemBars is set to true. This is useful in cases
// where we want to dictate system bar inset state for applications.
- return focusedWin.getAttrs().type >= WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW
- && focusedWin.getAttrs().type <= WindowManager.LayoutParams.LAST_APPLICATION_WINDOW;
+ return win.getAttrs().type >= WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW
+ && win.getAttrs().type <= WindowManager.LayoutParams.LAST_APPLICATION_WINDOW;
}
private void dispatchTransientSystemBarsVisibilityChanged(
@@ -708,7 +721,7 @@
private class BarWindow {
private final int mId;
- private @StatusBarManager.WindowVisibleState int mState =
+ private @StatusBarManager.WindowVisibleState int mState =
StatusBarManager.WINDOW_STATE_SHOWING;
BarWindow(int id) {
@@ -790,11 +803,13 @@
}
@Override
- public void notifyInsetsChanged() { }
+ public void notifyInsetsChanged() {
+ }
@Override
public void dispatchWindowInsetsAnimationPrepare(
- @NonNull WindowInsetsAnimation animation) { }
+ @NonNull WindowInsetsAnimation animation) {
+ }
@Override
public Bounds dispatchWindowInsetsAnimationStart(
@@ -812,7 +827,8 @@
@Override
public void dispatchWindowInsetsAnimationEnd(
- @NonNull WindowInsetsAnimation animation) { }
+ @NonNull WindowInsetsAnimation animation) {
+ }
@Override
public void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... p) {
@@ -834,7 +850,8 @@
}
@Override
- public void setSystemBarsAppearance(int appearance, int mask) { }
+ public void setSystemBarsAppearance(int appearance, int mask) {
+ }
@Override
public int getSystemBarsAppearance() {
@@ -842,7 +859,8 @@
}
@Override
- public void setSystemBarsBehavior(int behavior) { }
+ public void setSystemBarsBehavior(int behavior) {
+ }
@Override
public int getSystemBarsBehavior() {
@@ -855,10 +873,12 @@
}
@Override
- public void addOnPreDrawRunnable(Runnable r) { }
+ public void addOnPreDrawRunnable(Runnable r) {
+ }
@Override
- public void postInsetsAnimationCallback(Runnable r) { }
+ public void postInsetsAnimationCallback(Runnable r) {
+ }
@Override
public InputMethodManager getInputMethodManager() {
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index 9d18d6c..80095b3 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -1889,10 +1889,12 @@
// Even if the transient activity is occluded, defer pausing (addToStopping will still
// be called) it until the transient transition is done. So the current resuming
// activity won't need to wait for additional pause complete.
+ ProtoLog.d(WM_DEBUG_STATES, "startPausing: Skipping pause for transient "
+ + "resumed activity=%s", mResumedActivity);
return false;
}
- ProtoLog.d(WM_DEBUG_STATES, "startPausing: taskFrag =%s " + "mResumedActivity=%s", this,
+ ProtoLog.d(WM_DEBUG_STATES, "startPausing: taskFrag=%s mResumedActivity=%s", this,
mResumedActivity);
if (mPausingActivity != null) {
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index 5217a75..fd7d96a 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -1640,6 +1640,12 @@
mSyncEngine.setSyncMethod(syncId, BLASTSyncEngine.METHOD_BLAST);
}
mSyncEngine.addToSyncSet(syncId, target);
+ } else {
+ // If there is an existing sync group for the commit-at-end activity,
+ // enforce BLAST sync method for its windows, before resuming config dispatch.
+ target.forAllWindows(windowState -> {
+ windowState.mSyncMethodOverride = BLASTSyncEngine.METHOD_BLAST;
+ }, true /* traverseTopToBottom */);
}
// Reset surface state here (since it was skipped in buildFinishTransaction). Since
// we are resuming config to the "current" state, we have to calculate the matching
@@ -2026,23 +2032,18 @@
if (mOverrideOptions == null) {
return;
}
-
- if (!Flags.moveAnimationOptionsToChange()) {
- info.setAnimationOptions(mOverrideOptions);
- } else {
- final List<TransitionInfo.Change> changes = info.getChanges();
- for (int i = changes.size() - 1; i >= 0; --i) {
- final WindowContainer<?> container = mTargets.get(i).mContainer;
- if (container.asActivityRecord() != null
- || shouldApplyAnimOptionsToTask(container.asTask())) {
- changes.get(i).setAnimationOptions(mOverrideOptions);
- // TODO(b/295805497): Extract mBackgroundColor from AnimationOptions.
- changes.get(i).setBackgroundColor(mOverrideOptions.getBackgroundColor());
- } else if (shouldApplyAnimOptionsToEmbeddedTf(container.asTaskFragment())) {
- // We only override AnimationOptions because backgroundColor should be from
- // TaskFragmentAnimationParams.
- changes.get(i).setAnimationOptions(mOverrideOptions);
- }
+ final List<TransitionInfo.Change> changes = info.getChanges();
+ for (int i = changes.size() - 1; i >= 0; --i) {
+ final WindowContainer<?> container = mTargets.get(i).mContainer;
+ if (container.asActivityRecord() != null
+ || shouldApplyAnimOptionsToTask(container.asTask())) {
+ changes.get(i).setAnimationOptions(mOverrideOptions);
+ // TODO(b/295805497): Extract mBackgroundColor from AnimationOptions.
+ changes.get(i).setBackgroundColor(mOverrideOptions.getBackgroundColor());
+ } else if (shouldApplyAnimOptionsToEmbeddedTf(container.asTaskFragment())) {
+ // We only override AnimationOptions because backgroundColor should be from
+ // TaskFragmentAnimationParams.
+ changes.get(i).setAnimationOptions(mOverrideOptions);
}
}
updateActivityTargetForCrossProfileAnimation(info);
@@ -2933,9 +2934,6 @@
final AnimationOptions animOptionsForActivityTransition =
calculateAnimationOptionsForActivityTransition(type, sortedTargets);
- if (!Flags.moveAnimationOptionsToChange() && animOptionsForActivityTransition != null) {
- out.setAnimationOptions(animOptionsForActivityTransition);
- }
final ArraySet<WindowContainer> occludedAtEndContainers = new ArraySet<>();
// Convert all the resolved ChangeInfos into TransactionInfo.Change objects in order.
@@ -3059,27 +3057,25 @@
}
AnimationOptions animOptions = null;
- if (Flags.moveAnimationOptionsToChange()) {
- if (activityRecord != null && animOptionsForActivityTransition != null) {
- animOptions = animOptionsForActivityTransition;
- } else if (Flags.activityEmbeddingOverlayPresentationFlag()
- && isEmbeddedTaskFragment) {
- final TaskFragmentAnimationParams params = taskFragment.getAnimationParams();
- if (params.hasOverrideAnimation()) {
- // Only set AnimationOptions if there's any animation override.
- // We use separated field for backgroundColor, and
- // AnimationOptions#backgroundColor will be removed in long term.
- animOptions = AnimationOptions.makeCustomAnimOptions(
- taskFragment.getTask().getBasePackageName(),
- params.getOpenAnimationResId(), params.getChangeAnimationResId(),
- params.getCloseAnimationResId(), 0 /* backgroundColor */,
- false /* overrideTaskTransition */);
- animOptions.setUserId(taskFragment.getTask().mUserId);
- }
+ if (activityRecord != null && animOptionsForActivityTransition != null) {
+ animOptions = animOptionsForActivityTransition;
+ } else if (Flags.activityEmbeddingOverlayPresentationFlag()
+ && isEmbeddedTaskFragment) {
+ final TaskFragmentAnimationParams params = taskFragment.getAnimationParams();
+ if (params.hasOverrideAnimation()) {
+ // Only set AnimationOptions if there's any animation override.
+ // We use separated field for backgroundColor, and
+ // AnimationOptions#backgroundColor will be removed in long term.
+ animOptions = AnimationOptions.makeCustomAnimOptions(
+ taskFragment.getTask().getBasePackageName(),
+ params.getOpenAnimationResId(), params.getChangeAnimationResId(),
+ params.getCloseAnimationResId(), 0 /* backgroundColor */,
+ false /* overrideTaskTransition */);
+ animOptions.setUserId(taskFragment.getTask().mUserId);
}
- if (animOptions != null) {
- change.setAnimationOptions(animOptions);
- }
+ }
+ if (animOptions != null) {
+ change.setAnimationOptions(animOptions);
}
if (activityRecord != null) {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
index 5b7e7f1..e3b9fdb 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
@@ -1454,11 +1454,12 @@
}
for (int i = 0; i < mLocalPolicies.size(); i++) {
- Set<PolicyKey> localPolicies = new HashSet<>(
- mLocalPolicies.get(mLocalPolicies.keyAt(i)).keySet());
+ // New users are potentially added to mLocalPolicies during the loop body
+ // (see b/374511959).
+ int userId = mLocalPolicies.keyAt(i);
+ Set<PolicyKey> localPolicies = new HashSet<>(mLocalPolicies.get(userId).keySet());
for (PolicyKey policy : localPolicies) {
- PolicyState<?> policyState = mLocalPolicies.get(
- mLocalPolicies.keyAt(i)).get(policy);
+ PolicyState<?> policyState = mLocalPolicies.get(userId).get(policy);
if (policyState.getPoliciesSetByAdmins().containsKey(admin)) {
removeLocalPolicy(
policyState.getPolicyDefinition(), admin, mLocalPolicies.keyAt(i));
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/AndroidManifest.xml b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/AndroidManifest.xml
index 4552326..79dd129 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/AndroidManifest.xml
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/AndroidManifest.xml
@@ -16,7 +16,7 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.inputmethod.imetests">
+ package="com.android.inputmethodservice">
<!-- Permissions required for granting and logging -->
<uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
@@ -33,7 +33,7 @@
</application>
<!-- The "targetPackage" reference the instruments APK package, which is the SimpleTestIme.apk,
- while the test package is "com.android.inputmethod.imetests" (FrameworksImeTests.apk).-->
+ while the test package is "com.android.inputmethodservice" (FrameworksImeTests.apk).-->
<instrumentation
android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="com.android.apps.inputmethod.simpleime"
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/AndroidTest.xml b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/AndroidTest.xml
index 8e6954b..5fe5b23 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/AndroidTest.xml
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/AndroidTest.xml
@@ -34,14 +34,15 @@
<option name="test-tag" value="FrameworksImeTests" />
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
- <option name="package" value="com.android.inputmethod.imetests" />
+ <option name="package" value="com.android.inputmethodservice" />
<option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
<option name="hidden-api-checks" value="false"/>
</test>
- <!-- Collect the files in the dump directory for debugging -->
+ <!-- Collect output of DumpOnFailure -->
<metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
- <option name="directory-keys" value="/sdcard/FrameworksImeTests/" />
+ <option name="directory-keys" value="/data/user/0/com.android.apps.inputmethod.simpleime/files" />
<option name="collect-on-run-ended-only" value="true" />
+ <option name="clean-up" value="true" />
</metrics_collector>
</configuration>
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
index 8564666..6e16d29 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
@@ -43,6 +43,7 @@
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.provider.Settings;
+import android.server.wm.DumpOnFailure;
import android.server.wm.WindowManagerStateHelper;
import android.util.Log;
import android.view.View;
@@ -123,6 +124,9 @@
@Rule
public final TestName mName = new TestName();
+ @Rule
+ public final DumpOnFailure mDumpOnFailure = new DumpOnFailure();
+
private Instrumentation mInstrumentation;
private UiDevice mUiDevice;
private InputMethodManager mImm;
@@ -267,8 +271,8 @@
final var window = mInputMethodService.getWindow().getWindow();
assertWithMessage("IME window exists").that(window).isNotNull();
- assertWithMessage("IME window showing").that(
- window.getDecorView().getVisibility()).isEqualTo(View.VISIBLE);
+ eventually(() -> assertWithMessage("IME window showing").that(
+ window.getDecorView().getVisibility()).isEqualTo(View.VISIBLE));
mActivity.getWindow().getDecorView().setWindowInsetsAnimationCallback(
new WindowInsetsAnimation.Callback(
@@ -1284,8 +1288,13 @@
@NonNull
private UiObject2 getUiObject(@NonNull BySelector bySelector) {
+ final var preScreenshot = mInstrumentation.getUiAutomation().takeScreenshot();
+ mDumpOnFailure.dumpOnFailure("pre-getUiObject", preScreenshot);
final var uiObject = mUiDevice.wait(Until.findObject(bySelector), TIMEOUT_MS);
- assertWithMessage("UiObject with " + bySelector + " was found").that(uiObject).isNotNull();
+ mInstrumentation.waitForIdleSync();
+ final var postScreenshot = mInstrumentation.getUiAutomation().takeScreenshot();
+ mDumpOnFailure.dumpOnFailure("post-getUiObject", postScreenshot);
+ assertWithMessage("UiObject with " + bySelector + " was found").that(uiObject).isNull();
return uiObject;
}
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/ClientControllerTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/ClientControllerTest.java
index 9e3d9ec..d98a0d1 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/ClientControllerTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/ClientControllerTest.java
@@ -28,6 +28,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.annotation.NonNull;
import android.content.pm.PackageManagerInternal;
import android.os.Handler;
import android.os.IBinder;
@@ -55,8 +56,7 @@
private static final String SOME_PACKAGE_NAME = "some.package";
@Rule
- public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
- .setProvideMainThread(true).build();
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
@Mock
private PackageManagerInternal mMockPackageManagerInternal;
@@ -65,7 +65,7 @@
private IInputMethodClient mClient;
@Mock
- private IRemoteInputConnection mConnection;
+ private IRemoteInputConnection mFallbackConnection;
private Handler mHandler;
@@ -81,23 +81,25 @@
}
// TODO(b/322895594): No need to directly invoke create$ravenwood once b/322895594 is fixed.
- private IInputMethodClientInvoker createInvoker(IInputMethodClient client, Handler handler) {
+ @NonNull
+ private IInputMethodClientInvoker createInvoker(@NonNull IInputMethodClient client,
+ @NonNull Handler handler) {
return RavenwoodRule.isOnRavenwood()
- ? IInputMethodClientInvoker.create$ravenwood(client, handler) :
- IInputMethodClientInvoker.create(client, handler);
+ ? IInputMethodClientInvoker.create$ravenwood(client, handler)
+ : IInputMethodClientInvoker.create(client, handler);
}
@Test
public void testAddClient_cannotAddTheSameClientTwice() {
final var invoker = createInvoker(mClient, mHandler);
synchronized (ImfLock.class) {
- mController.addClient(invoker, mConnection, ANY_DISPLAY_ID, ANY_CALLER_UID,
+ mController.addClient(invoker, mFallbackConnection, ANY_DISPLAY_ID, ANY_CALLER_UID,
ANY_CALLER_PID);
SecurityException thrown = assertThrows(SecurityException.class,
() -> {
synchronized (ImfLock.class) {
- mController.addClient(invoker, mConnection, ANY_DISPLAY_ID,
+ mController.addClient(invoker, mFallbackConnection, ANY_DISPLAY_ID,
ANY_CALLER_UID, ANY_CALLER_PID);
}
});
@@ -111,9 +113,8 @@
public void testAddClient() throws Exception {
final var invoker = createInvoker(mClient, mHandler);
synchronized (ImfLock.class) {
- final var added = mController.addClient(invoker, mConnection, ANY_DISPLAY_ID,
- ANY_CALLER_UID,
- ANY_CALLER_PID);
+ final var added = mController.addClient(invoker, mFallbackConnection, ANY_DISPLAY_ID,
+ ANY_CALLER_UID, ANY_CALLER_PID);
verify(invoker.asBinder()).linkToDeath(any(IBinder.DeathRecipient.class), eq(0));
assertThat(mController.getClient(invoker.asBinder())).isSameInstanceAs(added);
@@ -127,8 +128,8 @@
ClientState added;
synchronized (ImfLock.class) {
mController.addClientControllerCallback(callback);
- added = mController.addClient(invoker, mConnection, ANY_DISPLAY_ID, ANY_CALLER_UID,
- ANY_CALLER_PID);
+ added = mController.addClient(invoker, mFallbackConnection, ANY_DISPLAY_ID,
+ ANY_CALLER_UID, ANY_CALLER_PID);
assertThat(mController.getClient(invoker.asBinder())).isSameInstanceAs(added);
assertThat(mController.removeClient(mClient)).isTrue();
}
@@ -141,14 +142,14 @@
@Test
public void testVerifyClientAndPackageMatch() {
final var invoker = createInvoker(mClient, mHandler);
- when(mMockPackageManagerInternal.isSameApp(eq(SOME_PACKAGE_NAME), /* flags= */
- anyLong(), eq(ANY_CALLER_UID), /* userId= */ anyInt())).thenReturn(true);
+ when(mMockPackageManagerInternal.isSameApp(eq(SOME_PACKAGE_NAME), anyLong() /* flags */,
+ eq(ANY_CALLER_UID), anyInt() /* userId */)).thenReturn(true);
synchronized (ImfLock.class) {
- mController.addClient(invoker, mConnection, ANY_DISPLAY_ID, ANY_CALLER_UID,
+ mController.addClient(invoker, mFallbackConnection, ANY_DISPLAY_ID, ANY_CALLER_UID,
ANY_CALLER_PID);
- assertThat(
- mController.verifyClientAndPackageMatch(mClient, SOME_PACKAGE_NAME)).isTrue();
+ assertThat(mController.verifyClientAndPackageMatch(mClient, SOME_PACKAGE_NAME))
+ .isTrue();
}
}
@@ -171,7 +172,7 @@
private ClientState mRemoved;
@Override
- public void onClientRemoved(ClientState removed) {
+ public void onClientRemoved(@NonNull ClientState removed) {
mRemoved = removed;
mLatch.countDown();
}
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java
index 3aeab09..05615f6 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java
@@ -196,7 +196,7 @@
@RequiresFlagsDisabled(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)
public void testApplyImeVisibility_hideImeFromTargetOnSecondaryDisplay() {
// Init a IME target client on the secondary display to show IME.
- mInputMethodManagerService.addClient(mMockInputMethodClient, mMockRemoteInputConnection,
+ mInputMethodManagerService.addClient(mMockInputMethodClient, mMockFallbackInputConnection,
10 /* selfReportedDisplayId */);
synchronized (ImfLock.class) {
setAttachedClientLocked(null);
@@ -283,7 +283,7 @@
softInputMode /* softInputMode */,
0 /* windowFlags */,
mEditorInfo /* editorInfo */,
- mMockRemoteInputConnection /* inputConnection */,
+ mMockFallbackInputConnection /* fallbackInputConnection */,
mMockRemoteAccessibilityInputConnection /* remoteAccessibilityInputConnection */,
mTargetSdkVersion /* unverifiedTargetSdkVersion */,
mUserId /* userId */,
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
index 6af4064..9ce86ca 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
@@ -116,7 +116,7 @@
@Mock protected IInputMethodClient mMockInputMethodClient;
@Mock protected IInputMethodSession mMockInputMethodSession;
@Mock protected IBinder mWindowToken;
- @Mock protected IRemoteInputConnection mMockRemoteInputConnection;
+ @Mock protected IRemoteInputConnection mMockFallbackInputConnection;
@Mock protected IRemoteAccessibilityInputConnection mMockRemoteAccessibilityInputConnection;
@Mock protected ImeOnBackInvokedDispatcher mMockImeOnBackInvokedDispatcher;
@Mock protected IInputMethodManager.Stub mMockIInputMethodManager;
@@ -300,7 +300,8 @@
lifecycle.onBootPhase(SystemService.PHASE_ACTIVITY_MANAGER_READY);
// Call InputMethodManagerService#addClient() as a preparation to start interacting with it.
- mInputMethodManagerService.addClient(mMockInputMethodClient, mMockRemoteInputConnection, 0);
+ mInputMethodManagerService.addClient(mMockInputMethodClient, mMockFallbackInputConnection,
+ 0 /* selfReportedDisplayId */);
createSessionForClient(mMockInputMethodClient);
}
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceWindowGainedFocusTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceWindowGainedFocusTest.java
index c958bd3..11abc94 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceWindowGainedFocusTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceWindowGainedFocusTest.java
@@ -316,7 +316,7 @@
softInputMode /* softInputMode */,
0 /* windowFlags */,
mEditorInfo /* editorInfo */,
- mMockRemoteInputConnection /* inputConnection */,
+ mMockFallbackInputConnection /* fallbackInputConnection */,
mMockRemoteAccessibilityInputConnection /* remoteAccessibilityInputConnection */,
mTargetSdkVersion /* unverifiedTargetSdkVersion */,
mUserId /* userId */,
diff --git a/services/tests/mockingservicestests/res/xml/expectedUserWakeupList_1.xml b/services/tests/mockingservicestests/res/xml/expectedUserWakeupList_1.xml
new file mode 100644
index 0000000..21e6dab
--- /dev/null
+++ b/services/tests/mockingservicestests/res/xml/expectedUserWakeupList_1.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2025 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.
+ -->
+<users version="1">
+ <user user_id="10" />
+ <user user_id="11" />
+</users>
\ No newline at end of file
diff --git a/services/tests/mockingservicestests/res/xml/expectedUserWakeupList_2.xml b/services/tests/mockingservicestests/res/xml/expectedUserWakeupList_2.xml
new file mode 100644
index 0000000..d0b371f
--- /dev/null
+++ b/services/tests/mockingservicestests/res/xml/expectedUserWakeupList_2.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2025 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.
+ -->
+<users version="1">
+ <user user_id="10" />
+</users>
\ No newline at end of file
diff --git a/services/tests/mockingservicestests/src/com/android/server/alarm/UserWakeupStoreTest.java b/services/tests/mockingservicestests/src/com/android/server/alarm/UserWakeupStoreTest.java
index 72883e2..240284a 100644
--- a/services/tests/mockingservicestests/src/com/android/server/alarm/UserWakeupStoreTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/alarm/UserWakeupStoreTest.java
@@ -23,15 +23,21 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import android.content.res.AssetManager;
+import android.content.res.XmlResourceParser;
import android.os.Environment;
import android.os.FileUtils;
import android.os.SystemClock;
+import android.util.Xml;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
import com.android.internal.os.BackgroundThread;
+import com.android.internal.util.XmlUtils;
+import com.android.modules.utils.TypedXmlPullParser;
import com.android.modules.utils.testing.ExtendedMockitoRule;
import org.junit.After;
@@ -40,8 +46,11 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
+import org.xmlpull.v1.XmlPullParserException;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.concurrent.ExecutorService;
@@ -55,6 +64,7 @@
private static final File TEST_SYSTEM_DIR = new File(InstrumentationRegistry
.getInstrumentation().getContext().getDataDir(), "alarmsTestDir");
private static final File ROOT_DIR = new File(TEST_SYSTEM_DIR, UserWakeupStore.ROOT_DIR_NAME);
+ private static final String USERS_FILE_NAME = "usersWithAlarmClocks.xml";
private ExecutorService mMockExecutorService = null;
UserWakeupStore mUserWakeupStore;
@@ -105,7 +115,7 @@
Collections.sort(userWakeups);
assertEquals(userIds, userWakeups);
- final File file = new File(ROOT_DIR , "usersWithAlarmClocks.xml");
+ final File file = new File(ROOT_DIR, USERS_FILE_NAME);
assertTrue(file.exists());
}
@@ -178,5 +188,47 @@
assertTrue(mUserWakeupStore.getWakeupTimeForUser(USER_ID_2) - realtime
< 3 * BUFFER_TIME_MS + USER_START_TIME_DEVIATION_LIMIT_MS);
}
- //TODO: b/330264023 - Add tests for I/O in usersWithAlarmClocks.xml.
+
+ @Test
+ public void testWriteWakeups_xmlIsOrdered() {
+ mUserWakeupStore.addUserWakeup(USER_ID_1, TEST_TIMESTAMP - 19_000);
+ mUserWakeupStore.addUserWakeup(USER_ID_2, TEST_TIMESTAMP - 7_000);
+ assertFileContentsMatchExpectedXml("res/xml/expectedUserWakeupList_1.xml");
+ }
+
+ @Test
+ public void testWriteWakeups_containsOneEntryPerUser() {
+ mUserWakeupStore.addUserWakeup(USER_ID_1, TEST_TIMESTAMP - 19_000);
+ mUserWakeupStore.addUserWakeup(USER_ID_1, TEST_TIMESTAMP - 7_000);
+ assertFileContentsMatchExpectedXml("res/xml/expectedUserWakeupList_2.xml");
+ }
+
+ private static void assertFileContentsMatchExpectedXml(String expectedContentsFile) {
+ final File actual = new File(ROOT_DIR, USERS_FILE_NAME);
+ AssetManager assetManager =
+ InstrumentationRegistry.getInstrumentation().getContext().getAssets();
+ try (FileInputStream actualFis = new FileInputStream(actual)) {
+ final TypedXmlPullParser actualParser = Xml.resolvePullParser(actualFis);
+ final XmlResourceParser expectedParser = assetManager.openXmlResourceParser(
+ expectedContentsFile);
+ for (XmlUtils.nextElement(expectedParser), XmlUtils.nextElement(actualParser);
+ actualParser.getEventType() != XmlResourceParser.END_DOCUMENT
+ && expectedParser.getEventType() != XmlResourceParser.END_DOCUMENT;
+ XmlUtils.nextElement(actualParser), XmlUtils.nextElement(expectedParser)) {
+ assertEquals("Event types differ ", expectedParser.getEventType(),
+ actualParser.getEventType());
+ for (int i = 0; i < expectedParser.getAttributeCount(); i++) {
+ assertEquals("Attribute names differ at index " + i,
+ expectedParser.getAttributeName(i), actualParser.getAttributeName(i));
+ assertEquals("Attribute values differ at index " + i,
+ expectedParser.getAttributeValue(i), actualParser.getAttributeValue(i));
+ }
+ }
+ // Ensure they are both at the end of document
+ assertEquals("One of the parsers has not reached the EOF",
+ expectedParser.getEventType(), actualParser.getEventType());
+ } catch (IOException | XmlPullParserException e) {
+ fail(e.getLocalizedMessage());
+ }
+ }
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/crashrecovery/AndroidTest.xml b/services/tests/mockingservicestests/src/com/android/server/crashrecovery/AndroidTest.xml
index 7b06ebe..5043c47 100644
--- a/services/tests/mockingservicestests/src/com/android/server/crashrecovery/AndroidTest.xml
+++ b/services/tests/mockingservicestests/src/com/android/server/crashrecovery/AndroidTest.xml
@@ -31,4 +31,9 @@
<option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
<option name="hidden-api-checks" value="false"/>
</test>
+
+ <!-- Only run this Tests if the Crashrecovery Mainline module is installed. -->
+ <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+ <option name="mainline-module-package-name" value="com.google.android.crashrecovery" />
+ </object>
</configuration>
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt
index b53dbc8..1b2ab27 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt
@@ -16,6 +16,7 @@
package com.android.server.pm
import android.app.AppOpsManager
+import android.app.AppOpsManagerInternal
import android.app.PropertyInvalidatedCache
import android.content.Context
import android.content.Intent
@@ -195,6 +196,7 @@
val componentResolver: ComponentResolver = mock()
val permissionManagerInternal: PermissionManagerServiceInternal = mock()
val appOpsManager: AppOpsManager = mock()
+ val appOpsManagerInternal: AppOpsManagerInternal = mock()
val incrementalManager: IncrementalManager = mock()
val platformCompat: PlatformCompat = mock()
val settings: Settings = mock()
@@ -286,6 +288,9 @@
whenever(mocks.injector.permissionManagerServiceInternal) {
mocks.permissionManagerInternal
}
+ whenever(mocks.injector.appOpsManagerInternal) {
+ mocks.appOpsManagerInternal
+ }
whenever(mocks.injector.incrementalManager).thenReturn(mocks.incrementalManager)
whenever(mocks.injector.compatibility).thenReturn(mocks.platformCompat)
whenever(mocks.injector.settings).thenReturn(mocks.settings)
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
index 360d6eb..6ad3df1 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
@@ -206,7 +206,7 @@
doNothing().when(mSpiedContext).sendBroadcastAsUser(any(), any(), any());
mockIsLowRamDevice(false);
- // Called when getting boot user. config_bootToHeadlessSystemUser is 0 by default.
+ // Called when getting boot user. config_hsumBootStrategy is 0 by default.
mSpyResources = spy(mSpiedContext.getResources());
when(mSpiedContext.getResources()).thenReturn(mSpyResources);
doReturn(0)
diff --git a/services/tests/mockingservicestests/src/com/android/server/rollback/AndroidTest.xml b/services/tests/mockingservicestests/src/com/android/server/rollback/AndroidTest.xml
index 635183c..6f6b017 100644
--- a/services/tests/mockingservicestests/src/com/android/server/rollback/AndroidTest.xml
+++ b/services/tests/mockingservicestests/src/com/android/server/rollback/AndroidTest.xml
@@ -31,4 +31,9 @@
<option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
<option name="hidden-api-checks" value="false"/>
</test>
+
+ <!-- Only run this Tests if the Crashrecovery Mainline module is installed. -->
+ <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+ <option name="mainline-module-package-name" value="com.google.android.crashrecovery" />
+ </object>
</configuration>
diff --git a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperCropperTest.java b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperCropperTest.java
index b53f6fb..49c37f1 100644
--- a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperCropperTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperCropperTest.java
@@ -16,6 +16,7 @@
package com.android.server.wallpaper;
+import static android.app.WallpaperManager.FLAG_SYSTEM;
import static android.app.WallpaperManager.ORIENTATION_LANDSCAPE;
import static android.app.WallpaperManager.ORIENTATION_UNKNOWN;
import static android.app.WallpaperManager.ORIENTATION_PORTRAIT;
@@ -23,13 +24,20 @@
import static android.app.WallpaperManager.ORIENTATION_SQUARE_PORTRAIT;
import static android.app.WallpaperManager.getOrientation;
import static android.app.WallpaperManager.getRotatedOrientation;
+import static android.os.UserHandle.USER_SYSTEM;
+import static android.view.Display.DEFAULT_DISPLAY;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static com.android.window.flags.Flags.FLAG_MULTI_CROP;
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.doAnswer;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
@@ -37,15 +45,29 @@
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.util.Log;
import android.util.SparseArray;
+import android.view.Display;
+import android.view.DisplayInfo;
import androidx.test.runner.AndroidJUnit4;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.dx.mockito.inline.extended.StaticMockitoSession;
+
+import org.junit.AfterClass;
import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.quality.Strictness;
+import java.io.File;
+import java.io.IOException;
import java.util.Comparator;
import java.util.List;
@@ -57,6 +79,7 @@
@RunWith(AndroidJUnit4.class)
@RequiresFlagsEnabled(FLAG_MULTI_CROP)
public class WallpaperCropperTest {
+ private static final String TAG = "WallpaperCropperTest";
@Mock
private WallpaperDisplayHelper mWallpaperDisplayHelper;
@@ -94,6 +117,8 @@
private static final List<List<Point>> ALL_FOLDABLE_DISPLAYS = List.of(
FOLDABLE_ONE, FOLDABLE_TWO, FOLDABLE_THREE, FOLDABLE_FOUR);
+ private static StaticMockitoSession sMockitoSession;
+
private SparseArray<Point> mDisplaySizes = new SparseArray<>();
private int mFolded = ORIENTATION_UNKNOWN;
private int mFoldedRotated = ORIENTATION_UNKNOWN;
@@ -103,12 +128,53 @@
private static final List<Integer> ALL_MODES = List.of(
WallpaperCropper.ADD, WallpaperCropper.REMOVE, WallpaperCropper.BALANCE);
+ private final SparseArray<File> mTempDirs = new SparseArray<>();
+
+ private final TemporaryFolder mFolder = new TemporaryFolder();
+
+ @Rule
+ public RuleChain rules = RuleChain.outerRule(mFolder);
+
+ @BeforeClass
+ public static void setUpClass() {
+ sMockitoSession = mockitoSession()
+ .strictness(Strictness.LENIENT)
+ .spyStatic(WallpaperUtils.class)
+ .startMocking();
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ if (sMockitoSession != null) {
+ sMockitoSession.finishMocking();
+ sMockitoSession = null;
+ }
+ }
+
@Before
public void setUp() {
initMocks(this);
+ ExtendedMockito.doAnswer(invocation -> {
+ int userId = (invocation.getArgument(0));
+ return getWallpaperTestDir(userId);
+ }).when(() -> WallpaperUtils.getWallpaperDir(anyInt()));
+
mWallpaperCropper = new WallpaperCropper(mWallpaperDisplayHelper);
}
+ private File getWallpaperTestDir(int userId) {
+ File tempDir = mTempDirs.get(userId);
+ if (tempDir == null) {
+ try {
+ tempDir = mFolder.newFolder(String.valueOf(userId));
+ mTempDirs.append(userId, tempDir);
+ } catch (IOException e) {
+ Log.e(TAG, "getWallpaperTestDir failed at userId= " + userId);
+ }
+ }
+ return tempDir;
+ }
+
private void setUpWithDisplays(List<Point> displaySizes) {
mDisplaySizes = new SparseArray<>();
displaySizes.forEach(size -> {
@@ -632,6 +698,134 @@
}
}
+ // Test isWallpaperCompatibleForDisplay always return true for the default display.
+ @Test
+ public void isWallpaperCompatibleForDisplay_defaultDisplay_returnTrue()
+ throws Exception {
+ DisplayInfo displayInfo = new DisplayInfo();
+ displayInfo.logicalWidth = 2560;
+ displayInfo.logicalHeight = 1044;
+ doReturn(displayInfo).when(mWallpaperDisplayHelper).getDisplayInfo(eq(DEFAULT_DISPLAY));
+ WallpaperData wallpaperData = createWallpaperData(/* isStockWallpaper = */ false,
+ new Point(100, 100));
+
+ assertThat(
+ mWallpaperCropper.isWallpaperCompatibleForDisplay(DEFAULT_DISPLAY,
+ wallpaperData)).isTrue();
+ }
+
+ // Test isWallpaperCompatibleForDisplay always return true for the stock wallpaper.
+ @Test
+ public void isWallpaperCompatibleForDisplay_stockWallpaper_returnTrue()
+ throws Exception {
+ final int displayId = 2;
+ DisplayInfo displayInfo = new DisplayInfo();
+ displayInfo.logicalWidth = 2560;
+ displayInfo.logicalHeight = 1044;
+ doReturn(displayInfo).when(mWallpaperDisplayHelper).getDisplayInfo(eq(displayId));
+ WallpaperData wallpaperData = createWallpaperData(/* isStockWallpaper = */ true,
+ new Point(100, 100));
+
+ assertThat(
+ mWallpaperCropper.isWallpaperCompatibleForDisplay(displayId,
+ wallpaperData)).isTrue();
+ }
+
+ // Test isWallpaperCompatibleForDisplay wallpaper is suitable for the display and wallpaper
+ // aspect ratio meets the hard-coded aspect ratio.
+ @Test
+ public void isWallpaperCompatibleForDisplay_wallpaperSizeSuitableForDisplayAndMeetAspectRatio_returnTrue()
+ throws Exception {
+ final int displayId = 2;
+ DisplayInfo displayInfo = new DisplayInfo();
+ displayInfo.logicalWidth = 2560;
+ displayInfo.logicalHeight = 1044;
+ doReturn(displayInfo).when(mWallpaperDisplayHelper).getDisplayInfo(eq(displayId));
+ WallpaperData wallpaperData = createWallpaperData(/* isStockWallpaper = */ false,
+ new Point(4000, 3000));
+
+ assertThat(
+ mWallpaperCropper.isWallpaperCompatibleForDisplay(displayId,
+ wallpaperData)).isTrue();
+ }
+
+ // Test isWallpaperCompatibleForDisplay wallpaper is not suitable for the display and wallpaper
+ // aspect ratio meets the hard-coded aspect ratio.
+ @Test
+ public void isWallpaperCompatibleForDisplay_wallpaperSizeNotSuitableForDisplayAndMeetAspectRatio_returnFalse()
+ throws Exception {
+ final int displayId = 2;
+ DisplayInfo displayInfo = new DisplayInfo();
+ displayInfo.logicalWidth = 2560;
+ displayInfo.logicalHeight = 1044;
+ doReturn(displayInfo).when(mWallpaperDisplayHelper).getDisplayInfo(eq(displayId));
+ WallpaperData wallpaperData = createWallpaperData(/* isStockWallpaper = */ false,
+ new Point(1000, 500));
+
+ assertThat(
+ mWallpaperCropper.isWallpaperCompatibleForDisplay(displayId,
+ wallpaperData)).isFalse();
+ }
+
+ // Test isWallpaperCompatibleForDisplay wallpaper is suitable for the display and wallpaper
+ // aspect ratio doesn't meet the hard-coded aspect ratio.
+ @Test
+ public void isWallpaperCompatibleForDisplay_wallpaperSizeSuitableForDisplayAndDoNotMeetAspectRatio_returnFalse()
+ throws Exception {
+ final int displayId = 2;
+ DisplayInfo displayInfo = new DisplayInfo();
+ displayInfo.logicalWidth = 2560;
+ displayInfo.logicalHeight = 1044;
+ doReturn(displayInfo).when(mWallpaperDisplayHelper).getDisplayInfo(eq(displayId));
+ WallpaperData wallpaperData = createWallpaperData(/* isStockWallpaper = */ false,
+ new Point(2000, 4000));
+
+ assertThat(
+ mWallpaperCropper.isWallpaperCompatibleForDisplay(displayId,
+ wallpaperData)).isFalse();
+ }
+
+ // Test isWallpaperCompatibleForDisplay, portrait display, wallpaper is suitable for the display
+ // and wallpaper aspect ratio doesn't meet the hard-coded aspect ratio.
+ @Test
+ public void isWallpaperCompatibleForDisplay_portraitDisplay_wallpaperSizeSuitableForDisplayAndMeetAspectRatio_returnTrue()
+ throws Exception {
+ final int displayId = 2;
+ DisplayInfo displayInfo = new DisplayInfo();
+ displayInfo.logicalWidth = 1044;
+ displayInfo.logicalHeight = 2560;
+ doReturn(displayInfo).when(mWallpaperDisplayHelper).getDisplayInfo(eq(displayId));
+ WallpaperData wallpaperData = createWallpaperData(/* isStockWallpaper = */ false,
+ new Point(2000, 4000));
+
+ assertThat(
+ mWallpaperCropper.isWallpaperCompatibleForDisplay(displayId,
+ wallpaperData)).isTrue();
+ }
+
+ private void mockDisplay(int displayId, Point displayResolution) {
+ final Display mockDisplay = mock(Display.class);
+ when(mockDisplay.getDisplayInfo(any(DisplayInfo.class))).thenAnswer(invocation -> {
+ DisplayInfo displayInfo = invocation.getArgument(0);
+ displayInfo.displayId = displayId;
+ displayInfo.logicalWidth = displayResolution.x;
+ displayInfo.logicalHeight = displayResolution.y;
+ return true;
+ });
+ }
+
+ private WallpaperData createWallpaperData(boolean isStockWallpaper, Point wallpaperSize)
+ throws Exception {
+ WallpaperData wallpaperData = new WallpaperData(USER_SYSTEM, FLAG_SYSTEM);
+ File wallpaperFile = wallpaperData.getWallpaperFile();
+ if (!isStockWallpaper) {
+ wallpaperFile.getParentFile().mkdirs();
+ wallpaperFile.createNewFile();
+ }
+ wallpaperData.cropHint.set(0, 0, wallpaperSize.x, wallpaperSize.y);
+ return wallpaperData;
+ }
+
private static Rect centerOf(Rect container, Point point) {
checkSubset(container, point);
int diffWidth = container.width() - point.x;
diff --git a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java
index 49f2e9d..bada337 100644
--- a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java
@@ -123,6 +123,7 @@
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;
+import java.util.Map;
/**
* Tests for the {@link WallpaperManagerService} class.
@@ -744,7 +745,9 @@
wallpaper.connection.mService = mockIWallpaperService;
// GIVEN there are two displays: DEFAULT_DISPLAY, 2
final int testDisplayId = 2;
- setUpDisplays(List.of(DEFAULT_DISPLAY, testDisplayId));
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ testDisplayId, true));
// WHEN display ID, 2, is ready.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
@@ -784,7 +787,9 @@
lockWallpaper.connection.mService = mockIWallpaperService;
// GIVEN there are two displays: DEFAULT_DISPLAY, 2
final int testDisplayId = 2;
- setUpDisplays(List.of(DEFAULT_DISPLAY, testDisplayId));
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ testDisplayId, true));
// WHEN display ID, 2, is ready.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
@@ -825,13 +830,15 @@
throws Exception {
final int testUserId = USER_SYSTEM;
mService.switchUser(testUserId, null);
+ mService.mLastWallpaper.connection.mWallpaper.cropHint.set(0, 0, 4000, 2250);
IWallpaperService mockIWallpaperService = mock(IWallpaperService.class);
mService.mFallbackWallpaper.connection.mService = mockIWallpaperService;
// GIVEN there are two displays: DEFAULT_DISPLAY, 2
final int testDisplayId = 2;
- setUpDisplays(List.of(DEFAULT_DISPLAY, testDisplayId));
- // GIVEN the wallpaper isn't compatible with display ID, 2
- mService.removeWallpaperCompatibleDisplayForTest(testDisplayId);
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ // Given the wallpaper is smaller thn the display resolution.
+ testDisplayId, false));
// WHEN display ID, 2, is ready.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
@@ -870,7 +877,10 @@
wallpaper.connection.mService = mockIWallpaperService;
// GIVEN there are two displays: DEFAULT_DISPLAY, 2
final int testDisplayId = 2;
- setUpDisplays(List.of(DEFAULT_DISPLAY, testDisplayId));
+ mService.mLastWallpaper.connection.mWallpaper.cropHint.set(0, 0, 4000, 2250);
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ testDisplayId, true));
// GIVEN wallpaper connections have been established for display ID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
@@ -908,7 +918,9 @@
lockWallpaper.connection.mService = mockIWallpaperService;
// GIVEN there are two displays: DEFAULT_DISPLAY, 2
final int testDisplayId = 2;
- setUpDisplays(List.of(DEFAULT_DISPLAY, testDisplayId));
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ testDisplayId, true));
// GIVEN wallpaper connections have been established for display ID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
@@ -942,9 +954,9 @@
mService.mFallbackWallpaper.connection.mService = mockIWallpaperService;
// GIVEN there are two displays: DEFAULT_DISPLAY, 2
final int testDisplayId = 2;
- setUpDisplays(List.of(DEFAULT_DISPLAY, testDisplayId));
- // GIVEN display ID, 2, is incompatible with the wallpaper.
- mService.removeWallpaperCompatibleDisplayForTest(testDisplayId);
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ testDisplayId, false));
// GIVEN wallpaper connections have been established for display ID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
@@ -991,7 +1003,9 @@
wallpaper.connection.mService = mockIWallpaperService;
// GIVEN there are two displays: DEFAULT_DISPLAY, 2
final int testDisplayId = 2;
- setUpDisplays(List.of(DEFAULT_DISPLAY, testDisplayId));
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ testDisplayId, true));
// GIVEN wallpaper connections have been established for displayID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
@@ -1025,7 +1039,9 @@
lockWallpaper.connection.mService = mockIWallpaperService;
// GIVEN there are two displays: DEFAULT_DISPLAY, 2
final int testDisplayId = 2;
- setUpDisplays(List.of(DEFAULT_DISPLAY, testDisplayId));
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ testDisplayId, true));
// GIVEN wallpaper connections have been established for displayID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
@@ -1053,12 +1069,14 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_CONNECTED_DISPLAYS_WALLPAPER)
public void deviceBooted_multiDisplays_shouldHaveExpectedConnections() {
+ final int testUserId = USER_SYSTEM;
final int incompatibleDisplayId = 2;
final int compatibleDisplayId = 3;
- setUpDisplays(List.of(DEFAULT_DISPLAY, incompatibleDisplayId, compatibleDisplayId));
- mService.removeWallpaperCompatibleDisplayForTest(incompatibleDisplayId);
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ compatibleDisplayId, true,
+ incompatibleDisplayId, false));
- final int testUserId = USER_SYSTEM;
// After reboot, a switch user triggers the wallpapers initialization.
mService.switchUser(testUserId, null);
@@ -1089,15 +1107,18 @@
public void setWallpaperComponent_multiDisplays_displayBecomeCompatible_shouldHaveExpectedConnections() {
final int display2 = 2;
final int display3 = 3;
- setUpDisplays(List.of(DEFAULT_DISPLAY, display2, display3));
- mService.removeWallpaperCompatibleDisplayForTest(display2);
final int testUserId = USER_SYSTEM;
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ display2, false,
+ display3, true));
+
mService.switchUser(testUserId, null);
+ doReturn(true).when(mService.mWallpaperCropper).isWallpaperCompatibleForDisplay(
+ eq(display2), any());
// Switch to a test wallpaper and then image wallpaper later to simulate a wallpaper change.
mService.setWallpaperComponent(TEST_WALLPAPER_COMPONENT, sContext.getOpPackageName(),
FLAG_SYSTEM | FLAG_LOCK, testUserId);
- mService.addWallpaperCompatibleDisplayForTest(display2);
-
mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
FLAG_SYSTEM | FLAG_LOCK, testUserId);
@@ -1126,15 +1147,19 @@
public void setWallpaperComponent_multiDisplays_displayBecomeIncompatible_shouldHaveExpectedConnections() {
final int display2 = 2;
final int display3 = 3;
- setUpDisplays(List.of(DEFAULT_DISPLAY, display2, display3));
- mService.removeWallpaperCompatibleDisplayForTest(display2);
final int testUserId = USER_SYSTEM;
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ display2, true,
+ display3, true));
mService.switchUser(testUserId, null);
+ doReturn(false).when(mService.mWallpaperCropper).isWallpaperCompatibleForDisplay(
+ eq(display2), any());
+ doReturn(false).when(mService.mWallpaperCropper).isWallpaperCompatibleForDisplay(
+ eq(display3), any());
// Switch to a test wallpaper and then image wallpaper later to simulate a wallpaper change.
mService.setWallpaperComponent(TEST_WALLPAPER_COMPONENT, sContext.getOpPackageName(),
FLAG_SYSTEM | FLAG_LOCK, testUserId);
- mService.removeWallpaperCompatibleDisplayForTest(display3);
-
mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
FLAG_SYSTEM | FLAG_LOCK, testUserId);
@@ -1161,14 +1186,15 @@
public void setWallpaperComponent_systemAndLockWallpapers_multiDisplays_shouldHaveExpectedConnections() {
final int incompatibleDisplayId = 2;
final int compatibleDisplayId = 3;
- setUpDisplays(List.of(DEFAULT_DISPLAY, incompatibleDisplayId, compatibleDisplayId));
+ setUpDisplays(Map.of(
+ DEFAULT_DISPLAY, true,
+ incompatibleDisplayId, false,
+ compatibleDisplayId, true));
final int testUserId = USER_SYSTEM;
mService.switchUser(testUserId, null);
// Switch to a test wallpaper and then image wallpaper later to simulate a wallpaper change.
mService.setWallpaperComponent(TEST_WALLPAPER_COMPONENT, sContext.getOpPackageName(),
FLAG_SYSTEM | FLAG_LOCK, testUserId);
- mService.removeWallpaperCompatibleDisplayForTest(incompatibleDisplayId);
-
mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
FLAG_SYSTEM, testUserId);
@@ -1260,21 +1286,27 @@
* to return them. It also sets up the {@link WindowManagerInternal} to indicate that all
* displays support home.
*
- * @param displayIds A list of display IDs to create mock displays for.
+ * @param displayIdsToWallpaperCompatibility A map of display IDs to wallpaper compatibility.
*/
- private void setUpDisplays(List<Integer> displayIds) {
+ private void setUpDisplays(Map<Integer, Boolean> displayIdsToWallpaperCompatibility) {
+ spyOn(mService.mWallpaperCropper);
doReturn(true).when(sWindowManagerInternal).isHomeSupportedOnDisplay(anyInt());
- Display[] mockDisplays = new Display[displayIds.size()];
- for (int i = 0; i < displayIds.size(); i++) {
- final int displayId = displayIds.get(i);
+ Display[] mockDisplays = new Display[displayIdsToWallpaperCompatibility.size()];
+ int counter = 0;
+ for (Map.Entry<Integer, Boolean> entry : displayIdsToWallpaperCompatibility.entrySet()) {
+ final int displayId = entry.getKey();
+ final boolean compatibleWithWallpaper = entry.getValue();
final Display mockDisplay = mock(Display.class);
- mockDisplays[i] = mockDisplay;
+ mockDisplays[counter] = mockDisplay;
doReturn(DISPLAY_SIZE_DIMENSION).when(mockDisplay).getMaximumSizeDimension();
doReturn(mockDisplay).when(mDisplayManager).getDisplay(eq(displayId));
doReturn(displayId).when(mockDisplay).getDisplayId();
doReturn(true).when(mockDisplay).hasAccess(anyInt());
- mService.addWallpaperCompatibleDisplayForTest(displayId);
+ doReturn(compatibleWithWallpaper).when(
+ mService.mWallpaperCropper).isWallpaperCompatibleForDisplay(eq(displayId),
+ any());
+ counter++;
}
doReturn(mockDisplays).when(mDisplayManager).getDisplays();
@@ -1297,6 +1329,4 @@
assertEquals(pfdContents, fileContents);
}
}
-
-
}
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/AggregatedPowerStatsTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/AggregatedPowerStatsTest.java
index 0e73329..978fd1a 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/AggregatedPowerStatsTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/AggregatedPowerStatsTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.annotation.SuppressLint;
import android.os.BatteryConsumer;
import android.os.PersistableBundle;
import android.util.SparseArray;
@@ -280,6 +281,7 @@
.isEqualTo(new long[]{250, 300});
}
+ @SuppressLint("CheckResult")
private static long[] getDeviceStats(
AggregatedPowerStats stats, int powerComponentId,
int... states) {
@@ -290,6 +292,7 @@
return out;
}
+ @SuppressLint("CheckResult")
private static long[] getStateStats(
AggregatedPowerStats stats, int key, int... states) {
PowerComponentAggregatedPowerStats powerComponentStats =
@@ -299,6 +302,7 @@
return out;
}
+ @SuppressLint("CheckResult")
private static long[] getUidDeviceStats(
AggregatedPowerStats stats, int powerComponentId,
int uid, int... states) {
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessorTest.java
index 21e615f..58e9d1e 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessorTest.java
@@ -27,6 +27,7 @@
import static org.mockito.Mockito.when;
+import android.annotation.SuppressLint;
import android.hardware.power.stats.EnergyConsumerType;
import android.os.BatteryConsumer;
import android.os.Handler;
@@ -166,6 +167,7 @@
return stats.getPowerComponentStats(BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY);
}
+ @SuppressLint("CheckResult")
private void assertPowerEstimate(
PowerComponentAggregatedPowerStats aggregatedStats,
int powerState, int screenState, double expectedPowerEstimate) {
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BasePowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BasePowerStatsProcessorTest.java
index cca6033..58784d7 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BasePowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BasePowerStatsProcessorTest.java
@@ -34,6 +34,7 @@
import static org.mockito.Mockito.mock;
+import android.annotation.SuppressLint;
import android.os.BatteryConsumer;
import android.os.BatteryUsageStats;
import android.os.Process;
@@ -68,6 +69,7 @@
.setProcessorSupplier(() -> new BasePowerStatsProcessor(() -> 4000));
}
+ @SuppressLint("CheckResult")
@Test
public void processPowerStats() {
AggregatedPowerStats aggregatedPowerStats = prepareAggregatedPowerStats(true);
@@ -95,9 +97,11 @@
stats.getUidStats(uidStats, APP_UID1,
states(POWER_STATE_BATTERY, SCREEN_STATE_OTHER, PROCESS_STATE_FOREGROUND_SERVICE));
assertThat(statsLayout.getUidUsageDuration(uidStats)).isEqualTo(5000);
- stats.getUidStats(uidStats, APP_UID1,
+ boolean nonZero = stats.getUidStats(uidStats, APP_UID1,
states(POWER_STATE_BATTERY, SCREEN_STATE_OTHER, PROCESS_STATE_UNSPECIFIED));
- assertThat(statsLayout.getUidUsageDuration(uidStats)).isEqualTo(0);
+ if (nonZero) {
+ assertThat(statsLayout.getUidUsageDuration(uidStats)).isEqualTo(0);
+ }
stats.getUidStats(uidStats, APP_UID2,
states(POWER_STATE_BATTERY, SCREEN_STATE_ON, PROCESS_STATE_CACHED));
@@ -105,11 +109,14 @@
stats.getUidStats(uidStats, APP_UID2,
states(POWER_STATE_BATTERY, SCREEN_STATE_OTHER, PROCESS_STATE_CACHED));
assertThat(statsLayout.getUidUsageDuration(uidStats)).isEqualTo(8500);
- stats.getUidStats(uidStats, APP_UID2,
+ nonZero = stats.getUidStats(uidStats, APP_UID2,
states(POWER_STATE_BATTERY, SCREEN_STATE_OTHER, PROCESS_STATE_UNSPECIFIED));
- assertThat(statsLayout.getUidUsageDuration(uidStats)).isEqualTo(0);
+ if (nonZero) {
+ assertThat(statsLayout.getUidUsageDuration(uidStats)).isEqualTo(0);
+ }
}
+ @SuppressLint("CheckResult")
@Test
public void fuelgaugeAvailable() {
AggregatedPowerStats aggregatedPowerStats = prepareAggregatedPowerStats(true);
@@ -138,6 +145,7 @@
assertThat(dischargeDuration).isWithin(5).of(6000);
}
+ @SuppressLint("CheckResult")
@Test
public void fuelgaugeUnavailable() {
AggregatedPowerStats aggregatedPowerStats = prepareAggregatedPowerStats(false);
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BinaryStatePowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BinaryStatePowerStatsProcessorTest.java
index 2ff7dde..e6e7f6e 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BinaryStatePowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BinaryStatePowerStatsProcessorTest.java
@@ -30,6 +30,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.annotation.SuppressLint;
import android.os.BatteryConsumer;
import android.os.BatteryStats;
import android.os.PersistableBundle;
@@ -74,6 +75,7 @@
}
}
+ @SuppressLint("CheckResult")
@Test
public void powerProfileModel() {
BinaryStatePowerStatsLayout statsLayout = new BinaryStatePowerStatsLayout();
@@ -138,12 +140,14 @@
assertThat(statsLayout.getUidPowerEstimate(uidStats))
.isWithin(PRECISION).of(expectedPower2);
- stats.getUidStats(uidStats, APP_UID2,
- states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED));
- assertThat(statsLayout.getUidPowerEstimate(uidStats))
- .isWithin(PRECISION).of(0);
+ if (stats.getUidStats(uidStats, APP_UID2,
+ states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED))) {
+ assertThat(statsLayout.getUidPowerEstimate(uidStats))
+ .isWithin(PRECISION).of(0);
+ }
}
+ @SuppressLint("CheckResult")
@Test
public void energyConsumerModel() {
BinaryStatePowerStatsLayout
@@ -232,10 +236,11 @@
assertThat(statsLayout.getUidPowerEstimate(uidStats))
.isWithin(PRECISION).of(expectedPower2);
- stats.getUidStats(uidStats, APP_UID2,
- states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED));
- assertThat(statsLayout.getUidPowerEstimate(uidStats))
- .isWithin(PRECISION).of(0);
+ if (stats.getUidStats(uidStats, APP_UID2,
+ states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED))) {
+ assertThat(statsLayout.getUidPowerEstimate(uidStats))
+ .isWithin(PRECISION).of(0);
+ }
}
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BluetoothPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BluetoothPowerStatsProcessorTest.java
index 6013186..6d7119d 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BluetoothPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/BluetoothPowerStatsProcessorTest.java
@@ -33,6 +33,7 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import android.annotation.SuppressLint;
import android.bluetooth.BluetoothActivityEnergyInfo;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.UidTraffic;
@@ -161,6 +162,7 @@
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)).thenReturn(true);
}
+ @SuppressLint("CheckResult")
@Test
public void powerProfileModel_mostlyDataTransfer() {
// No power monitoring hardware
@@ -262,6 +264,7 @@
.isWithin(PRECISION).of(expectedPower2 * 0.75);
}
+ @SuppressLint("CheckResult")
@Test
public void powerProfileModel_mostlyScan() {
// No power monitoring hardware
@@ -361,6 +364,7 @@
.isWithin(PRECISION).of(expectedPower2 * 0.75);
}
+ @SuppressLint("CheckResult")
@Test
public void consumedEnergyModel() {
when(mConsumedEnergyRetriever.getVoltageMv()).thenReturn(VOLTAGE_MV);
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CameraPowerStatsTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CameraPowerStatsTest.java
index 23642de..a959632 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CameraPowerStatsTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CameraPowerStatsTest.java
@@ -33,6 +33,7 @@
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
+import android.annotation.SuppressLint;
import android.hardware.power.stats.EnergyConsumerResult;
import android.hardware.power.stats.EnergyConsumerType;
import android.os.BatteryConsumer;
@@ -117,6 +118,7 @@
mMonotonicClock = new MonotonicClock(0, mStatsRule.getMockClock());
}
+ @SuppressLint("CheckResult")
@Test
public void energyConsumerModel() {
when(mConsumedEnergyRetriever.getVoltageMv()).thenReturn(VOLTAGE_MV);
@@ -211,10 +213,11 @@
assertThat(statsLayout.getUidPowerEstimate(uidStats))
.isWithin(PRECISION).of(expectedPower2);
- stats.getUidStats(uidStats, APP_UID2,
- states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED));
- assertThat(statsLayout.getUidPowerEstimate(uidStats))
- .isWithin(PRECISION).of(0);
+ if (stats.getUidStats(uidStats, APP_UID2,
+ states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED))) {
+ assertThat(statsLayout.getUidPowerEstimate(uidStats))
+ .isWithin(PRECISION).of(0);
+ }
}
private BatteryStats.HistoryItem buildHistoryItem(int timestamp, boolean stateOn,
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsTest.java
index 42baba7..a421675 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsTest.java
@@ -33,6 +33,7 @@
import static org.mockito.Mockito.when;
+import android.annotation.SuppressLint;
import android.hardware.power.stats.EnergyConsumerAttribution;
import android.hardware.power.stats.EnergyConsumerResult;
import android.hardware.power.stats.EnergyConsumerType;
@@ -154,6 +155,7 @@
.isEqualTo(6000);
}
+ @SuppressLint("CheckResult")
@Test
public void processStats() throws Exception {
AggregatedPowerStats aggregatedPowerStats = createAggregatedPowerStats();
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/GnssPowerStatsTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/GnssPowerStatsTest.java
index c63267e..b4f2113 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/GnssPowerStatsTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/GnssPowerStatsTest.java
@@ -33,6 +33,7 @@
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
+import android.annotation.SuppressLint;
import android.hardware.power.stats.EnergyConsumerResult;
import android.hardware.power.stats.EnergyConsumerType;
import android.location.GnssSignalQuality;
@@ -122,6 +123,7 @@
mHistoryItem.clear();
}
+ @SuppressLint("CheckResult")
@Test
public void powerProfileModel() {
// ODPM unsupported
@@ -206,12 +208,14 @@
assertThat(statsLayout.getUidPowerEstimate(uidStats))
.isWithin(PRECISION).of(0.51111);
- stats.getUidStats(uidStats, APP_UID2,
- states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED));
- assertThat(statsLayout.getUidPowerEstimate(uidStats))
- .isWithin(PRECISION).of(0);
+ if (stats.getUidStats(uidStats, APP_UID2,
+ states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED))) {
+ assertThat(statsLayout.getUidPowerEstimate(uidStats))
+ .isWithin(PRECISION).of(0);
+ }
}
+ @SuppressLint("CheckResult")
@Test
public void initialStateGnssOn() {
// ODPM unsupported
@@ -285,12 +289,14 @@
assertThat(statsLayout.getUidPowerEstimate(uidStats))
.isWithin(PRECISION).of(0.51111);
- stats.getUidStats(uidStats, APP_UID2,
- states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED));
- assertThat(statsLayout.getUidPowerEstimate(uidStats))
- .isWithin(PRECISION).of(0);
+ if (stats.getUidStats(uidStats, APP_UID2,
+ states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED))) {
+ assertThat(statsLayout.getUidPowerEstimate(uidStats))
+ .isWithin(PRECISION).of(0);
+ }
}
+ @SuppressLint("CheckResult")
@Test
public void energyConsumerModel() {
when(mConsumedEnergyRetriever.getVoltageMv()).thenReturn(VOLTAGE_MV);
@@ -386,10 +392,11 @@
assertThat(statsLayout.getUidPowerEstimate(uidStats))
.isWithin(PRECISION).of(expectedPower2);
- stats.getUidStats(uidStats, APP_UID2,
- states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED));
- assertThat(statsLayout.getUidPowerEstimate(uidStats))
- .isWithin(PRECISION).of(0);
+ if (stats.getUidStats(uidStats, APP_UID2,
+ states(POWER_STATE_OTHER, SCREEN_STATE_ON, PROCESS_STATE_CACHED))) {
+ assertThat(statsLayout.getUidPowerEstimate(uidStats))
+ .isWithin(PRECISION).of(0);
+ }
}
private BatteryStats.HistoryItem buildHistoryItemInitialStateGpsOn(long timestamp) {
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessorTest.java
index 6acd368..3dc4017 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessorTest.java
@@ -39,6 +39,7 @@
import static org.mockito.Mockito.when;
import android.annotation.Nullable;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.power.stats.EnergyConsumerResult;
@@ -170,6 +171,7 @@
.thenAnswer(invocation -> invocation.getArgument(0));
}
+ @SuppressLint("CheckResult")
@Test
public void powerProfileModel() {
// No power monitoring hardware
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MultiStateStatsTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MultiStateStatsTest.java
index 3b614bd..9abb06f 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MultiStateStatsTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MultiStateStatsTest.java
@@ -21,6 +21,7 @@
import static org.junit.Assert.assertThrows;
+import android.annotation.SuppressLint;
import android.os.BatteryConsumer;
import androidx.test.filters.SmallTest;
@@ -124,6 +125,7 @@
assertThat(e.getMessage()).contains("40");
}
+ @SuppressLint("CheckResult")
@Test
public void multiStateStats_aggregation() {
MultiStateStats.Factory factory = makeFactory(true, true, false);
@@ -159,9 +161,9 @@
// (400 - 100) * 0 + (600 - 400) * 0.5
assertThat(stats).isEqualTo(new long[]{100, 100});
- multiStateStats.getStats(stats, new int[]{1, BatteryConsumer.PROCESS_STATE_BACKGROUND, 0});
// Never been in this composite state
- assertThat(stats).isEqualTo(new long[]{0, 0});
+ assertThat(multiStateStats.getStats(stats,
+ new int[]{1, BatteryConsumer.PROCESS_STATE_BACKGROUND, 0})).isFalse();
}
@Test
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PhoneCallPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PhoneCallPowerStatsProcessorTest.java
index a20274f..2f742d7 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PhoneCallPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PhoneCallPowerStatsProcessorTest.java
@@ -29,6 +29,7 @@
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.when;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.power.stats.EnergyConsumerType;
@@ -159,6 +160,7 @@
mStatsRule.setTestPowerProfile("power_profile_test_legacy_modem");
}
+ @SuppressLint("CheckResult")
@Test
public void copyEstimatesFromMobileRadioPowerStats() {
AggregatedPowerStatsConfig config = new AggregatedPowerStatsConfig();
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/ScreenPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/ScreenPowerStatsProcessorTest.java
index 1852165..31456a15 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/ScreenPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/ScreenPowerStatsProcessorTest.java
@@ -29,6 +29,7 @@
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.when;
+import android.annotation.SuppressLint;
import android.hardware.power.stats.EnergyConsumerResult;
import android.hardware.power.stats.EnergyConsumerType;
import android.os.BatteryConsumer;
@@ -278,6 +279,7 @@
.of(expectedDozePowerEstimate);
}
+ @SuppressLint("CheckResult")
private void assertUidPowerEstimate(
PowerComponentAggregatedPowerStats aggregatedStats, int uid,
int powerState, int screenState, double expectedScreenPowerEstimate) {
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/SensorPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/SensorPowerStatsProcessorTest.java
index d972604..c2f01d1 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/SensorPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/SensorPowerStatsProcessorTest.java
@@ -33,6 +33,7 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import android.annotation.SuppressLint;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.hardware.input.InputSensorInfo;
@@ -91,6 +92,7 @@
List.of(sensor1, sensor2, sensor3));
}
+ @SuppressLint("CheckResult")
@Test
public void testPowerEstimation() {
PowerComponentAggregatedPowerStats stats = createAggregatedPowerStats(
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WakelockPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WakelockPowerStatsProcessorTest.java
index 8257d71..5ac7216 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WakelockPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WakelockPowerStatsProcessorTest.java
@@ -31,6 +31,7 @@
import static org.mockito.Mockito.mock;
+import android.annotation.SuppressLint;
import android.os.BatteryConsumer;
import android.os.PersistableBundle;
import android.os.Process;
@@ -123,6 +124,7 @@
return history;
}
+ @SuppressLint("CheckResult")
private void assertAggregatedPowerStats(AggregatedPowerStats aggregatedPowerStats) {
PowerComponentAggregatedPowerStats stats =
aggregatedPowerStats.getPowerComponentStats(POWER_COMPONENT_WAKELOCK);
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WifiPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WifiPowerStatsProcessorTest.java
index bd92a84..e36056a 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WifiPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WifiPowerStatsProcessorTest.java
@@ -39,6 +39,7 @@
import static org.mockito.Mockito.when;
import android.annotation.Nullable;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.power.stats.EnergyConsumerResult;
@@ -198,6 +199,7 @@
mBatteryStats = mStatsRule.getBatteryStats();
}
+ @SuppressLint("CheckResult")
@Test
public void powerProfileModel_powerController() {
when(mWifiManager.isEnhancedPowerReportingSupported()).thenReturn(true);
@@ -310,6 +312,7 @@
.isWithin(PRECISION).of(expectedPower2 * 0.75);
}
+ @SuppressLint("CheckResult")
@Test
public void consumedEnergyModel_powerController() {
when(mWifiManager.isEnhancedPowerReportingSupported()).thenReturn(true);
@@ -424,6 +427,7 @@
.isWithin(PRECISION).of(expectedPower2 * 0.75);
}
+ @SuppressLint("CheckResult")
@Test
public void powerProfileModel_noPowerController() {
when(mWifiManager.isEnhancedPowerReportingSupported()).thenReturn(false);
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
index ba672dc..c60c4b6 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
@@ -21,6 +21,9 @@
import static com.android.server.accessibility.autoclick.AutoclickTypePanel.AUTOCLICK_TYPE_LEFT_CLICK;
import static com.android.server.accessibility.autoclick.AutoclickTypePanel.AUTOCLICK_TYPE_SCROLL;
import static com.android.server.accessibility.autoclick.AutoclickTypePanel.AutoclickType;
+import static com.android.server.accessibility.autoclick.AutoclickTypePanel.CORNER_BOTTOM_LEFT;
+import static com.android.server.accessibility.autoclick.AutoclickTypePanel.CORNER_BOTTOM_RIGHT;
+import static com.android.server.accessibility.autoclick.AutoclickTypePanel.CORNER_TOP_RIGHT;
import static com.android.server.accessibility.autoclick.AutoclickTypePanel.ClickPanelControllerInterface;
import static com.google.common.truth.Truth.assertThat;
@@ -31,6 +34,7 @@
import android.testing.TestableContext;
import android.testing.TestableLooper;
import android.view.Gravity;
+import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.LinearLayout;
@@ -213,6 +217,105 @@
assertThat(mAutoclickTypePanel.isPaused()).isFalse();
}
+ @Test
+ public void onTouch_dragMove_updatesPosition() {
+ View contentView = mAutoclickTypePanel.getContentViewForTesting();
+ WindowManager.LayoutParams params = mAutoclickTypePanel.getLayoutParamsForTesting();
+ int[] panelLocation = new int[2];
+ contentView.getLocationOnScreen(panelLocation);
+
+ // Define movement delta for both x and y directions.
+ int delta = 15;
+
+ // Dispatch initial down event.
+ float touchX = panelLocation[0] + 10;
+ float touchY = panelLocation[1] + 10;
+ MotionEvent downEvent = MotionEvent.obtain(
+ 0, 0,
+ MotionEvent.ACTION_DOWN, touchX, touchY, 0);
+ contentView.dispatchTouchEvent(downEvent);
+
+ // Create move event with delta, move from (x, y) to (x + delta, y + delta)
+ MotionEvent moveEvent = MotionEvent.obtain(
+ 0, 0,
+ MotionEvent.ACTION_MOVE, touchX + delta, touchY + delta, 0);
+ contentView.dispatchTouchEvent(moveEvent);
+
+ // Verify position update.
+ assertThat(mAutoclickTypePanel.getIsDraggingForTesting()).isTrue();
+ assertThat(params.gravity).isEqualTo(Gravity.LEFT | Gravity.TOP);
+ assertThat(params.x).isEqualTo(panelLocation[0] + delta);
+ assertThat(params.y).isEqualTo(panelLocation[1] + delta);
+ }
+
+ @Test
+ public void dragAndEndAtRight_snapsToRightSide() {
+ View contentView = mAutoclickTypePanel.getContentViewForTesting();
+ WindowManager.LayoutParams params = mAutoclickTypePanel.getLayoutParamsForTesting();
+ int[] panelLocation = new int[2];
+ contentView.getLocationOnScreen(panelLocation);
+
+ int screenWidth = mTestableContext.getResources().getDisplayMetrics().widthPixels;
+
+ // Verify initial corner is bottom-right.
+ assertThat(mAutoclickTypePanel.getCurrentCornerIndexForTesting())
+ .isEqualTo(CORNER_BOTTOM_RIGHT);
+
+ dispatchDragSequence(contentView,
+ /* startX =*/ panelLocation[0] + 10, /* startY =*/ panelLocation[1] + 10,
+ /* endX =*/ (float) (screenWidth * 3) / 4, /* endY =*/ panelLocation[1] + 10);
+
+ // Verify snapping to the right.
+ assertThat(params.gravity).isEqualTo(Gravity.END | Gravity.TOP);
+ assertThat(mAutoclickTypePanel.getCurrentCornerIndexForTesting())
+ .isEqualTo(CORNER_TOP_RIGHT);
+ }
+
+ @Test
+ public void dragAndEndAtLeft_snapsToLeftSide() {
+ View contentView = mAutoclickTypePanel.getContentViewForTesting();
+ WindowManager.LayoutParams params = mAutoclickTypePanel.getLayoutParamsForTesting();
+ int[] panelLocation = new int[2];
+ contentView.getLocationOnScreen(panelLocation);
+
+ int screenWidth = mTestableContext.getResources().getDisplayMetrics().widthPixels;
+
+ // Verify initial corner is bottom-right.
+ assertThat(mAutoclickTypePanel.getCurrentCornerIndexForTesting())
+ .isEqualTo(CORNER_BOTTOM_RIGHT);
+
+ dispatchDragSequence(contentView,
+ /* startX =*/ panelLocation[0] + 10, /* startY =*/ panelLocation[1] + 10,
+ /* endX =*/ (float) screenWidth / 4, /* endY =*/ panelLocation[1] + 10);
+
+ // Verify snapping to the left.
+ assertThat(params.gravity).isEqualTo(Gravity.START | Gravity.TOP);
+ assertThat(mAutoclickTypePanel.getCurrentCornerIndexForTesting())
+ .isEqualTo(CORNER_BOTTOM_LEFT);
+ }
+
+ // Helper method to handle drag event sequences
+ private void dispatchDragSequence(View view, float startX, float startY, float endX,
+ float endY) {
+ // Down event
+ MotionEvent downEvent = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, startX, startY,
+ 0);
+ view.dispatchTouchEvent(downEvent);
+
+ // Move event
+ MotionEvent moveEvent = MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE, endX, endY, 0);
+ view.dispatchTouchEvent(moveEvent);
+
+ // Up event
+ MotionEvent upEvent = MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, endX, endY, 0);
+ view.dispatchTouchEvent(upEvent);
+
+ // Clean up
+ downEvent.recycle();
+ moveEvent.recycle();
+ upEvent.recycle();
+ }
+
private void verifyButtonHasSelectedStyle(@NonNull LinearLayout button) {
GradientDrawable gradientDrawable = (GradientDrawable) button.getBackground();
assertThat(gradientDrawable.getColor().getDefaultColor())
@@ -220,7 +323,7 @@
}
private void verifyPanelPosition(int[] expectedPosition) {
- WindowManager.LayoutParams params = mAutoclickTypePanel.getLayoutParams();
+ WindowManager.LayoutParams params = mAutoclickTypePanel.getLayoutParamsForTesting();
assertThat(mAutoclickTypePanel.getCurrentCornerIndexForTesting()).isEqualTo(
expectedPosition[0]);
assertThat(params.gravity).isEqualTo(expectedPosition[1]);
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java
index 9f5dd93..5c126d1 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java
@@ -311,8 +311,7 @@
mMockFullScreenMagnificationVibrationHelper,
mMockMagnificationLogger,
ViewConfiguration.get(mContext),
- mMockOneFingerPanningSettingsProvider,
- new MouseEventHandler(mFullScreenMagnificationController));
+ mMockOneFingerPanningSettingsProvider);
// OverscrollHandler is only supported on watches.
// @See config_enable_a11y_fullscreen_magnification_overscroll_handler
if (isWatch()) {
@@ -482,8 +481,8 @@
@Test
@RequiresFlagsDisabled(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
public void testDisablingTripleTap_removesInputLag() {
- mMgh = newInstance(/* detectSingleFingerTripleTap */ false,
- /* detectTwoFingerTripleTap */ true, /* detectShortcut */ true);
+ mMgh = newInstance(/* detectSingleFingerTripleTap= */ false,
+ /* detectTwoFingerTripleTap= */ true, /* detectShortcutTrigger= */ true);
goFromStateIdleTo(STATE_IDLE);
allowEventDelegation();
tap();
@@ -494,8 +493,8 @@
@Test
@RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
public void testDisablingSingleFingerTripleTapAndTwoFingerTripleTap_removesInputLag() {
- mMgh = newInstance(/* detectSingleFingerTripleTap */ false,
- /* detectTwoFingerTripleTap */ false, /* detectShortcut */ true);
+ mMgh = newInstance(/* detectSingleFingerTripleTap= */ false,
+ /* detectTwoFingerTripleTap= */ false, /* detectShortcutTrigger= */ true);
goFromStateIdleTo(STATE_IDLE);
allowEventDelegation();
tap();
@@ -1420,12 +1419,6 @@
}
@Test
- @RequiresFlagsDisabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
- public void testMouseMoveEventsDoNotMoveMagnifierViewport() {
- runMoveEventsDoNotMoveMagnifierViewport(InputDevice.SOURCE_MOUSE);
- }
-
- @Test
public void testStylusMoveEventsDoNotMoveMagnifierViewport() {
runMoveEventsDoNotMoveMagnifierViewport(InputDevice.SOURCE_STYLUS);
}
@@ -1441,7 +1434,7 @@
(INITIAL_MAGNIFICATION_BOUNDS.top + INITIAL_MAGNIFICATION_BOUNDS.height()) / 2.0f;
float scale = 5.6f; // value is unimportant but unique among tests to increase coverage.
mFullScreenMagnificationController.setScaleAndCenter(
- DISPLAY_0, centerX, centerY, scale, true, /* animate= */ false, 1);
+ DISPLAY_0, scale, centerX, centerY, true, /* animate= */ false, 1);
centerX = mFullScreenMagnificationController.getCenterX(DISPLAY_0);
centerY = mFullScreenMagnificationController.getCenterY(DISPLAY_0);
@@ -1474,55 +1467,36 @@
}
@Test
- @RequiresFlagsDisabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
- public void testMouseHoverMoveEventsDoNotMoveMagnifierViewport() {
- runHoverMoveEventsDoNotMoveMagnifierViewport(InputDevice.SOURCE_MOUSE);
- }
-
- @Test
- @RequiresFlagsDisabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
- public void testStylusHoverMoveEventsDoNotMoveMagnifierViewport() {
- runHoverMoveEventsDoNotMoveMagnifierViewport(InputDevice.SOURCE_STYLUS);
- }
-
- @Test
- @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
public void testMouseHoverMoveEventsMoveMagnifierViewport() {
runHoverMovesViewportTest(InputDevice.SOURCE_MOUSE);
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
public void testStylusHoverMoveEventsMoveMagnifierViewport() {
runHoverMovesViewportTest(InputDevice.SOURCE_STYLUS);
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
public void testMouseDownEventsDoNotMoveMagnifierViewport() {
runDownDoesNotMoveViewportTest(InputDevice.SOURCE_MOUSE);
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
public void testStylusDownEventsDoNotMoveMagnifierViewport() {
runDownDoesNotMoveViewportTest(InputDevice.SOURCE_STYLUS);
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
public void testMouseUpEventsDoNotMoveMagnifierViewport() {
runUpDoesNotMoveViewportTest(InputDevice.SOURCE_MOUSE);
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
public void testStylusUpEventsDoNotMoveMagnifierViewport() {
runUpDoesNotMoveViewportTest(InputDevice.SOURCE_STYLUS);
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
public void testMouseMoveEventsMoveMagnifierViewport() {
final EventCaptor eventCaptor = new EventCaptor();
mMgh.setNext(eventCaptor);
@@ -1533,7 +1507,7 @@
(INITIAL_MAGNIFICATION_BOUNDS.top + INITIAL_MAGNIFICATION_BOUNDS.height()) / 2.0f;
float scale = 6.2f; // value is unimportant but unique among tests to increase coverage.
mFullScreenMagnificationController.setScaleAndCenter(
- DISPLAY_0, centerX, centerY, scale, true, /* animate= */ false, 1);
+ DISPLAY_0, scale, centerX, centerY, true, /* animate= */ false, 1);
MotionEvent event = mouseEvent(centerX, centerY, ACTION_HOVER_MOVE);
send(event, InputDevice.SOURCE_MOUSE);
fastForward(20);
@@ -1574,7 +1548,7 @@
(INITIAL_MAGNIFICATION_BOUNDS.top + INITIAL_MAGNIFICATION_BOUNDS.height()) / 2.0f;
float scale = 4.0f; // value is unimportant but unique among tests to increase coverage.
mFullScreenMagnificationController.setScaleAndCenter(
- DISPLAY_0, centerX, centerY, scale, true, /* animate= */ false, 1);
+ DISPLAY_0, scale, centerX, centerY, true, /* animate= */ false, 1);
// HOVER_MOVE should change magnifier viewport.
MotionEvent event = motionEvent(centerX + 20, centerY, ACTION_HOVER_MOVE);
@@ -1618,7 +1592,7 @@
(INITIAL_MAGNIFICATION_BOUNDS.top + INITIAL_MAGNIFICATION_BOUNDS.height()) / 2.0f;
float scale = 5.3f; // value is unimportant but unique among tests to increase coverage.
mFullScreenMagnificationController.setScaleAndCenter(
- DISPLAY_0, centerX, centerY, scale, true, /* animate= */ false, 1);
+ DISPLAY_0, scale, centerX, centerY, true, /* animate= */ false, 1);
MotionEvent event = motionEvent(centerX, centerY, ACTION_HOVER_MOVE);
send(event, source);
fastForward(20);
@@ -1652,7 +1626,7 @@
(INITIAL_MAGNIFICATION_BOUNDS.top + INITIAL_MAGNIFICATION_BOUNDS.height()) / 2.0f;
float scale = 2.7f; // value is unimportant but unique among tests to increase coverage.
mFullScreenMagnificationController.setScaleAndCenter(
- DISPLAY_0, centerX, centerY, scale, true, /* animate= */ false, 1);
+ DISPLAY_0, scale, centerX, centerY, true, /* animate= */ false, 1);
MotionEvent event = motionEvent(centerX, centerY, ACTION_HOVER_MOVE);
send(event, source);
fastForward(20);
@@ -1688,7 +1662,7 @@
(INITIAL_MAGNIFICATION_BOUNDS.top + INITIAL_MAGNIFICATION_BOUNDS.height()) / 2.0f;
float scale = 3.8f; // value is unimportant but unique among tests to increase coverage.
mFullScreenMagnificationController.setScaleAndCenter(
- DISPLAY_0, centerX, centerY, scale, true, /* animate= */ false, 1);
+ DISPLAY_0, scale, centerX, centerY, true, /* animate= */ false, 1);
centerX = mFullScreenMagnificationController.getCenterX(DISPLAY_0);
centerY = mFullScreenMagnificationController.getCenterY(DISPLAY_0);
@@ -1725,7 +1699,7 @@
(INITIAL_MAGNIFICATION_BOUNDS.top + INITIAL_MAGNIFICATION_BOUNDS.height()) / 2.0f;
float scale = 4.0f; // value is unimportant but unique among tests to increase coverage.
mFullScreenMagnificationController.setScaleAndCenter(
- DISPLAY_0, centerX, centerY, scale, true, /* animate= */ false, 1);
+ DISPLAY_0, scale, centerX, centerY, true, /* animate= */ false, 1);
centerX = mFullScreenMagnificationController.getCenterX(DISPLAY_0);
centerY = mFullScreenMagnificationController.getCenterY(DISPLAY_0);
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationGestureHandlerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationGestureHandlerTest.java
index 45c157d..203e655 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationGestureHandlerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationGestureHandlerTest.java
@@ -21,15 +21,11 @@
import static android.view.MotionEvent.ACTION_HOVER_MOVE;
import static android.view.MotionEvent.ACTION_UP;
-import static junit.framework.Assert.assertFalse;
-
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.testng.AssertJUnit.assertTrue;
import android.annotation.NonNull;
-import android.platform.test.annotations.RequiresFlagsDisabled;
-import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.provider.Settings;
@@ -39,7 +35,6 @@
import androidx.test.runner.AndroidJUnit4;
import com.android.server.accessibility.AccessibilityTraceManager;
-import com.android.server.accessibility.Flags;
import org.junit.Before;
import org.junit.Rule;
@@ -93,7 +88,6 @@
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
public void onMotionEvent_isFromMouse_handleMouseOrStylusEvent() {
final MotionEvent mouseEvent = MotionEvent.obtain(0, 0, ACTION_HOVER_MOVE, 0, 0, 0);
mouseEvent.setSource(InputDevice.SOURCE_MOUSE);
@@ -108,7 +102,6 @@
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
public void onMotionEvent_isFromStylus_handleMouseOrStylusEvent() {
final MotionEvent stylusEvent = MotionEvent.obtain(0, 0, ACTION_HOVER_MOVE, 0, 0, 0);
stylusEvent.setSource(InputDevice.SOURCE_STYLUS);
@@ -123,36 +116,6 @@
}
@Test
- @RequiresFlagsDisabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
- public void onMotionEvent_isFromMouse_handleMouseOrStylusEventNotCalled() {
- final MotionEvent mouseEvent = MotionEvent.obtain(0, 0, ACTION_HOVER_MOVE, 0, 0, 0);
- mouseEvent.setSource(InputDevice.SOURCE_MOUSE);
-
- mMgh.onMotionEvent(mouseEvent, mouseEvent, /* policyFlags= */ 0);
-
- try {
- assertFalse(mMgh.mIsHandleMouseOrStylusEventCalled);
- } finally {
- mouseEvent.recycle();
- }
- }
-
- @Test
- @RequiresFlagsDisabled(Flags.FLAG_ENABLE_MAGNIFICATION_FOLLOWS_MOUSE_BUGFIX)
- public void onMotionEvent_isFromStylus_handleMouseOrStylusEventNotCalled() {
- final MotionEvent stylusEvent = MotionEvent.obtain(0, 0, ACTION_HOVER_MOVE, 0, 0, 0);
- stylusEvent.setSource(InputDevice.SOURCE_STYLUS);
-
- mMgh.onMotionEvent(stylusEvent, stylusEvent, /* policyFlags= */ 0);
-
- try {
- assertFalse(mMgh.mIsHandleMouseOrStylusEventCalled);
- } finally {
- stylusEvent.recycle();
- }
- }
-
- @Test
public void onMotionEvent_downEvent_handleInteractionStart() {
final MotionEvent downEvent = MotionEvent.obtain(0, 0, ACTION_DOWN, 0, 0, 0);
downEvent.setSource(InputDevice.SOURCE_TOUCHSCREEN);
diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
index aa9d205..9e8c34e 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
@@ -259,4 +259,16 @@
inputGainIndex,
mAudioService.getInputGainIndex(ada));
}
+
+ @Test
+ public void testRttEnabled() throws Exception {
+ Log.i(TAG, "running testRttEnabled");
+ Assert.assertNotNull(mAudioService);
+
+ mAudioService.setRttEnabled(true);
+ Assert.assertTrue(mAudioService.isRttEnabled());
+
+ mAudioService.setRttEnabled(false);
+ Assert.assertFalse(mAudioService.isRttEnabled());
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java b/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java
index ad3855f..b1cf905 100644
--- a/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java
@@ -37,10 +37,12 @@
import android.util.Xml;
import androidx.annotation.NonNull;
-import androidx.test.runner.AndroidJUnit4;
import com.android.modules.utils.TypedXmlPullParser;
+import junitparams.JUnitParamsRunner;
+import junitparams.Parameters;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -56,7 +58,7 @@
import javax.annotation.Nullable;
-@RunWith(AndroidJUnit4.class)
+@RunWith(JUnitParamsRunner.class)
public class OverlayManagerSettingsTests {
private OverlayManagerSettings mSettings;
private static final int USER_0 = 0;
@@ -439,6 +441,39 @@
}
@Test
+ @Parameters(method = "getPreviousVersions")
+ public void testRestoreWithPreviousVersion(int version) throws Exception {
+ final String xml =
+ "<?xml version='1.0' encoding='utf-8' standalone='yes'?>\n"
+ + "<overlays version='" + version + "'>\n"
+ + "<item packageName='com.test.overlay'\n"
+ + " overlayName='test'\n"
+ + " userId='1234'\n"
+ + " targetPackageName='com.test.target'\n"
+ + " baseCodePath='/data/app/com.test.overlay-1/base.apk'\n"
+ + " state='" + STATE_DISABLED + "'\n"
+ + " isEnabled='false'\n"
+ + " category='test-category'\n"
+ + " isStatic='false'\n"
+ + " priority='0' />\n"
+ + "</overlays>\n";
+ ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes(UTF_8));
+
+ mSettings.restore(is);
+ final OverlayIdentifier identifier = new OverlayIdentifier("com.test.overlay", "test");
+ OverlayInfo oi = mSettings.getOverlayInfo(identifier, 1234);
+ assertNotNull(oi);
+ assertEquals("com.test.overlay", oi.packageName);
+ assertEquals("test", oi.overlayName);
+ assertEquals("com.test.target", oi.targetPackageName);
+ assertEquals("/data/app/com.test.overlay-1/base.apk", oi.baseCodePath);
+ assertEquals(1234, oi.userId);
+ assertEquals(STATE_DISABLED, oi.state);
+ assertFalse(mSettings.getEnabled(identifier, 1234));
+ assertTrue(oi.constraints.isEmpty());
+ }
+
+ @Test
public void testPersistAndRestore() throws Exception {
insertSetting(OVERLAY_A_USER0);
insertSetting(OVERLAY_B_USER1);
@@ -585,4 +620,11 @@
TextUtils.join(",", expected), TextUtils.join(",", actual)));
}
}
+
+ private static Integer[] getPreviousVersions() {
+ return new Integer[]{
+ 3,
+ 4,
+ };
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
index 58f7622..d6de314 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
@@ -159,7 +159,7 @@
/**
* Test for the first launch path, no settings file available.
*/
- public void testFirstInitialize() {
+ public void disabled_testFirstInitialize() {
assertResetTimes(START_TIME, START_TIME + INTERVAL);
}
@@ -261,12 +261,12 @@
// === Test for app side APIs ===
/** Test for {@link android.content.pm.ShortcutManager#getMaxShortcutCountForActivity()} */
- public void testGetMaxDynamicShortcutCount() {
+ public void disabled_testGetMaxDynamicShortcutCount() {
assertEquals(MAX_SHORTCUTS, mManager.getMaxShortcutCountForActivity());
}
/** Test for {@link android.content.pm.ShortcutManager#getRemainingCallCount()} */
- public void testGetRemainingCallCount() {
+ public void disabled_testGetRemainingCallCount() {
assertEquals(MAX_UPDATES_PER_INTERVAL, mManager.getRemainingCallCount());
}
@@ -793,7 +793,7 @@
assertEquals(2, mManager.getRemainingCallCount());
}
- public void testDeleteAllDynamicShortcuts() {
+ public void disabled_testDeleteAllDynamicShortcuts() {
final ShortcutInfo si1 = makeShortcut("shortcut1");
final ShortcutInfo si2 = makeShortcut("shortcut2");
final ShortcutInfo si3 = makeShortcut("shortcut3");
@@ -1036,7 +1036,7 @@
*/
}
- public void testCleanupDanglingBitmaps() throws Exception {
+ public void disabled_testCleanupDanglingBitmaps() throws Exception {
assertBitmapDirectories(USER_10, EMPTY_STRINGS);
assertBitmapDirectories(USER_11, EMPTY_STRINGS);
@@ -1702,7 +1702,7 @@
"s2");
}
- public void testCachedShortcuts_accessShortcutsPermission() {
+ public void disabled_testCachedShortcuts_accessShortcutsPermission() {
runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
assertTrue(mManager.setDynamicShortcuts(list(makeShortcut("s1"),
makeLongLivedShortcut("s2"), makeLongLivedShortcut("s3"),
@@ -1744,7 +1744,7 @@
assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED), "s3");
}
- public void testCachedShortcuts_canPassShortcutLimit() {
+ public void disabled_testCachedShortcuts_canPassShortcutLimit() {
// Change the max number of shortcuts.
mService.updateConfigurationLocked(ConfigConstants.KEY_MAX_SHORTCUTS + "=4");
@@ -1782,7 +1782,7 @@
// === Test for launcher side APIs ===
- public void testGetShortcuts() {
+ public void disabled_testGetShortcuts() {
// Set up shortcuts.
@@ -2158,7 +2158,7 @@
});
}
- public void testGetShortcuts_personsFlag() {
+ public void disabled_testGetShortcuts_personsFlag() {
ShortcutInfo s = new ShortcutInfo.Builder(mClientContext, "id")
.setShortLabel("label")
.setActivity(new ComponentName(mClientContext, ShortcutActivity2.class))
@@ -2206,7 +2206,7 @@
}
// TODO resource
- public void testGetShortcutInfo() {
+ public void disabled_testGetShortcutInfo() {
// Create shortcuts.
setCaller(CALLING_PACKAGE_1);
final ShortcutInfo s1_1 = makeShortcut(
@@ -2362,7 +2362,7 @@
* This is similar to the above test, except it used "disable" instead of "remove". It also
* does "enable".
*/
- public void testDisableAndEnableShortcuts() {
+ public void disabled_testDisableAndEnableShortcuts() {
runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
final ShortcutInfo s1_1 = makeShortcutWithTimestamp("s1", 1000);
final ShortcutInfo s1_2 = makeShortcutWithTimestamp("s2", 2000);
@@ -2487,7 +2487,7 @@
});
}
- public void testDisableShortcuts_thenRepublish() {
+ public void disabled_testDisableShortcuts_thenRepublish() {
runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
assertTrue(mManager.setDynamicShortcuts(list(
makeShortcut("s1"), makeShortcut("s2"), makeShortcut("s3"))));
@@ -4230,7 +4230,7 @@
// TODO Check all other fields
}
- public void testCleanupPackage() {
+ public void disabled_testCleanupPackage() {
runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
assertTrue(mManager.setDynamicShortcuts(list(
makeShortcut("s0_1"))));
@@ -4507,7 +4507,7 @@
mService.saveDirtyInfo();
}
- public void testCleanupPackage_republishManifests() {
+ public void disabled_testCleanupPackage_republishManifests() {
addManifestShortcutResource(
new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
R.xml.shortcut_2);
@@ -4847,7 +4847,7 @@
assertEquals(expected, spi.canRestoreTo(mService, pi, true));
}
- public void testCanRestoreTo() {
+ public void disabled_testCanRestoreTo() {
addPackage(CALLING_PACKAGE_1, CALLING_UID_1, 10, "sig1");
addPackage(CALLING_PACKAGE_2, CALLING_UID_2, 10, "sig1", "sig2");
addPackage(CALLING_PACKAGE_3, CALLING_UID_3, 10, "sig1");
@@ -5785,7 +5785,7 @@
checkBackupAndRestore_success(/*firstRestore=*/ true);
}
- public void testBackupAndRestore_restoreToSuperSetSignatures() {
+ public void disabled_testBackupAndRestore_restoreToSuperSetSignatures() {
prepareForBackupTest();
// Change package signatures.
@@ -6913,12 +6913,12 @@
mManager.hasShareTargets(CALLING_PACKAGE_1);
}
- public void testDumpsys_crossProfile() {
+ public void disabled_testDumpsys_crossProfile() {
prepareCrossProfileDataSet();
dumpsysOnLogcat("test1", /* force= */ true);
}
- public void testDumpsys_withIcons() throws IOException {
+ public void disabled_testDumpsys_withIcons() throws IOException {
testIcons();
// Dump after having some icons.
dumpsysOnLogcat("test1", /* force= */ true);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
index 0ab11e0..f8387a4 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
@@ -300,7 +300,7 @@
@Parameters(name = "{0}")
public static List<FlagsParameterization> getParams() {
- return FlagsParameterization.allCombinationsOf(FLAG_MODES_UI, FLAG_BACKUP_RESTORE_LOGGING,
+ return FlagsParameterization.allCombinationsOf(FLAG_BACKUP_RESTORE_LOGGING,
com.android.server.notification.Flags.FLAG_FIX_CALLING_UID_FROM_CPS);
}
diff --git a/services/tests/vibrator/src/com/android/server/vibrator/VibrationThreadTest.java b/services/tests/vibrator/src/com/android/server/vibrator/VibrationThreadTest.java
index 42279e4..04335df 100644
--- a/services/tests/vibrator/src/com/android/server/vibrator/VibrationThreadTest.java
+++ b/services/tests/vibrator/src/com/android/server/vibrator/VibrationThreadTest.java
@@ -20,14 +20,14 @@
import static android.os.VibrationEffect.Composition.PRIMITIVE_CLICK;
import static android.os.VibrationEffect.Composition.PRIMITIVE_SPIN;
import static android.os.VibrationEffect.Composition.PRIMITIVE_TICK;
+import static android.os.VibrationEffect.EFFECT_CLICK;
+import static android.os.VibrationEffect.EFFECT_TICK;
import static android.os.VibrationEffect.VibrationParameter.targetAmplitude;
import static android.os.VibrationEffect.VibrationParameter.targetFrequency;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
@@ -189,7 +189,7 @@
public void vibrate_noVibrator_ignoresVibration() {
mVibratorProviders.clear();
CombinedVibration effect = CombinedVibration.createParallel(
- VibrationEffect.get(VibrationEffect.EFFECT_CLICK));
+ VibrationEffect.get(EFFECT_CLICK));
HalVibration vibration = startThreadAndDispatcher(effect);
waitForCompletion();
@@ -200,8 +200,8 @@
@Test
public void vibrate_missingVibrators_ignoresVibration() {
CombinedVibration effect = CombinedVibration.startSequential()
- .addNext(2, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
- .addNext(3, VibrationEffect.get(VibrationEffect.EFFECT_TICK))
+ .addNext(2, VibrationEffect.get(EFFECT_CLICK))
+ .addNext(3, VibrationEffect.get(EFFECT_TICK))
.combine();
HalVibration vibration = startThreadAndDispatcher(effect);
waitForCompletion();
@@ -222,11 +222,12 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
- assertEquals(Arrays.asList(expectedOneShot(10)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(100), mVibratorProviders.get(VIBRATOR_ID).getAmplitudes());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(10)).inOrder();
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(100)).inOrder();
}
@Test
@@ -239,11 +240,11 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
- assertEquals(Arrays.asList(expectedOneShot(10)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
- assertTrue(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes().isEmpty());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(10)).inOrder();
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes()).isEmpty();
}
@Test
@@ -259,12 +260,12 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
- assertEquals(Arrays.asList(expectedOneShot(15)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(1, 2, 3),
- mVibratorProviders.get(VIBRATOR_ID).getAmplitudes());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(15)).inOrder();
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(1, 2, 3)).inOrder();
}
@Test
@@ -285,11 +286,12 @@
waitForCompletion();
verify(mStatsLoggerMock, never()).logVibrationParamRequestTimeout(UID);
- assertEquals(Arrays.asList(expectedOneShot(15)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(15)).inOrder();
List<Float> amplitudes = mVibratorProviders.get(VIBRATOR_ID).getAmplitudes();
for (int i = 0; i < amplitudes.size(); i++) {
- assertTrue(amplitudes.get(i) < 1 / 255f);
+ assertWithMessage("For amplitude index %s", i)
+ .that(amplitudes.get(i)).isLessThan(1 / 255f);
}
}
@@ -309,10 +311,10 @@
waitForCompletion();
verify(mStatsLoggerMock).logVibrationParamRequestTimeout(UID);
- assertEquals(Arrays.asList(expectedOneShot(15)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(1, 1, 1),
- mVibratorProviders.get(VIBRATOR_ID).getAmplitudes());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(15)).inOrder();
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(1, 1, 1)).inOrder();
}
@Test
@@ -325,31 +327,33 @@
VibrationEffect effect = VibrationEffect.createWaveform(new long[]{5, 5, 5}, amplitudes, 0);
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(
+ assertThat(
waitUntil(() -> fakeVibrator.getAmplitudes().size() > 2 * amplitudes.length,
- TEST_TIMEOUT_MILLIS));
+ TEST_TIMEOUT_MILLIS)).isTrue();
// Vibration still running after 2 cycles.
- assertTrue(mThread.isRunningVibrationId(vibration.id));
- assertTrue(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isTrue();
Vibration.EndInfo cancelVibrationInfo = new Vibration.EndInfo(Status.CANCELLED_SUPERSEDED,
new CallerInfo(VibrationAttributes.createForUsage(VibrationAttributes.USAGE_ALARM),
/* uid= */ 1, /* deviceId= */ -1, /* opPkg= */ null, /* reason= */ null));
mVibrationConductor.notifyCancelled(cancelVibrationInfo, /* immediate= */ false);
waitForCompletion();
- assertFalse(mThread.isRunningVibrationId(vibration.id));
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isFalse();
verify(mManagerHooks).noteVibratorOn(eq(UID), anyLong());
verify(mManagerHooks).noteVibratorOff(eq(UID));
verifyCallbacksTriggered(vibration, Status.CANCELLED_SUPERSEDED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
List<Float> playedAmplitudes = fakeVibrator.getAmplitudes();
- assertFalse(fakeVibrator.getEffectSegments(vibration.id).isEmpty());
- assertFalse(playedAmplitudes.isEmpty());
+ assertThat(fakeVibrator.getEffectSegments(vibration.id)).isNotEmpty();
+ assertThat(playedAmplitudes).isNotEmpty();
for (int i = 0; i < playedAmplitudes.size(); i++) {
- assertEquals(amplitudes[i % amplitudes.length] / 255f, playedAmplitudes.get(i), 1e-5);
+ assertWithMessage("For amplitude index %s", i)
+ .that(amplitudes[i % amplitudes.length] / 255f)
+ .isWithin(1e-5f).of(playedAmplitudes.get(i));
}
}
@@ -364,15 +368,16 @@
new long[]{1, 10, 100}, amplitudes, 0);
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> !fakeVibrator.getAmplitudes().isEmpty(), TEST_TIMEOUT_MILLIS));
+ assertThat(waitUntil(() -> !fakeVibrator.getAmplitudes().isEmpty(), TEST_TIMEOUT_MILLIS))
+ .isTrue();
mVibrationConductor.notifyCancelled(
new Vibration.EndInfo(Status.CANCELLED_BY_USER), /* immediate= */ false);
waitForCompletion();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_USER);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(Arrays.asList(expectedOneShot(5000)),
- fakeVibrator.getEffectSegments(vibration.id));
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(5000)).inOrder();
}
@Test
@@ -391,7 +396,7 @@
assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
- .isEqualTo(expectedOneShots(100L, 150L));
+ .containsExactlyElementsIn(expectedOneShots(100L, 150L)).inOrder();
}
@Test
@@ -412,7 +417,7 @@
assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
- .isEqualTo(expectedOneShots(200L, 50L));
+ .containsExactlyElementsIn(expectedOneShots(200L, 50L)).inOrder();
}
@EnableFlags(Flags.FLAG_FIX_VIBRATION_THREAD_CALLBACK_HANDLING)
@@ -433,8 +438,8 @@
// 300ms ON (100ms + 200ms looping to the start and skipping first 0ms)
// 150ms ON (100ms + 50ms, skips 0ms)
// 300ms ON (100ms + 200ms looping to the start and skipping first 0ms)
- assertTrue(waitUntil(() -> fakeVibrator.getEffectSegments(vibration.id).size() >= 5,
- 5000L + TEST_TIMEOUT_MILLIS));
+ assertThat(waitUntil(() -> fakeVibrator.getEffectSegments(vibration.id).size() >= 5,
+ 5000L + TEST_TIMEOUT_MILLIS)).isTrue();
mVibrationConductor.notifyCancelled(
new Vibration.EndInfo(Status.CANCELLED_BY_USER), /* immediate= */ false);
waitForCompletion();
@@ -444,7 +449,8 @@
assertThat(
mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id).subList(0, 5))
- .isEqualTo(expectedOneShots(200L, 150L, 300L, 150L, 300L));
+ .containsExactlyElementsIn(expectedOneShots(200L, 150L, 300L, 150L, 300L))
+ .inOrder();
}
@EnableFlags(Flags.FLAG_FIX_VIBRATION_THREAD_CALLBACK_HANDLING)
@@ -468,7 +474,7 @@
// First callback ignored, did not cause the vibrator to turn back on during the 400ms step.
assertThat(fakeVibrator.getEffectSegments(vibration.id))
- .isEqualTo(expectedOneShots(200L, 400L));
+ .containsExactlyElementsIn(expectedOneShots(200L, 400L)).inOrder();
}
@Test
@@ -490,16 +496,16 @@
.compose();
HalVibration vibration = startThreadAndDispatcher(repeatingEffect);
- assertTrue(waitUntil(() -> !fakeVibrator.getEffectSegments(vibration.id).isEmpty(),
- TEST_TIMEOUT_MILLIS));
+ assertThat(waitUntil(() -> !fakeVibrator.getEffectSegments(vibration.id).isEmpty(),
+ TEST_TIMEOUT_MILLIS)).isTrue();
mVibrationConductor.notifyCancelled(
new Vibration.EndInfo(Status.CANCELLED_BY_USER), /* immediate= */ false);
waitForCompletion();
// PWLE size max was used to generate a single vibrate call with 10 segments.
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_USER);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(10, fakeVibrator.getEffectSegments(vibration.id).size());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectSegments(vibration.id)).hasSize(10);
}
@Test
@@ -519,16 +525,16 @@
.compose();
HalVibration vibration = startThreadAndDispatcher(repeatingEffect);
- assertTrue(waitUntil(() -> !fakeVibrator.getEffectSegments(vibration.id).isEmpty(),
- TEST_TIMEOUT_MILLIS));
+ assertThat(waitUntil(() -> !fakeVibrator.getEffectSegments(vibration.id).isEmpty(),
+ TEST_TIMEOUT_MILLIS)).isTrue();
mVibrationConductor.notifyCancelled(
new Vibration.EndInfo(Status.CANCELLED_BY_SCREEN_OFF), /* immediate= */ false);
waitForCompletion();
// Composition size max was used to generate a single vibrate call with 10 primitives.
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_SCREEN_OFF);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(10, fakeVibrator.getEffectSegments(vibration.id).size());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectSegments(vibration.id)).hasSize(10);
}
@Test
@@ -542,15 +548,16 @@
new long[]{5000, 500, 50}, amplitudes, 0);
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> !fakeVibrator.getAmplitudes().isEmpty(), TEST_TIMEOUT_MILLIS));
+ assertThat(waitUntil(() -> !fakeVibrator.getAmplitudes().isEmpty(), TEST_TIMEOUT_MILLIS))
+ .isTrue();
mVibrationConductor.notifyCancelled(
new Vibration.EndInfo(Status.CANCELLED_BY_USER), /* immediate= */ false);
waitForCompletion();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_USER);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(Arrays.asList(expectedOneShot(5550)),
- fakeVibrator.getEffectSegments(vibration.id));
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(5550)).inOrder();
}
@LargeTest
@@ -566,23 +573,24 @@
/* amplitudes= */ new int[]{1, 2}, /* repeat= */ 0);
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> fakeVibrator.getEffectSegments(vibration.id).size() > 1,
- expectedOnDuration + TEST_TIMEOUT_MILLIS));
+ assertThat(waitUntil(() -> fakeVibrator.getEffectSegments(vibration.id).size() > 1,
+ expectedOnDuration + TEST_TIMEOUT_MILLIS)).isTrue();
mVibrationConductor.notifyCancelled(
new Vibration.EndInfo(Status.CANCELLED_BY_USER), /* immediate= */ false);
waitForCompletion();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_USER);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
List<VibrationEffectSegment> effectSegments = fakeVibrator.getEffectSegments(vibration.id);
// First time, turn vibrator ON for the expected fixed duration.
- assertEquals(expectedOnDuration, effectSegments.get(0).getDuration());
+ assertThat(effectSegments.get(0).getDuration()).isEqualTo(expectedOnDuration);
// Vibrator turns off in the middle of the second execution of the first step. Expect it to
// be turned back ON at least for the fixed duration + the remaining duration of the step.
- assertTrue(expectedOnDuration < effectSegments.get(1).getDuration());
+ assertThat(effectSegments.get(1).getDuration()).isGreaterThan(expectedOnDuration);
// Set amplitudes for a cycle {1, 2}, start second loop then turn it back on to same value.
- assertEquals(expectedAmplitudes(1, 2, 1, 1),
- mVibratorProviders.get(VIBRATOR_ID).getAmplitudes().subList(0, 4));
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes().subList(0, 4))
+ .containsExactlyElementsIn(expectedAmplitudes(1, 2, 1, 1))
+ .inOrder();
}
@Test
@@ -598,9 +606,9 @@
.compose();
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
- TEST_TIMEOUT_MILLIS));
- assertTrue(mThread.isRunningVibrationId(vibration.id));
+ assertThat(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
+ TEST_TIMEOUT_MILLIS)).isTrue();
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
// Run cancel in a separate thread so if VibrationThread.cancel blocks then this test should
// fail at waitForCompletion(vibrationThread) if the vibration not cancelled immediately.
@@ -614,7 +622,7 @@
cancellingThread.join();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_SETTINGS_UPDATE);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
}
@Test
@@ -628,9 +636,9 @@
VibrationEffect effect = VibrationEffect.createVendorEffect(createTestVendorData());
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
- TEST_TIMEOUT_MILLIS));
- assertTrue(mThread.isRunningVibrationId(vibration.id));
+ assertThat(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
+ TEST_TIMEOUT_MILLIS)).isTrue();
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
// Run cancel in a separate thread so if VibrationThread.cancel blocks then this test should
// fail at waitForCompletion(vibrationThread) if the vibration not cancelled immediately.
@@ -644,7 +652,7 @@
cancellingThread.join();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_SETTINGS_UPDATE);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
}
@Test
@@ -655,9 +663,9 @@
VibrationEffect effect = VibrationEffect.createWaveform(new long[]{100}, new int[]{100}, 0);
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
- TEST_TIMEOUT_MILLIS));
- assertTrue(mThread.isRunningVibrationId(vibration.id));
+ assertThat(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
+ TEST_TIMEOUT_MILLIS)).isTrue();
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
// Run cancel in a separate thread so if VibrationThread.cancel blocks then this test should
// fail at waitForCompletion(vibrationThread) if the vibration not cancelled immediately.
@@ -671,7 +679,7 @@
cancellingThread.join();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_SCREEN_OFF);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
}
@Test
@@ -686,10 +694,10 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
- assertEquals(Arrays.asList(expectedPrebaked(VibrationEffect.EFFECT_THUD)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrebaked(VibrationEffect.EFFECT_THUD)).inOrder();
}
@Test
@@ -698,7 +706,7 @@
VibrationEffect fallback = VibrationEffect.createOneShot(10, 100);
HalVibration vibration = createVibration(CombinedVibration.createParallel(
- VibrationEffect.get(VibrationEffect.EFFECT_CLICK)));
+ VibrationEffect.get(EFFECT_CLICK)));
vibration.fillFallbacks(unused -> fallback);
startThreadAndDispatcher(vibration);
waitForCompletion();
@@ -707,16 +715,17 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
- assertEquals(Arrays.asList(expectedOneShot(10)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(100), mVibratorProviders.get(VIBRATOR_ID).getAmplitudes());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(10)).inOrder();
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(100)).inOrder();
}
@Test
public void vibrate_singleVibratorPrebakedAndUnsupportedEffect_ignoresVibration() {
- VibrationEffect effect = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
+ VibrationEffect effect = VibrationEffect.get(EFFECT_CLICK);
HalVibration vibration = startThreadAndDispatcher(effect);
waitForCompletion();
@@ -725,7 +734,7 @@
verify(mControllerCallbacks, never())
.onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.IGNORED_UNSUPPORTED);
- assertTrue(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id).isEmpty());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id)).isEmpty();
}
@Test
@@ -745,8 +754,7 @@
assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
assertThat(mVibratorProviders.get(VIBRATOR_ID).getVendorEffects(vibration.id))
- .containsExactly(effect)
- .inOrder();
+ .containsExactly(effect).inOrder();
}
@Test
@@ -766,11 +774,12 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(Arrays.asList(
- expectedPrimitive(PRIMITIVE_CLICK, 1, 0),
- expectedPrimitive(PRIMITIVE_TICK, 0.5f, 0)),
- fakeVibrator.getEffectSegments(vibration.id));
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectSegments(vibration.id))
+ .containsExactly(
+ expectedPrimitive(PRIMITIVE_CLICK, 1, 0),
+ expectedPrimitive(PRIMITIVE_TICK, 0.5f, 0))
+ .inOrder();
}
@Test
@@ -787,7 +796,7 @@
verify(mControllerCallbacks, never())
.onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.IGNORED_UNSUPPORTED);
- assertTrue(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id).isEmpty());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id)).isEmpty();
}
@Test
@@ -804,7 +813,7 @@
verify(mControllerCallbacks, never())
.onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.IGNORED_UNSUPPORTED);
- assertTrue(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id).isEmpty());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id)).isEmpty();
}
@Test
@@ -826,14 +835,14 @@
// Vibrator compose called twice.
verify(mControllerCallbacks, times(2))
.onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
- assertEquals(3, fakeVibrator.getEffectSegments(vibration.id).size());
+ assertThat(fakeVibrator.getEffectSegments(vibration.id)).hasSize(3);
}
@Test
@DisableFlags(Flags.FLAG_NORMALIZED_PWLE_EFFECTS)
public void vibrate_singleVibratorComposedEffects_runsDifferentVibrations() {
FakeVibratorControllerProvider fakeVibrator = mVibratorProviders.get(VIBRATOR_ID);
- fakeVibrator.setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ fakeVibrator.setSupportedEffects(EFFECT_CLICK);
fakeVibrator.setSupportedPrimitives(PRIMITIVE_CLICK, PRIMITIVE_TICK);
fakeVibrator.setCapabilities(IVibrator.CAP_COMPOSE_EFFECTS,
IVibrator.CAP_COMPOSE_PWLE_EFFECTS, IVibrator.CAP_AMPLITUDE_CONTROL);
@@ -847,13 +856,13 @@
.addEffect(VibrationEffect.createOneShot(10, 100))
.addPrimitive(PRIMITIVE_CLICK, 1f)
.addPrimitive(PRIMITIVE_TICK, 0.5f)
- .addEffect(VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
+ .addEffect(VibrationEffect.get(EFFECT_CLICK))
.addEffect(VibrationEffect.startWaveform()
.addTransition(Duration.ofMillis(10),
targetAmplitude(1), targetFrequency(100))
.addTransition(Duration.ofMillis(20), targetFrequency(120))
.build())
- .addEffect(VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
+ .addEffect(VibrationEffect.get(EFFECT_CLICK))
.compose();
HalVibration vibration = startThreadAndDispatcher(effect);
waitForCompletion();
@@ -864,33 +873,37 @@
verify(mControllerCallbacks, times(5))
.onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(Arrays.asList(
- expectedOneShot(10),
- expectedPrimitive(PRIMITIVE_CLICK, 1, 0),
- expectedPrimitive(PRIMITIVE_TICK, 0.5f, 0),
- expectedPrebaked(VibrationEffect.EFFECT_CLICK),
- expectedRamp(/* startAmplitude= */ 0, /* endAmplitude= */ 0.5f,
- /* startFrequencyHz= */ 150, /* endFrequencyHz= */ 100, /* duration= */ 10),
- expectedRamp(/* startAmplitude= */ 0.5f, /* endAmplitude= */ 0.7f,
- /* startFrequencyHz= */ 100, /* endFrequencyHz= */ 120, /* duration= */ 20),
- expectedPrebaked(VibrationEffect.EFFECT_CLICK)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(100), mVibratorProviders.get(VIBRATOR_ID).getAmplitudes());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(
+ expectedOneShot(10),
+ expectedPrimitive(PRIMITIVE_CLICK, 1, 0),
+ expectedPrimitive(PRIMITIVE_TICK, 0.5f, 0),
+ expectedPrebaked(EFFECT_CLICK),
+ expectedRamp(/* startAmplitude= */ 0, /* endAmplitude= */ 0.5f,
+ /* startFrequencyHz= */ 150, /* endFrequencyHz= */ 100,
+ /* duration= */ 10),
+ expectedRamp(/* startAmplitude= */ 0.5f, /* endAmplitude= */ 0.7f,
+ /* startFrequencyHz= */ 100, /* endFrequencyHz= */ 120,
+ /* duration= */ 20),
+ expectedPrebaked(EFFECT_CLICK))
+ .inOrder();
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(100)).inOrder();
}
@Test
public void vibrate_singleVibratorComposedWithFallback_replacedInTheMiddleOfComposition() {
FakeVibratorControllerProvider fakeVibrator = mVibratorProviders.get(VIBRATOR_ID);
- fakeVibrator.setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ fakeVibrator.setSupportedEffects(EFFECT_CLICK);
fakeVibrator.setSupportedPrimitives(PRIMITIVE_CLICK, PRIMITIVE_TICK);
fakeVibrator.setCapabilities(IVibrator.CAP_COMPOSE_EFFECTS);
VibrationEffect fallback = VibrationEffect.createOneShot(10, 100);
VibrationEffect effect = VibrationEffect.startComposition()
- .addEffect(VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
+ .addEffect(VibrationEffect.get(EFFECT_CLICK))
.addPrimitive(PRIMITIVE_CLICK, 1f)
- .addEffect(VibrationEffect.get(VibrationEffect.EFFECT_TICK))
+ .addEffect(VibrationEffect.get(EFFECT_TICK))
.addPrimitive(PRIMITIVE_TICK, 0.5f)
.compose();
HalVibration vibration = createVibration(CombinedVibration.createParallel(effect));
@@ -904,18 +917,19 @@
verify(mControllerCallbacks, times(4))
.onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
List<VibrationEffectSegment> segments =
mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id);
- assertTrue("Wrong segments: " + segments, segments.size() >= 4);
- assertTrue(segments.get(0) instanceof PrebakedSegment);
- assertTrue(segments.get(1) instanceof PrimitiveSegment);
+ assertWithMessage("Wrong segments: %s", segments).that(segments.size()).isGreaterThan(3);
+ assertThat(segments.get(0)).isInstanceOf(PrebakedSegment.class);
+ assertThat(segments.get(1)).isInstanceOf(PrimitiveSegment.class);
for (int i = 2; i < segments.size() - 1; i++) {
// One or more step segments as fallback for the EFFECT_TICK.
- assertTrue(segments.get(i) instanceof StepSegment);
+ assertWithMessage("For segment index %s", i)
+ .that(segments.get(i)).isInstanceOf(StepSegment.class);
}
- assertTrue(segments.get(segments.size() - 1) instanceof PrimitiveSegment);
+ assertThat(segments.get(segments.size() - 1)).isInstanceOf(PrimitiveSegment.class);
}
@Test
@@ -942,14 +956,15 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(Arrays.asList(
- expectedPwle(/*amplitude=*/ 0.0f, /*frequencyHz=*/ 60f, /*timeMillis=*/ 0),
- expectedPwle(/*amplitude=*/ 0.1f, /*frequencyHz=*/ 60f, /*timeMillis=*/ 20),
- expectedPwle(/*amplitude=*/ 0.3f, /*frequencyHz=*/ 100f, /*timeMillis=*/ 30),
- expectedPwle(/*amplitude=*/ 0.4f, /*frequencyHz=*/ 120f, /*timeMillis=*/ 20),
- expectedPwle(/*amplitude=*/ 0.0f, /*frequencyHz=*/ 120f, /*timeMillis=*/ 30)
- ), fakeVibrator.getEffectPwlePoints(vibration.id));
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectPwlePoints(vibration.id))
+ .containsExactly(
+ expectedPwle(0.0f, 60f, 0),
+ expectedPwle(0.1f, 60f, 20),
+ expectedPwle(0.3f, 100f, 30),
+ expectedPwle(0.4f, 120f, 20),
+ expectedPwle(0.0f, 120f, 30))
+ .inOrder();
}
@@ -978,13 +993,14 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(Arrays.asList(
- expectedPwle(/*amplitude=*/ 0.0f, /*frequencyHz=*/ 150f, /*timeMillis=*/ 0),
- expectedPwle(/*amplitude=*/ 1.0f, /*frequencyHz=*/ 150f, /*timeMillis=*/ 20),
- expectedPwle(/*amplitude=*/ 1.0f, /*frequencyHz=*/ 150f, /*timeMillis=*/ 100),
- expectedPwle(/*amplitude=*/ 0.0f, /*frequencyHz=*/ 150f, /*timeMillis=*/ 100)
- ), fakeVibrator.getEffectPwlePoints(vibration.id));
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectPwlePoints(vibration.id))
+ .containsExactly(
+ expectedPwle(0.0f, 150f, 0),
+ expectedPwle(1.0f, 150f, 20),
+ expectedPwle(1.0f, 150f, 100),
+ expectedPwle(0.0f, 150f, 100))
+ .inOrder();
}
@@ -1014,15 +1030,15 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(Arrays.asList(
- expectedPwle(/*amplitude=*/ 0.0f, /*frequencyHz=*/ 30f, /*timeMillis=*/ 0),
- expectedPwle(/*amplitude=*/ 0.1f, /*frequencyHz=*/ 60f, /*timeMillis=*/ 20),
- expectedPwle(/*amplitude=*/ 0.3f, /*frequencyHz=*/ 100f, /*timeMillis=*/ 30),
- expectedPwle(/*amplitude=*/ 0.4f, /*frequencyHz=*/ 120f, /*timeMillis=*/ 20),
- expectedPwle(/*amplitude=*/ 0.0f, /*frequencyHz=*/ 120f, /*timeMillis=*/ 30)
- ), fakeVibrator.getEffectPwlePoints(vibration.id));
-
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectPwlePoints(vibration.id))
+ .containsExactly(
+ expectedPwle(0.0f, 30f, 0),
+ expectedPwle(0.1f, 60f, 20),
+ expectedPwle(0.3f, 100f, 30),
+ expectedPwle(0.4f, 120f, 20),
+ expectedPwle(0.0f, 120f, 30))
+ .inOrder();
}
@Test
@@ -1054,18 +1070,17 @@
// Using best split points instead of max-packing PWLEs.
verify(mControllerCallbacks, times(3))
.onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
-
- assertEquals(Arrays.asList(
- expectedPwle(/*amplitude=*/ 0.0f, /*frequencyHz=*/ 100f, /*timeMillis=*/ 0),
- expectedPwle(/*amplitude=*/ 0.8f, /*frequencyHz=*/ 100f, /*timeMillis=*/ 30),
- expectedPwle(/*amplitude=*/ 0.0f, /*frequencyHz=*/ 100f, /*timeMillis=*/ 30),
- expectedPwle(/*amplitude=*/ 0.9f, /*frequencyHz=*/ 100f, /*timeMillis=*/ 0),
- expectedPwle(/*amplitude=*/ 0.4f, /*frequencyHz=*/ 100f, /*timeMillis=*/ 30),
- expectedPwle(/*amplitude=*/ 0.6f, /*frequencyHz=*/ 100f, /*timeMillis=*/ 0),
- expectedPwle(/*amplitude=*/ 0.7f, /*frequencyHz=*/ 100f, /*timeMillis=*/ 30)
- ), fakeVibrator.getEffectPwlePoints(vibration.id));
-
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectPwlePoints(vibration.id))
+ .containsExactly(
+ expectedPwle(0.0f, 100f, 0),
+ expectedPwle(0.8f, 100f, 30),
+ expectedPwle(0.0f, 100f, 30),
+ expectedPwle(0.9f, 100f, 0),
+ expectedPwle(0.4f, 100f, 30),
+ expectedPwle(0.6f, 100f, 0),
+ expectedPwle(0.7f, 100f, 30))
+ .inOrder();
}
@Test
@@ -1094,17 +1109,21 @@
verify(mManagerHooks).noteVibratorOff(eq(UID));
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
- assertEquals(Arrays.asList(
- expectedRamp(/* amplitude= */ 1, /* frequencyHz= */ 150, /* duration= */ 10),
- expectedRamp(/* startAmplitude= */ 1, /* endAmplitude= */ 0,
- /* startFrequencyHz= */ 150, /* endFrequencyHz= */ 150, /* duration= */ 20),
- expectedRamp(/* amplitude= */ 0.5f, /* frequencyHz= */ 100, /* duration= */ 30),
- expectedRamp(/* startAmplitude= */ 0.5f, /* endAmplitude= */ 0.6f,
- /* startFrequencyHz= */ 100, /* endFrequencyHz= */ 200,
- /* duration= */ 40)),
- fakeVibrator.getEffectSegments(vibration.id));
- assertEquals(Arrays.asList(Braking.CLAB), fakeVibrator.getBraking(vibration.id));
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
+ assertThat(fakeVibrator.getEffectSegments(vibration.id))
+ .containsExactly(
+ expectedRamp(/* amplitude= */ 1, /* frequencyHz= */ 150,
+ /* duration= */ 10),
+ expectedRamp(/* startAmplitude= */ 1, /* endAmplitude= */ 0,
+ /* startFrequencyHz= */ 150, /* endFrequencyHz= */ 150,
+ /* duration= */ 20),
+ expectedRamp(/* amplitude= */ 0.5f, /* frequencyHz= */ 100,
+ /* duration= */ 30),
+ expectedRamp(/* startAmplitude= */ 0.5f, /* endAmplitude= */ 0.6f,
+ /* startFrequencyHz= */ 100, /* endFrequencyHz= */ 200,
+ /* duration= */ 40))
+ .inOrder();
+ assertThat(fakeVibrator.getBraking(vibration.id)).containsExactly(Braking.CLAB).inOrder();
}
@Test
@@ -1137,7 +1156,7 @@
// Using best split points instead of max-packing PWLEs.
verify(mControllerCallbacks, times(3))
.onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
- assertEquals(6, fakeVibrator.getEffectSegments(vibration.id).size());
+ assertThat(fakeVibrator.getEffectSegments(vibration.id)).hasSize(6);
}
@Test
@@ -1148,15 +1167,16 @@
VibrationEffect effect = VibrationEffect.createWaveform(new long[]{5}, new int[]{100}, 0);
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> fakeVibrator.getAmplitudes().size() > 2, TEST_TIMEOUT_MILLIS));
+ assertThat(waitUntil(() -> fakeVibrator.getAmplitudes().size() > 2, TEST_TIMEOUT_MILLIS))
+ .isTrue();
// Vibration still running after 2 cycles.
- assertTrue(mThread.isRunningVibrationId(vibration.id));
- assertTrue(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isTrue();
mVibrationConductor.notifyCancelled(
new Vibration.EndInfo(Status.CANCELLED_BINDER_DIED), /* immediate= */ false);
waitForCompletion();
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BINDER_DIED);
}
@@ -1176,11 +1196,11 @@
@Test
public void vibrate_multipleExistingAndMissingVibrators_vibratesOnlyExistingOnes() {
- mVibratorProviders.get(1).setSupportedEffects(VibrationEffect.EFFECT_TICK);
+ mVibratorProviders.get(1).setSupportedEffects(EFFECT_TICK);
CombinedVibration effect = CombinedVibration.startParallel()
- .addVibrator(VIBRATOR_ID, VibrationEffect.get(VibrationEffect.EFFECT_TICK))
- .addVibrator(2, VibrationEffect.get(VibrationEffect.EFFECT_TICK))
+ .addVibrator(VIBRATOR_ID, VibrationEffect.get(EFFECT_TICK))
+ .addVibrator(2, VibrationEffect.get(EFFECT_TICK))
.combine();
HalVibration vibration = startThreadAndDispatcher(effect);
waitForCompletion();
@@ -1190,21 +1210,21 @@
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verify(mControllerCallbacks, never()).onComplete(eq(2), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
- assertEquals(Arrays.asList(expectedPrebaked(VibrationEffect.EFFECT_TICK)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrebaked(EFFECT_TICK)).inOrder();
}
@Test
public void vibrate_multipleMono_runsSameEffectInAllVibrators() {
mockVibrators(1, 2, 3);
- mVibratorProviders.get(1).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
- mVibratorProviders.get(2).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
- mVibratorProviders.get(3).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ mVibratorProviders.get(1).setSupportedEffects(EFFECT_CLICK);
+ mVibratorProviders.get(2).setSupportedEffects(EFFECT_CLICK);
+ mVibratorProviders.get(3).setSupportedEffects(EFFECT_CLICK);
CombinedVibration effect = CombinedVibration.createParallel(
- VibrationEffect.get(VibrationEffect.EFFECT_CLICK));
+ VibrationEffect.get(EFFECT_CLICK));
HalVibration vibration = startThreadAndDispatcher(effect);
waitForCompletion();
@@ -1214,23 +1234,23 @@
verify(mControllerCallbacks).onComplete(eq(2), eq(vibration.id), anyLong());
verify(mControllerCallbacks).onComplete(eq(3), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(1).isVibrating());
- assertFalse(mControllers.get(2).isVibrating());
- assertFalse(mControllers.get(3).isVibrating());
+ assertThat(mControllers.get(1).isVibrating()).isFalse();
+ assertThat(mControllers.get(2).isVibrating()).isFalse();
+ assertThat(mControllers.get(3).isVibrating()).isFalse();
- VibrationEffectSegment expected = expectedPrebaked(VibrationEffect.EFFECT_CLICK);
- assertEquals(Arrays.asList(expected),
- mVibratorProviders.get(1).getEffectSegments(vibration.id));
- assertEquals(Arrays.asList(expected),
- mVibratorProviders.get(2).getEffectSegments(vibration.id));
- assertEquals(Arrays.asList(expected),
- mVibratorProviders.get(3).getEffectSegments(vibration.id));
+ VibrationEffectSegment expected = expectedPrebaked(EFFECT_CLICK);
+ assertThat(mVibratorProviders.get(1).getEffectSegments(vibration.id))
+ .containsExactly(expected).inOrder();
+ assertThat(mVibratorProviders.get(2).getEffectSegments(vibration.id))
+ .containsExactly(expected).inOrder();
+ assertThat(mVibratorProviders.get(3).getEffectSegments(vibration.id))
+ .containsExactly(expected).inOrder();
}
@Test
public void vibrate_multipleStereo_runsVibrationOnRightVibrators() {
mockVibrators(1, 2, 3, 4);
- mVibratorProviders.get(1).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ mVibratorProviders.get(1).setSupportedEffects(EFFECT_CLICK);
mVibratorProviders.get(2).setCapabilities(IVibrator.CAP_AMPLITUDE_CONTROL);
mVibratorProviders.get(3).setCapabilities(IVibrator.CAP_AMPLITUDE_CONTROL);
mVibratorProviders.get(4).setCapabilities(IVibrator.CAP_COMPOSE_EFFECTS);
@@ -1240,7 +1260,7 @@
.addPrimitive(PRIMITIVE_CLICK)
.compose();
CombinedVibration effect = CombinedVibration.startParallel()
- .addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
+ .addVibrator(1, VibrationEffect.get(EFFECT_CLICK))
.addVibrator(2, VibrationEffect.createOneShot(10, 100))
.addVibrator(3, VibrationEffect.createWaveform(
new long[]{10, 10}, new int[]{1, 2}, -1))
@@ -1256,21 +1276,23 @@
verify(mControllerCallbacks).onComplete(eq(3), eq(vibration.id), anyLong());
verify(mControllerCallbacks).onComplete(eq(4), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(1).isVibrating());
- assertFalse(mControllers.get(2).isVibrating());
- assertFalse(mControllers.get(3).isVibrating());
- assertFalse(mControllers.get(4).isVibrating());
+ assertThat(mControllers.get(1).isVibrating()).isFalse();
+ assertThat(mControllers.get(2).isVibrating()).isFalse();
+ assertThat(mControllers.get(3).isVibrating()).isFalse();
+ assertThat(mControllers.get(4).isVibrating()).isFalse();
- assertEquals(Arrays.asList(expectedPrebaked(VibrationEffect.EFFECT_CLICK)),
- mVibratorProviders.get(1).getEffectSegments(vibration.id));
- assertEquals(Arrays.asList(expectedOneShot(10)),
- mVibratorProviders.get(2).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(100), mVibratorProviders.get(2).getAmplitudes());
- assertEquals(Arrays.asList(expectedOneShot(20)),
- mVibratorProviders.get(3).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(1, 2), mVibratorProviders.get(3).getAmplitudes());
- assertEquals(Arrays.asList(expectedPrimitive(PRIMITIVE_CLICK, 1, 0)),
- mVibratorProviders.get(4).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(1).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrebaked(EFFECT_CLICK)).inOrder();
+ assertThat(mVibratorProviders.get(2).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(10)).inOrder();
+ assertThat(mVibratorProviders.get(2).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(100)).inOrder();
+ assertThat(mVibratorProviders.get(3).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(20)).inOrder();
+ assertThat(mVibratorProviders.get(3).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(1, 2)).inOrder();
+ assertThat(mVibratorProviders.get(4).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrimitive(PRIMITIVE_CLICK, 1, 0)).inOrder();
}
@Test
@@ -1279,13 +1301,13 @@
mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_AMPLITUDE_CONTROL);
mVibratorProviders.get(2).setCapabilities(IVibrator.CAP_COMPOSE_EFFECTS);
mVibratorProviders.get(2).setSupportedPrimitives(PRIMITIVE_CLICK);
- mVibratorProviders.get(3).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ mVibratorProviders.get(3).setSupportedEffects(EFFECT_CLICK);
VibrationEffect composed = VibrationEffect.startComposition()
.addPrimitive(PRIMITIVE_CLICK)
.compose();
CombinedVibration effect = CombinedVibration.startSequential()
- .addNext(3, VibrationEffect.get(VibrationEffect.EFFECT_CLICK), /* delay= */ 50)
+ .addNext(3, VibrationEffect.get(EFFECT_CLICK), /* delay= */ 50)
.addNext(1, VibrationEffect.createOneShot(10, 100), /* delay= */ 50)
.addNext(2, composed, /* delay= */ 50)
.combine();
@@ -1306,17 +1328,18 @@
batteryVerifier.verify(mManagerHooks).noteVibratorOff(eq(UID));
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(1).isVibrating());
- assertFalse(mControllers.get(2).isVibrating());
- assertFalse(mControllers.get(3).isVibrating());
+ assertThat(mControllers.get(1).isVibrating()).isFalse();
+ assertThat(mControllers.get(2).isVibrating()).isFalse();
+ assertThat(mControllers.get(3).isVibrating()).isFalse();
- assertEquals(Arrays.asList(expectedOneShot(10)),
- mVibratorProviders.get(1).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(100), mVibratorProviders.get(1).getAmplitudes());
- assertEquals(Arrays.asList(expectedPrimitive(PRIMITIVE_CLICK, 1, 0)),
- mVibratorProviders.get(2).getEffectSegments(vibration.id));
- assertEquals(Arrays.asList(expectedPrebaked(VibrationEffect.EFFECT_CLICK)),
- mVibratorProviders.get(3).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(1).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(10)).inOrder();
+ assertThat(mVibratorProviders.get(1).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(100)).inOrder();
+ assertThat(mVibratorProviders.get(2).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrimitive(PRIMITIVE_CLICK, 1, 0)).inOrder();
+ assertThat(mVibratorProviders.get(3).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrebaked(EFFECT_CLICK)).inOrder();
}
@Test
@@ -1339,10 +1362,10 @@
when(mManagerHooks.triggerSyncedVibration(eq(vibration.id))).thenReturn(true);
startThreadAndDispatcher(vibration);
- assertTrue(waitUntil(
+ assertThat(waitUntil(
() -> !mVibratorProviders.get(1).getEffectSegments(vibration.id).isEmpty()
&& !mVibratorProviders.get(2).getEffectSegments(vibration.id).isEmpty(),
- TEST_TIMEOUT_MILLIS));
+ TEST_TIMEOUT_MILLIS)).isTrue();
mVibrationConductor.notifySyncedVibrationComplete();
waitForCompletion();
@@ -1353,17 +1376,17 @@
verifyCallbacksTriggered(vibration, Status.FINISHED);
VibrationEffectSegment expected = expectedPrimitive(PRIMITIVE_CLICK, 1, 100);
- assertEquals(Arrays.asList(expected),
- mVibratorProviders.get(1).getEffectSegments(vibration.id));
- assertEquals(Arrays.asList(expected),
- mVibratorProviders.get(2).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(1).getEffectSegments(vibration.id))
+ .containsExactly(expected).inOrder();
+ assertThat(mVibratorProviders.get(2).getEffectSegments(vibration.id))
+ .containsExactly(expected).inOrder();
}
@Test
public void vibrate_multipleSynced_callsPrepareAndTriggerCallbacks() {
int[] vibratorIds = new int[]{1, 2, 3, 4};
mockVibrators(vibratorIds);
- mVibratorProviders.get(1).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ mVibratorProviders.get(1).setSupportedEffects(EFFECT_CLICK);
mVibratorProviders.get(4).setCapabilities(IVibrator.CAP_COMPOSE_EFFECTS);
mVibratorProviders.get(4).setSupportedPrimitives(PRIMITIVE_CLICK);
when(mManagerHooks.prepareSyncedVibration(anyLong(), any())).thenReturn(true);
@@ -1372,7 +1395,7 @@
.addPrimitive(PRIMITIVE_CLICK)
.compose();
CombinedVibration effect = CombinedVibration.startParallel()
- .addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
+ .addVibrator(1, VibrationEffect.get(EFFECT_CLICK))
.addVibrator(2, VibrationEffect.createOneShot(10, 100))
.addVibrator(3, VibrationEffect.createWaveform(new long[]{10}, new int[]{100}, -1))
.addVibrator(4, composed)
@@ -1417,24 +1440,26 @@
verify(mManagerHooks, never()).triggerSyncedVibration(eq(vibration.id));
verify(mManagerHooks, never()).cancelSyncedVibration();
- assertEquals(Arrays.asList(expectedOneShot(10)),
- mVibratorProviders.get(1).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(100), mVibratorProviders.get(1).getAmplitudes());
- assertEquals(Arrays.asList(expectedOneShot(5)),
- mVibratorProviders.get(2).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(200), mVibratorProviders.get(2).getAmplitudes());
+ assertThat(mVibratorProviders.get(1).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(10)).inOrder();
+ assertThat(mVibratorProviders.get(1).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(100)).inOrder();
+ assertThat(mVibratorProviders.get(2).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(5)).inOrder();
+ assertThat(mVibratorProviders.get(2).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(200)).inOrder();
}
@Test
public void vibrate_multipleSyncedTriggerFailed_cancelPreparedVibrationAndSkipSetAmplitude() {
int[] vibratorIds = new int[]{1, 2};
mockVibrators(vibratorIds);
- mVibratorProviders.get(2).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ mVibratorProviders.get(2).setSupportedEffects(EFFECT_CLICK);
when(mManagerHooks.prepareSyncedVibration(anyLong(), any())).thenReturn(true);
CombinedVibration effect = CombinedVibration.startParallel()
.addVibrator(1, VibrationEffect.createOneShot(10, 100))
- .addVibrator(2, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
+ .addVibrator(2, VibrationEffect.get(EFFECT_CLICK))
.combine();
// We create the HalVibration here to obtain the vibration id and use it to mock the
// required response when calling triggerSyncedVibration.
@@ -1451,7 +1476,7 @@
verify(mManagerHooks).prepareSyncedVibration(eq(expectedCap), eq(vibratorIds));
verify(mManagerHooks).triggerSyncedVibration(eq(vibration.id));
verify(mManagerHooks).cancelSyncedVibration();
- assertTrue(mVibratorProviders.get(1).getAmplitudes().isEmpty());
+ assertThat(mVibratorProviders.get(1).getAmplitudes()).isEmpty();
}
@Test
@@ -1472,11 +1497,11 @@
HalVibration vibration = startThreadAndDispatcher(effect);
// All vibrators are turned on in parallel.
- assertTrue(waitUntil(
+ assertThat(waitUntil(
() -> mControllers.get(1).isVibrating()
&& mControllers.get(2).isVibrating()
&& mControllers.get(3).isVibrating(),
- TEST_TIMEOUT_MILLIS));
+ TEST_TIMEOUT_MILLIS)).isTrue();
waitForCompletion();
@@ -1486,19 +1511,23 @@
verify(mControllerCallbacks).onComplete(eq(2), eq(vibration.id), anyLong());
verify(mControllerCallbacks).onComplete(eq(3), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertFalse(mControllers.get(1).isVibrating());
- assertFalse(mControllers.get(2).isVibrating());
- assertFalse(mControllers.get(3).isVibrating());
+ assertThat(mControllers.get(1).isVibrating()).isFalse();
+ assertThat(mControllers.get(2).isVibrating()).isFalse();
+ assertThat(mControllers.get(3).isVibrating()).isFalse();
- assertEquals(Arrays.asList(expectedOneShot(25)),
- mVibratorProviders.get(1).getEffectSegments(vibration.id));
- assertEquals(Arrays.asList(expectedOneShot(80)),
- mVibratorProviders.get(2).getEffectSegments(vibration.id));
- assertEquals(Arrays.asList(expectedOneShot(60)),
- mVibratorProviders.get(3).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(1, 2, 3), mVibratorProviders.get(1).getAmplitudes());
- assertEquals(expectedAmplitudes(4, 5), mVibratorProviders.get(2).getAmplitudes());
- assertEquals(expectedAmplitudes(6), mVibratorProviders.get(3).getAmplitudes());
+ assertThat(mVibratorProviders.get(1).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(25)).inOrder();
+ assertThat(mVibratorProviders.get(2).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(80)).inOrder();
+ assertThat(mVibratorProviders.get(3).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(60)).inOrder();
+ assertThat(mVibratorProviders.get(1).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(1, 2, 3)).inOrder();
+ assertThat(mVibratorProviders.get(2).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(4, 5)).inOrder();
+ assertThat(mVibratorProviders.get(3).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(6)).inOrder();
+
}
@Test
@@ -1545,8 +1574,8 @@
VibrationEffect.createOneShot(
expectedDuration, VibrationEffect.DEFAULT_AMPLITUDE)));
- startThreadAndDispatcher(vibration);
long startTime = SystemClock.elapsedRealtime();
+ startThreadAndDispatcher(vibration);
vibration.waitForEnd();
long vibrationEndTime = SystemClock.elapsedRealtime();
@@ -1616,26 +1645,24 @@
// Allow some delay for thread scheduling and callback triggering.
int maxDelay = (int) (0.05 * totalDuration); // < 5% of total duration
- assertTrue("Waveform with perceived delay of " + delay + "ms,"
- + " expected less than " + maxDelay + "ms",
- delay < maxDelay);
+ assertThat(delay).isLessThan(maxDelay);
}
@LargeTest
@Test
public void vibrate_cancelSlowVibrator_cancelIsNotBlockedByVibrationThread() throws Exception {
FakeVibratorControllerProvider fakeVibrator = mVibratorProviders.get(VIBRATOR_ID);
- fakeVibrator.setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ fakeVibrator.setSupportedEffects(EFFECT_CLICK);
long latency = 5_000; // 5s
fakeVibrator.setOnLatency(latency);
- VibrationEffect effect = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
+ VibrationEffect effect = VibrationEffect.get(EFFECT_CLICK);
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> !fakeVibrator.getEffectSegments(vibration.id).isEmpty(),
- TEST_TIMEOUT_MILLIS));
- assertTrue(mThread.isRunningVibrationId(vibration.id));
+ assertThat(waitUntil(() -> !fakeVibrator.getEffectSegments(vibration.id).isEmpty(),
+ TEST_TIMEOUT_MILLIS)).isTrue();
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
// Run cancel in a separate thread so if VibrationThread.cancel blocks then this test should
// fail at waitForCompletion(cancellingThread).
@@ -1651,18 +1678,18 @@
// After the vibrator call ends the vibration is cancelled and the vibrator is turned off.
waitForCompletion(/* timeout= */ latency + TEST_TIMEOUT_MILLIS);
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_USER);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
}
@Test
public void vibrate_multiplePredefinedCancel_cancelsVibrationImmediately() throws Exception {
mockVibrators(1, 2);
- mVibratorProviders.get(1).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ mVibratorProviders.get(1).setSupportedEffects(EFFECT_CLICK);
mVibratorProviders.get(2).setCapabilities(IVibrator.CAP_COMPOSE_EFFECTS);
mVibratorProviders.get(2).setSupportedPrimitives(PRIMITIVE_CLICK);
CombinedVibration effect = CombinedVibration.startParallel()
- .addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
+ .addVibrator(1, VibrationEffect.get(EFFECT_CLICK))
.addVibrator(2, VibrationEffect.startComposition()
.addPrimitive(PRIMITIVE_CLICK, 1f, 100)
.addPrimitive(PRIMITIVE_CLICK, 1f, 100)
@@ -1671,8 +1698,9 @@
.combine();
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> mControllers.get(2).isVibrating(), TEST_TIMEOUT_MILLIS));
- assertTrue(mThread.isRunningVibrationId(vibration.id));
+ assertThat(waitUntil(() -> mControllers.get(2).isVibrating(), TEST_TIMEOUT_MILLIS))
+ .isTrue();
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
// Run cancel in a separate thread so if VibrationThread.cancel blocks then this test should
// fail at waitForCompletion(vibrationThread) if the vibration not cancelled immediately.
@@ -1686,8 +1714,8 @@
cancellingThread.join();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_SCREEN_OFF);
- assertFalse(mControllers.get(1).isVibrating());
- assertFalse(mControllers.get(2).isVibrating());
+ assertThat(mControllers.get(1).isVibrating()).isFalse();
+ assertThat(mControllers.get(2).isVibrating()).isFalse();
}
@Test
@@ -1705,8 +1733,9 @@
.combine();
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> mControllers.get(2).isVibrating(), TEST_TIMEOUT_MILLIS));
- assertTrue(mThread.isRunningVibrationId(vibration.id));
+ assertThat(waitUntil(() -> mControllers.get(2).isVibrating(), TEST_TIMEOUT_MILLIS))
+ .isTrue();
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
// Run cancel in a separate thread so if VibrationThread.cancel blocks then this test should
// fail at waitForCompletion(vibrationThread) if the vibration not cancelled immediately.
@@ -1720,8 +1749,8 @@
cancellingThread.join();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_SCREEN_OFF);
- assertFalse(mControllers.get(1).isVibrating());
- assertFalse(mControllers.get(2).isVibrating());
+ assertThat(mControllers.get(1).isVibrating()).isFalse();
+ assertThat(mControllers.get(2).isVibrating()).isFalse();
}
@Test
@@ -1737,10 +1766,10 @@
.combine();
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> mControllers.get(1).isVibrating()
+ assertThat(waitUntil(() -> mControllers.get(1).isVibrating()
&& mControllers.get(2).isVibrating(),
- TEST_TIMEOUT_MILLIS));
- assertTrue(mThread.isRunningVibrationId(vibration.id));
+ TEST_TIMEOUT_MILLIS)).isTrue();
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
// Run cancel in a separate thread so if VibrationThread.cancel blocks then this test should
// fail at waitForCompletion(vibrationThread) if the vibration not cancelled immediately.
@@ -1754,8 +1783,8 @@
cancellingThread.join();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_SCREEN_OFF);
- assertFalse(mControllers.get(1).isVibrating());
- assertFalse(mControllers.get(2).isVibrating());
+ assertThat(mControllers.get(1).isVibrating()).isFalse();
+ assertThat(mControllers.get(2).isVibrating()).isFalse();
}
@Test
@@ -1763,17 +1792,18 @@
VibrationEffect effect = VibrationEffect.createWaveform(new long[]{5}, new int[]{100}, 0);
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
- TEST_TIMEOUT_MILLIS));
- assertTrue(mThread.isRunningVibrationId(vibration.id));
+ assertThat(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
+ TEST_TIMEOUT_MILLIS)).isTrue();
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
mVibrationConductor.notifyCancelled(
new Vibration.EndInfo(Status.CANCELLED_BINDER_DIED), /* immediate= */ false);
waitForCompletion();
verifyCallbacksTriggered(vibration, Status.CANCELLED_BINDER_DIED);
- assertFalse(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id).isEmpty());
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .isNotEmpty();
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
}
@Test
@@ -1790,13 +1820,16 @@
verifyCallbacksTriggered(vibration, Status.FINISHED);
// Duration extended for 5 + 5 + 5 + 15.
- assertEquals(Arrays.asList(expectedOneShot(30)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(30)).inOrder();
List<Float> amplitudes = mVibratorProviders.get(VIBRATOR_ID).getAmplitudes();
- assertTrue(amplitudes.size() > 3);
- assertEquals(expectedAmplitudes(60, 120, 240), amplitudes.subList(0, 3));
+ assertThat(amplitudes.size()).isGreaterThan(3);
+ assertThat(amplitudes.subList(0, 3))
+ .containsExactlyElementsIn(expectedAmplitudes(60, 120, 240))
+ .inOrder();
for (int i = 3; i < amplitudes.size(); i++) {
- assertTrue(amplitudes.get(i) < amplitudes.get(i - 1));
+ assertWithMessage("For amplitude index %s", i)
+ .that(amplitudes.get(i)).isLessThan(amplitudes.get(i - 1));
}
}
@@ -1814,11 +1847,11 @@
verify(mManagerHooks, never()).onVibrationThreadReleased(anyLong());
// Thread still running ramp down.
- assertTrue(mThread.isRunningVibrationId(vibration.id));
+ assertThat(mThread.isRunningVibrationId(vibration.id)).isTrue();
// Duration extended for 10 + 10000.
- assertEquals(Arrays.asList(expectedOneShot(10_010)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(10_010)).inOrder();
// Will stop the ramp down right away.
mVibrationConductor.notifyCancelled(
@@ -1838,8 +1871,8 @@
VibrationEffect effect = VibrationEffect.createOneShot(10_000, 240);
HalVibration vibration = startThreadAndDispatcher(effect);
- assertTrue(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
- TEST_TIMEOUT_MILLIS));
+ assertThat(waitUntil(() -> mControllers.get(VIBRATOR_ID).isVibrating(),
+ TEST_TIMEOUT_MILLIS)).isTrue();
mVibrationConductor.notifyCancelled(
new Vibration.EndInfo(Status.CANCELLED_BY_USER), /* immediate= */ false);
waitForCompletion();
@@ -1847,12 +1880,13 @@
verifyCallbacksTriggered(vibration, Status.CANCELLED_BY_USER);
// Duration extended for 10000 + 15.
- assertEquals(Arrays.asList(expectedOneShot(10_015)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(10_015)).inOrder();
List<Float> amplitudes = mVibratorProviders.get(VIBRATOR_ID).getAmplitudes();
- assertTrue(amplitudes.size() > 1);
+ assertThat(amplitudes.size()).isGreaterThan(1);
for (int i = 1; i < amplitudes.size(); i++) {
- assertTrue(amplitudes.get(i) < amplitudes.get(i - 1));
+ assertWithMessage("For amplitude index %s", i)
+ .that(amplitudes.get(i)).isLessThan(amplitudes.get(i - 1));
}
}
@@ -1860,18 +1894,18 @@
public void vibrate_predefinedWithRampDown_doesNotAddRampDown() {
when(mVibrationConfigMock.getRampDownDurationMs()).thenReturn(15);
mVibratorProviders.get(VIBRATOR_ID).setCapabilities(IVibrator.CAP_AMPLITUDE_CONTROL);
- mVibratorProviders.get(VIBRATOR_ID).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ mVibratorProviders.get(VIBRATOR_ID).setSupportedEffects(EFFECT_CLICK);
- VibrationEffect effect = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
+ VibrationEffect effect = VibrationEffect.get(EFFECT_CLICK);
HalVibration vibration = startThreadAndDispatcher(effect);
waitForCompletion();
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertEquals(Arrays.asList(expectedPrebaked(VibrationEffect.EFFECT_CLICK)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
- assertTrue(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes().isEmpty());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrebaked(EFFECT_CLICK)).inOrder();
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes()).isEmpty();
}
@Test
@@ -1888,8 +1922,7 @@
verifyCallbacksTriggered(vibration, Status.FINISHED);
assertThat(mVibratorProviders.get(VIBRATOR_ID).getVendorEffects(vibration.id))
- .containsExactly(effect)
- .inOrder();
+ .containsExactly(effect).inOrder();
assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes()).isEmpty();
}
@@ -1909,9 +1942,9 @@
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertEquals(Arrays.asList(expectedPrimitive(PRIMITIVE_CLICK, 1, 0)),
- mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id));
- assertTrue(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes().isEmpty());
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrimitive(PRIMITIVE_CLICK, 1, 0)).inOrder();
+ assertThat(mVibratorProviders.get(VIBRATOR_ID).getAmplitudes()).isEmpty();
}
@Test
@@ -1936,30 +1969,29 @@
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration.id), anyLong());
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertEquals(Arrays.asList(expectedRamp(0, 1, 150, 150, 1)),
- fakeVibrator.getEffectSegments(vibration.id));
- assertTrue(fakeVibrator.getAmplitudes().isEmpty());
+ assertThat(fakeVibrator.getEffectSegments(vibration.id))
+ .containsExactly(expectedRamp(0, 1, 150, 150, 1)).inOrder();
+ assertThat(fakeVibrator.getAmplitudes()).isEmpty();
}
@Test
public void vibrate_multipleVibrations_withCancel() throws Exception {
- mVibratorProviders.get(VIBRATOR_ID).setSupportedEffects(
- VibrationEffect.EFFECT_CLICK, VibrationEffect.EFFECT_TICK);
+ mVibratorProviders.get(VIBRATOR_ID).setSupportedEffects(EFFECT_CLICK, EFFECT_TICK);
mVibratorProviders.get(VIBRATOR_ID).setSupportedPrimitives(PRIMITIVE_CLICK);
mVibratorProviders.get(VIBRATOR_ID).setCapabilities(IVibrator.CAP_AMPLITUDE_CONTROL,
IVibrator.CAP_COMPOSE_EFFECTS);
// A simple effect, followed by a repeating effect that gets cancelled, followed by another
// simple effect.
- VibrationEffect effect1 = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
+ VibrationEffect effect1 = VibrationEffect.get(EFFECT_CLICK);
VibrationEffect effect2 = VibrationEffect.startComposition()
- .repeatEffectIndefinitely(VibrationEffect.get(VibrationEffect.EFFECT_TICK))
+ .repeatEffectIndefinitely(VibrationEffect.get(EFFECT_TICK))
.compose();
VibrationEffect effect3 = VibrationEffect.startComposition()
.addPrimitive(PRIMITIVE_CLICK)
.compose();
VibrationEffect effect4 = VibrationEffect.createOneShot(8000, 100);
- VibrationEffect effect5 = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
+ VibrationEffect effect5 = VibrationEffect.get(EFFECT_CLICK);
HalVibration vibration1 = startThreadAndDispatcher(effect1);
waitForCompletion();
@@ -1987,14 +2019,14 @@
waitForCompletion();
FakeVibratorControllerProvider fakeVibrator = mVibratorProviders.get(VIBRATOR_ID);
- assertFalse(mControllers.get(VIBRATOR_ID).isVibrating());
+ assertThat(mControllers.get(VIBRATOR_ID).isVibrating()).isFalse();
// Effect1
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration1.id), anyLong());
verifyCallbacksTriggered(vibration1, Status.FINISHED);
- assertEquals(Arrays.asList(expectedPrebaked(VibrationEffect.EFFECT_CLICK)),
- fakeVibrator.getEffectSegments(vibration1.id));
+ assertThat(fakeVibrator.getEffectSegments(vibration1.id))
+ .containsExactly(expectedPrebaked(EFFECT_CLICK)).inOrder();
// Effect2: repeating, cancelled.
verify(mControllerCallbacks, atLeast(2))
@@ -2005,24 +2037,24 @@
// all elements are the same segment.
List<VibrationEffectSegment> actualSegments2 =
fakeVibrator.getEffectSegments(vibration2.id);
- assertTrue(actualSegments2.size() + " > 2", actualSegments2.size() > 2);
+ assertThat(actualSegments2.size()).isGreaterThan(2);
for (VibrationEffectSegment segment : actualSegments2) {
- assertEquals(expectedPrebaked(VibrationEffect.EFFECT_TICK), segment);
+ assertThat(segment).isEqualTo(expectedPrebaked(EFFECT_TICK));
}
// Effect3
verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibration3.id), anyLong());
verifyCallbacksTriggered(vibration3, Status.FINISHED);
- assertEquals(Arrays.asList(expectedPrimitive(PRIMITIVE_CLICK, 1, 0)),
- fakeVibrator.getEffectSegments(vibration3.id));
+ assertThat(fakeVibrator.getEffectSegments(vibration3.id))
+ .containsExactly(expectedPrimitive(PRIMITIVE_CLICK, 1, 0)).inOrder();
// Effect4: cancelled quickly.
verifyCallbacksTriggered(vibration4, Status.CANCELLED_BY_SCREEN_OFF);
- assertTrue("Tested duration=" + duration4, duration4 < 2000);
+ assertThat(duration4).isLessThan(2000);
// Effect5: played normally after effect4, which may or may not have played.
- assertEquals(Arrays.asList(expectedPrebaked(VibrationEffect.EFFECT_CLICK)),
- fakeVibrator.getEffectSegments(vibration5.id));
+ assertThat(fakeVibrator.getEffectSegments(vibration5.id))
+ .containsExactly(expectedPrebaked(EFFECT_CLICK)).inOrder();
}
@Test
@@ -2031,16 +2063,13 @@
mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_AMPLITUDE_CONTROL);
mVibratorProviders.get(2).setCapabilities(IVibrator.CAP_COMPOSE_EFFECTS);
mVibratorProviders.get(2).setSupportedPrimitives(PRIMITIVE_CLICK);
- mVibratorProviders.get(3).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
+ mVibratorProviders.get(3).setSupportedEffects(EFFECT_CLICK);
CombinedVibration effect = CombinedVibration.startSequential()
- .addNext(3,
- VibrationEffect.get(VibrationEffect.EFFECT_CLICK),
- /* delay= */ TEST_TIMEOUT_MILLIS)
+ .addNext(3, VibrationEffect.get(EFFECT_CLICK), /* delay= */ TEST_TIMEOUT_MILLIS)
.addNext(1,
VibrationEffect.createWaveform(
- new long[] {TEST_TIMEOUT_MILLIS, TEST_TIMEOUT_MILLIS},
- /* repeat= */ -1),
+ new long[] {TEST_TIMEOUT_MILLIS, TEST_TIMEOUT_MILLIS}, -1),
/* delay= */ TEST_TIMEOUT_MILLIS)
.addNext(2,
VibrationEffect.startComposition()
@@ -2055,20 +2084,22 @@
// Vibrating state remains ON until session resets it.
verifyCallbacksTriggered(vibration, Status.FINISHED);
- assertTrue(mControllers.get(1).isVibrating());
- assertTrue(mControllers.get(2).isVibrating());
- assertTrue(mControllers.get(3).isVibrating());
+ assertThat(mControllers.get(1).isVibrating()).isTrue();
+ assertThat(mControllers.get(2).isVibrating()).isTrue();
+ assertThat(mControllers.get(3).isVibrating()).isTrue();
- assertEquals(0, mVibratorProviders.get(1).getOffCount());
- assertEquals(0, mVibratorProviders.get(2).getOffCount());
- assertEquals(0, mVibratorProviders.get(3).getOffCount());
- assertEquals(Arrays.asList(expectedOneShot(TEST_TIMEOUT_MILLIS)),
- mVibratorProviders.get(1).getEffectSegments(vibration.id));
- assertEquals(expectedAmplitudes(255), mVibratorProviders.get(1).getAmplitudes());
- assertEquals(Arrays.asList(expectedPrimitive(PRIMITIVE_CLICK, 1, TEST_TIMEOUT_MILLIS)),
- mVibratorProviders.get(2).getEffectSegments(vibration.id));
- assertEquals(Arrays.asList(expectedPrebaked(VibrationEffect.EFFECT_CLICK)),
- mVibratorProviders.get(3).getEffectSegments(vibration.id));
+ assertThat(mVibratorProviders.get(1).getOffCount()).isEqualTo(0);
+ assertThat(mVibratorProviders.get(2).getOffCount()).isEqualTo(0);
+ assertThat(mVibratorProviders.get(3).getOffCount()).isEqualTo(0);
+ assertThat(mVibratorProviders.get(1).getEffectSegments(vibration.id))
+ .containsExactly(expectedOneShot(TEST_TIMEOUT_MILLIS)).inOrder();
+ assertThat(mVibratorProviders.get(1).getAmplitudes())
+ .containsExactlyElementsIn(expectedAmplitudes(255)).inOrder();
+ assertThat(mVibratorProviders.get(2).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrimitive(PRIMITIVE_CLICK, 1, TEST_TIMEOUT_MILLIS))
+ .inOrder();
+ assertThat(mVibratorProviders.get(3).getEffectSegments(vibration.id))
+ .containsExactly(expectedPrebaked(EFFECT_CLICK)).inOrder();
}
private void mockVibrators(int... vibratorIds) {
@@ -2122,7 +2153,7 @@
mVibrationConductor = new VibrationStepConductor(vib, isInSession, mVibrationSettings,
deviceAdapter, mVibrationScaler, mStatsLoggerMock, requestVibrationParamsFuture,
mManagerHooks);
- assertTrue(mThread.runVibrationOnVibrationThread(mVibrationConductor));
+ assertThat(mThread.runVibrationOnVibrationThread(mVibrationConductor)).isTrue();
return mVibrationConductor.getVibration();
}
@@ -2142,8 +2173,8 @@
}
private void waitForCompletion(long timeout) {
- assertTrue("Timed out waiting for VibrationThread to become idle",
- mThread.waitForThreadIdle(timeout));
+ assertWithMessage("Timed out waiting for VibrationThread to become idle")
+ .that(mThread.waitForThreadIdle(timeout)).isTrue();
mTestLooper.dispatchAll(); // Flush callbacks
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java
index 4ad1cd1..d4be7f8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java
@@ -23,12 +23,14 @@
import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA;
import static android.content.pm.ActivityInfo.OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA;
import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION;
+import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION;
import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH;
import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE;
import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING;
+import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT;
import android.compat.testing.PlatformCompatChangeRule;
import android.platform.test.annotations.DisableFlags;
@@ -239,6 +241,34 @@
@Test
@EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT})
+ @EnableFlags({FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING,
+ FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT})
+ public void testShouldApplyCameraCompatFreeformTreatment_propertyFalse_returnsFalse() {
+ runTestScenario((robot) -> {
+ robot.activity().createActivityWithComponentInNewTask();
+
+ robot.prop().disable(PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION);
+
+ robot.checkShouldApplyFreeformTreatmentForCameraCompat(false);
+ });
+ }
+
+ @Test
+ @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT})
+ @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING)
+ @DisableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT)
+ public void testShouldApplyCameraCompatFreeformTreatment_optOutFlagNotEnabled_optOutIgnored() {
+ runTestScenario((robot) -> {
+ robot.activity().createActivityWithComponentInNewTask();
+
+ robot.prop().disable(PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION);
+
+ robot.checkShouldApplyFreeformTreatmentForCameraCompat(true);
+ });
+ }
+
+ @Test
+ @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT})
@EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING)
public void testShouldApplyCameraCompatFreeformTreatment_overrideAndFlagEnabled_returnsTrue() {
runTestScenario((robot) -> {
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 9c48384..a99bc49 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -37,7 +37,6 @@
import static android.view.Surface.ROTATION_180;
import static android.view.Surface.ROTATION_270;
import static android.view.Surface.ROTATION_90;
-import static android.view.WindowInsets.Type.ime;
import static android.view.WindowInsets.Type.navigationBars;
import static android.view.WindowInsets.Type.statusBars;
import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
@@ -56,6 +55,7 @@
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
+import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG;
import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR;
import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE;
@@ -2693,55 +2693,77 @@
@SetupWindows(addWindows = W_INPUT_METHOD)
@Test
- public void testImeChildWindowFocusWhenImeLayeringTargetChanges() {
- final WindowState imeChildWindow = newWindowBuilder("imeChildWindow",
+ public void testImeChildWindowFocusWhenImeParentWindowChanges() {
+ final var imeChildWindow = newWindowBuilder("imeChildWindow",
TYPE_APPLICATION_ATTACHED_DIALOG).setParent(mImeWindow).build();
- makeWindowVisibleAndDrawn(imeChildWindow, mImeWindow);
- assertTrue(imeChildWindow.canReceiveKeys());
- mDisplayContent.setInputMethodWindowLocked(mImeWindow);
-
- // Verify imeChildWindow can be focused window if the next IME target requests IME visible.
- final WindowState imeAppTarget = newWindowBuilder("imeAppTarget",
- TYPE_BASE_APPLICATION).setDisplay(mDisplayContent).build();
- mDisplayContent.setImeLayeringTarget(imeAppTarget);
- spyOn(imeAppTarget);
- doReturn(true).when(imeAppTarget).isRequestedVisible(ime());
- assertEquals(imeChildWindow, mDisplayContent.findFocusedWindow());
-
- // Verify imeChildWindow doesn't be focused window if the next IME target does not
- // request IME visible.
- final WindowState nextImeAppTarget = newWindowBuilder("nextImeAppTarget",
- TYPE_BASE_APPLICATION).setDisplay(mDisplayContent).build();
- mDisplayContent.setImeLayeringTarget(nextImeAppTarget);
- assertNotEquals(imeChildWindow, mDisplayContent.findFocusedWindow());
+ doTestImeWindowFocusWhenImeParentWindowChanged(imeChildWindow);
}
@SetupWindows(addWindows = W_INPUT_METHOD)
@Test
- public void testImeMenuDialogFocusWhenImeLayeringTargetChanges() {
- final WindowState imeMenuDialog = newWindowBuilder("imeMenuDialog",
+ public void testImeDialogWindowFocusWhenImeParentWindowChanges() {
+ final var imeDialogWindow = newWindowBuilder("imeMenuDialog",
TYPE_INPUT_METHOD_DIALOG).build();
- makeWindowVisibleAndDrawn(imeMenuDialog, mImeWindow);
- assertTrue(imeMenuDialog.canReceiveKeys());
+ doTestImeWindowFocusWhenImeParentWindowChanged(imeDialogWindow);
+ }
+
+ @SetupWindows(addWindows = W_INPUT_METHOD)
+ @Test
+ public void testImeWindowFocusWhenImeParentWindowChanges() {
+ // Verify focusable, non-child IME windows.
+ final var otherImeWindow = newWindowBuilder("otherImeWindow",
+ TYPE_INPUT_METHOD).build();
+ doTestImeWindowFocusWhenImeParentWindowChanged(otherImeWindow);
+ }
+
+ private void doTestImeWindowFocusWhenImeParentWindowChanged(@NonNull WindowState window) {
+ makeWindowVisibleAndDrawn(window, mImeWindow);
+ assertTrue("Window canReceiveKeys", window.canReceiveKeys());
mDisplayContent.setInputMethodWindowLocked(mImeWindow);
- // Verify imeMenuDialog can be focused window if the next IME target requests IME visible.
+ // Verify window can be focused if the IME parent is visible and the IME is visible.
final WindowState imeAppTarget = newWindowBuilder("imeAppTarget",
TYPE_BASE_APPLICATION).setDisplay(mDisplayContent).build();
mDisplayContent.setImeLayeringTarget(imeAppTarget);
- imeAppTarget.setRequestedVisibleTypes(ime());
- assertEquals(imeMenuDialog, mDisplayContent.findFocusedWindow());
+ mDisplayContent.updateImeInputAndControlTarget(imeAppTarget);
+ final var imeProvider = mDisplayContent.getInsetsStateController().getImeSourceProvider();
+ imeProvider.setImeShowing(true);
+ final var imeParentWindow = mDisplayContent.getImeParentWindow();
+ assertNotNull("IME parent window is not null", imeParentWindow);
+ assertTrue("IME parent window is visible", imeParentWindow.isVisibleRequested());
+ assertTrue("IME is visible", imeProvider.isImeShowing());
+ assertEquals("Window is the focused one", window, mDisplayContent.findFocusedWindow());
- // Verify imeMenuDialog doesn't be focused window if the next IME target is closing.
+ // Verify window can't be focused if the IME parent is not visible.
final WindowState nextImeAppTarget = newWindowBuilder("nextImeAppTarget",
TYPE_BASE_APPLICATION).setDisplay(mDisplayContent).build();
makeWindowVisibleAndDrawn(nextImeAppTarget);
- // Even if the app still requests IME, the ime dialog should not gain focus if the target
- // app is invisible.
- nextImeAppTarget.setRequestedVisibleTypes(ime());
- nextImeAppTarget.mActivityRecord.setVisibility(false);
+ // Change layering target but keep input target (and thus imeParent) the same.
mDisplayContent.setImeLayeringTarget(nextImeAppTarget);
- assertNotEquals(imeMenuDialog, mDisplayContent.findFocusedWindow());
+ // IME parent window is not visible, occluded by new layering target.
+ imeParentWindow.setVisibleRequested(false);
+ assertEquals("IME parent window did not change", imeParentWindow,
+ mDisplayContent.getImeParentWindow());
+ assertFalse("IME parent window is not visible", imeParentWindow.isVisibleRequested());
+ assertTrue("IME is visible", imeProvider.isImeShowing());
+ assertNotEquals("Window is not the focused one when imeParent is not visible", window,
+ mDisplayContent.findFocusedWindow());
+
+ // Verify window can be focused if the IME is not visible.
+ mDisplayContent.updateImeInputAndControlTarget(nextImeAppTarget);
+ imeProvider.setImeShowing(false);
+ final var nextImeParentWindow = mDisplayContent.getImeParentWindow();
+ assertNotNull("Next IME parent window is not null", nextImeParentWindow);
+ assertNotEquals("IME parent window changed", imeParentWindow, nextImeParentWindow);
+ assertTrue("Next IME parent window is visible", nextImeParentWindow.isVisibleRequested());
+ assertFalse("IME is not visible", imeProvider.isImeShowing());
+ if (window.isChildWindow()) {
+ assertNotEquals("Child window is not the focused on when the IME is not visible",
+ window, mDisplayContent.findFocusedWindow());
+ } else {
+ assertEquals("Window is the focused one when the IME is not visible",
+ window, mDisplayContent.findFocusedWindow());
+ }
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
index 77ad7f7..c0cb09f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
@@ -82,8 +82,6 @@
import android.graphics.Point;
import android.graphics.Rect;
import android.os.IBinder;
-import android.platform.test.annotations.DisableFlags;
-import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.Presubmit;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -104,7 +102,6 @@
import androidx.test.filters.SmallTest;
import com.android.internal.graphics.ColorUtils;
-import com.android.window.flags.Flags;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -2012,21 +2009,6 @@
assertEquals(expectedBackgroundColor, info.getChanges().get(1).getBackgroundColor());
}
- @DisableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
- @Test
- public void testOverrideAnimationOptionsToInfoIfNecessary_disableAnimOptionsPerChange() {
- ActivityRecord r = initializeOverrideAnimationOptionsTest();
- TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions
- .makeCommonAnimOptions("testPackage");
- mTransition.setOverrideAnimation(options, r, null /* startCallback */,
- null /* finishCallback */);
-
- mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo);
-
- assertEquals(options, mInfo.getAnimationOptions());
- }
-
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_fromStyleAnimOptions() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2052,7 +2034,6 @@
options, activityChange.getAnimationOptions());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_sceneAnimOptions() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2078,7 +2059,6 @@
options, activityChange.getAnimationOptions());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_crossProfileAnimOptions() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2106,7 +2086,6 @@
assertTrue(activityChange.hasFlags(FLAG_CROSS_PROFILE_OWNER_THUMBNAIL));
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_customAnimOptions() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2139,7 +2118,6 @@
options.getBackgroundColor(), activityChange.getBackgroundColor());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_haveTaskFragmentAnimParams() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2188,7 +2166,6 @@
options.getBackgroundColor(), activityChange.getBackgroundColor());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_customAnimOptionsWithTaskOverride() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2418,7 +2395,6 @@
}
@Test
- @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_FOCUS_IN_SHELL_TRANSITIONS)
public void testMoveDisplayToTop() {
// Set up two displays, each of which has a task.
DisplayContent otherDisplay = createNewDisplay();
diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/PhoneCallStateHandler.java b/services/voiceinteraction/java/com/android/server/soundtrigger/PhoneCallStateHandler.java
index 49ad461..df43ed9 100644
--- a/services/voiceinteraction/java/com/android/server/soundtrigger/PhoneCallStateHandler.java
+++ b/services/voiceinteraction/java/com/android/server/soundtrigger/PhoneCallStateHandler.java
@@ -24,7 +24,6 @@
import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
-import com.android.internal.telephony.flags.Flags;
import java.util.ArrayList;
import java.util.List;
@@ -119,28 +118,18 @@
private boolean checkCallStatus() {
List<SubscriptionInfo> infoList = mSubscriptionManager.getActiveSubscriptionInfoList();
if (infoList == null) return false;
- if (!Flags.enforceTelephonyFeatureMapping()) {
- return infoList.stream()
- .filter(s -> (s.getSubscriptionId()
- != SubscriptionManager.INVALID_SUBSCRIPTION_ID))
- .anyMatch(s -> isCallOngoingFromState(
- mTelephonyManager
- .createForSubscriptionId(s.getSubscriptionId())
- .getCallStateForSubscription()));
- } else {
- return infoList.stream()
- .filter(s -> (s.getSubscriptionId()
- != SubscriptionManager.INVALID_SUBSCRIPTION_ID))
- .anyMatch(s -> {
- try {
- return isCallOngoingFromState(mTelephonyManager
- .createForSubscriptionId(s.getSubscriptionId())
- .getCallStateForSubscription());
- } catch (UnsupportedOperationException e) {
- return false;
- }
- });
- }
+ return infoList.stream()
+ .filter(s -> (s.getSubscriptionId()
+ != SubscriptionManager.INVALID_SUBSCRIPTION_ID))
+ .anyMatch(s -> {
+ try {
+ return isCallOngoingFromState(mTelephonyManager
+ .createForSubscriptionId(s.getSubscriptionId())
+ .getCallStateForSubscription());
+ } catch (UnsupportedOperationException e) {
+ return false;
+ }
+ });
}
private void updateTelephonyListeners() {
diff --git a/tests/AttestationVerificationTest/src/com/android/server/security/CertificateRevocationStatusManagerTest.java b/tests/AttestationVerificationTest/src/com/android/server/security/CertificateRevocationStatusManagerTest.java
index 586bb76..3854ae6 100644
--- a/tests/AttestationVerificationTest/src/com/android/server/security/CertificateRevocationStatusManagerTest.java
+++ b/tests/AttestationVerificationTest/src/com/android/server/security/CertificateRevocationStatusManagerTest.java
@@ -20,18 +20,17 @@
import static org.junit.Assert.assertThrows;
import android.content.Context;
-import android.os.SystemClock;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
-import org.json.JSONObject;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.security.cert.CertPathValidatorException;
@@ -39,33 +38,34 @@
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.time.LocalDateTime;
+import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
@RunWith(AndroidJUnit4.class)
public class CertificateRevocationStatusManagerTest {
private static final String TEST_CERTIFICATE_FILE_1 = "test_attestation_with_root_certs.pem";
private static final String TEST_CERTIFICATE_FILE_2 = "test_attestation_wrong_root_certs.pem";
- private static final String TEST_REVOCATION_LIST_FILE_NAME = "test_revocation_list.json";
+ private static final String TEST_REMOTE_REVOCATION_LIST_FILE_NAME =
+ "test_remote_revocation_list.json";
private static final String REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST =
"test_revocation_list_no_test_certs.json";
private static final String REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST =
"test_revocation_list_with_test_certs.json";
- private static final String TEST_REVOCATION_STATUS_FILE_NAME = "test_revocation_status.txt";
+ private static final String TEST_STORED_REVOCATION_LIST_FILE_NAME =
+ "test_stored_revocation_list.json";
private static final String FILE_URL_PREFIX = "file://";
private final Context mContext = InstrumentationRegistry.getInstrumentation().getContext();
private CertificateFactory mFactory;
private List<X509Certificate> mCertificates1;
private List<X509Certificate> mCertificates2;
- private File mRevocationListFile;
+ private File mRemoteRevocationListFile;
private String mRevocationListUrl;
private String mNonExistentRevocationListUrl;
- private File mRevocationStatusFile;
+ private File mStoredRevocationListFile;
private CertificateRevocationStatusManager mCertificateRevocationStatusManager;
@Before
@@ -73,27 +73,29 @@
mFactory = CertificateFactory.getInstance("X.509");
mCertificates1 = getCertificateChain(TEST_CERTIFICATE_FILE_1);
mCertificates2 = getCertificateChain(TEST_CERTIFICATE_FILE_2);
- mRevocationListFile = new File(mContext.getFilesDir(), TEST_REVOCATION_LIST_FILE_NAME);
- mRevocationListUrl = FILE_URL_PREFIX + mRevocationListFile.getAbsolutePath();
+ mRemoteRevocationListFile =
+ new File(mContext.getFilesDir(), TEST_REMOTE_REVOCATION_LIST_FILE_NAME);
+ mRevocationListUrl = FILE_URL_PREFIX + mRemoteRevocationListFile.getAbsolutePath();
File noSuchFile = new File(mContext.getFilesDir(), "file_does_not_exist");
mNonExistentRevocationListUrl = FILE_URL_PREFIX + noSuchFile.getAbsolutePath();
- mRevocationStatusFile = new File(mContext.getFilesDir(), TEST_REVOCATION_STATUS_FILE_NAME);
+ mStoredRevocationListFile =
+ new File(mContext.getFilesDir(), TEST_STORED_REVOCATION_LIST_FILE_NAME);
}
@After
public void tearDown() throws Exception {
- mRevocationListFile.delete();
- mRevocationStatusFile.delete();
+ mRemoteRevocationListFile.delete();
+ mStoredRevocationListFile.delete();
}
@Test
public void checkRevocationStatus_doesNotExistOnRemoteRevocationList_noException()
throws Exception {
copyFromAssetToFile(
- REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
+ REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mRevocationListUrl, mRevocationStatusFile, false);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
}
@@ -102,10 +104,10 @@
public void checkRevocationStatus_existsOnRemoteRevocationList_throwsException()
throws Exception {
copyFromAssetToFile(
- REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
+ REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mRevocationListUrl, mRevocationStatusFile, false);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
assertThrows(
CertPathValidatorException.class,
@@ -118,7 +120,7 @@
throws Exception {
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mNonExistentRevocationListUrl, mRevocationStatusFile, false);
+ mContext, mNonExistentRevocationListUrl, mStoredRevocationListFile, false);
assertThrows(
CertPathValidatorException.class,
@@ -128,70 +130,56 @@
@Test
public void checkRevocationStatus_savesRevocationStatus() throws Exception {
copyFromAssetToFile(
- REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
+ REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mRevocationListUrl, mRevocationStatusFile, false);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
- assertThat(mRevocationStatusFile.length()).isGreaterThan(0);
+ assertThat(mStoredRevocationListFile.length()).isGreaterThan(0);
}
@Test
- public void checkRevocationStatus_cannotReachRemoteList_certsSaved_noException()
+ public void checkRevocationStatus_cannotReachRemoteList_listSaved_noException()
throws Exception {
// call checkRevocationStatus once to save the revocation status
copyFromAssetToFile(
- REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
+ REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mRevocationListUrl, mRevocationStatusFile, false);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
// call checkRevocationStatus again with mNonExistentRevocationListUrl
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mNonExistentRevocationListUrl, mRevocationStatusFile, false);
+ mContext, mNonExistentRevocationListUrl, mStoredRevocationListFile, false);
mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
}
@Test
- public void checkRevocationStatus_cannotReachRemoteList_someCertsNotSaved_exception()
+ public void checkRevocationStatus_cannotReachRemoteList_storedListTooOld_exception()
throws Exception {
- // call checkRevocationStatus once to save the revocation status for mCertificates2
+ // call checkRevocationStatus once to save the revocation status
copyFromAssetToFile(
- REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
+ REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mRevocationListUrl, mRevocationStatusFile, false);
- mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates2);
- // call checkRevocationStatus again with mNonExistentRevocationListUrl, this time for
- // mCertificates1
- mCertificateRevocationStatusManager =
- new CertificateRevocationStatusManager(
- mContext, mNonExistentRevocationListUrl, mRevocationStatusFile, false);
-
- assertThrows(
- CertPathValidatorException.class,
- () -> mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1));
- }
-
- @Test
- public void checkRevocationStatus_cannotReachRemoteList_someCertsStatusTooOld_exception()
- throws Exception {
- mCertificateRevocationStatusManager =
- new CertificateRevocationStatusManager(
- mContext, mNonExistentRevocationListUrl, mRevocationStatusFile, false);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
+ mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
+ // set the last modified date of the stored list to an expired date
LocalDateTime now = LocalDateTime.now();
- LocalDateTime expiredStatusDate =
- now.minusDays(CertificateRevocationStatusManager.MAX_DAYS_SINCE_LAST_CHECK + 1);
- Map<String, LocalDateTime> lastRevocationCheckData = new HashMap<>();
- lastRevocationCheckData.put(getSerialNumber(mCertificates1.get(0)), expiredStatusDate);
- for (int i = 1; i < mCertificates1.size(); i++) {
- lastRevocationCheckData.put(getSerialNumber(mCertificates1.get(i)), now);
- }
- mCertificateRevocationStatusManager.storeLastRevocationCheckData(lastRevocationCheckData);
+ LocalDateTime expiredListDate =
+ now.minusDays(
+ CertificateRevocationStatusManager.MAX_OFFLINE_REVOCATION_LIST_AGE_DAYS
+ + 1);
+ mStoredRevocationListFile.setLastModified(
+ expiredListDate.toEpochSecond(OffsetDateTime.now().getOffset()) * 1000);
+ // call checkRevocationStatus again with mNonExistentRevocationListUrl
+ mCertificateRevocationStatusManager =
+ new CertificateRevocationStatusManager(
+ mContext, mNonExistentRevocationListUrl, mStoredRevocationListFile, false);
assertThrows(
CertPathValidatorException.class,
@@ -199,122 +187,112 @@
}
@Test
- public void checkRevocationStatus_cannotReachRemoteList_allCertResultsFresh_noException()
+ public void checkRevocationStatus_cannotReachRemoteList_storedListIsFresh_noException()
throws Exception {
+ // call checkRevocationStatus once to save the revocation status
+ copyFromAssetToFile(
+ REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mNonExistentRevocationListUrl, mRevocationStatusFile, false);
- LocalDateTime bearlyNotExpiredStatusDate =
- LocalDateTime.now()
- .minusDays(
- CertificateRevocationStatusManager.MAX_DAYS_SINCE_LAST_CHECK - 1);
- Map<String, LocalDateTime> lastRevocationCheckData = new HashMap<>();
- for (X509Certificate certificate : mCertificates1) {
- lastRevocationCheckData.put(getSerialNumber(certificate), bearlyNotExpiredStatusDate);
- }
- mCertificateRevocationStatusManager.storeLastRevocationCheckData(lastRevocationCheckData);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
+ mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
+ // set the last modified date of the stored list to a barely not expired date
+ LocalDateTime now = LocalDateTime.now();
+ LocalDateTime barelyFreshDate =
+ now.minusDays(
+ CertificateRevocationStatusManager.MAX_OFFLINE_REVOCATION_LIST_AGE_DAYS
+ - 1);
+ mStoredRevocationListFile.setLastModified(
+ barelyFreshDate.toEpochSecond(OffsetDateTime.now().getOffset()) * 1000);
+ // call checkRevocationStatus again with mNonExistentRevocationListUrl
+ mCertificateRevocationStatusManager =
+ new CertificateRevocationStatusManager(
+ mContext, mNonExistentRevocationListUrl, mStoredRevocationListFile, false);
mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
}
@Test
- public void updateLastRevocationCheckData_correctlySavesStatus() throws Exception {
+ public void silentlyStoreRevocationList_storesCorrectly() throws Exception {
+ copyFromAssetToFile(
+ REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mNonExistentRevocationListUrl, mRevocationStatusFile, false);
- Map<String, Boolean> areCertificatesRevoked = new HashMap<>();
- for (X509Certificate certificate : mCertificates1) {
- areCertificatesRevoked.put(getSerialNumber(certificate), false);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
+ byte[] revocationList =
+ mCertificateRevocationStatusManager.fetchRemoteRevocationListBytes();
+
+ mCertificateRevocationStatusManager.silentlyStoreRevocationList(revocationList);
+
+ byte[] bytesFromRemoteList;
+ byte[] bytesFromStoredList;
+ try (FileInputStream remoteListInputStream =
+ new FileInputStream(mRemoteRevocationListFile)) {
+ bytesFromRemoteList = remoteListInputStream.readAllBytes();
}
-
- mCertificateRevocationStatusManager.updateLastRevocationCheckData(areCertificatesRevoked);
-
- // no exception
- mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
- // revoke one certificate and try again
- areCertificatesRevoked.put(getSerialNumber(mCertificates1.getLast()), true);
- mCertificateRevocationStatusManager.updateLastRevocationCheckData(areCertificatesRevoked);
- assertThrows(
- CertPathValidatorException.class,
- () -> mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1));
+ try (FileInputStream storedListInputStream =
+ new FileInputStream(mStoredRevocationListFile)) {
+ bytesFromStoredList = storedListInputStream.readAllBytes();
+ }
+ assertThat(bytesFromStoredList).isEqualTo(bytesFromRemoteList);
}
@Test
- public void updateLastRevocationCheckDataForAllPreviouslySeenCertificates_updatesCorrectly()
+ public void checkRevocationStatus_recentlyChecked_doesNotFetchRemoteCrl()
throws Exception {
copyFromAssetToFile(
- REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
+ REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mRevocationListUrl, mRevocationStatusFile, false);
- // populate the revocation status file
- mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
- // Sleep for 2 second so that the current time changes
- SystemClock.sleep(2000);
- LocalDateTime timestampBeforeUpdate = LocalDateTime.now();
- JSONObject revocationList = mCertificateRevocationStatusManager.fetchRemoteRevocationList();
- List<String> otherCertificatesToCheck = new ArrayList<>();
- String serialNumber1 = "1234567"; // not revoked
- String serialNumber2 = "8350192447815228107"; // revoked
- String serialNumber3 = "987654"; // not revoked
- otherCertificatesToCheck.add(serialNumber1);
- otherCertificatesToCheck.add(serialNumber2);
- otherCertificatesToCheck.add(serialNumber3);
-
- mCertificateRevocationStatusManager
- .updateLastRevocationCheckDataForAllPreviouslySeenCertificates(
- revocationList, otherCertificatesToCheck);
-
- Map<String, LocalDateTime> lastRevocationCheckData =
- mCertificateRevocationStatusManager.getLastRevocationCheckData();
- assertThat(lastRevocationCheckData.get(serialNumber1)).isAtLeast(timestampBeforeUpdate);
- assertThat(lastRevocationCheckData).doesNotContainKey(serialNumber2); // revoked
- assertThat(lastRevocationCheckData.get(serialNumber3)).isAtLeast(timestampBeforeUpdate);
- // validate that the existing certificates on the file got updated too
- for (X509Certificate certificate : mCertificates1) {
- assertThat(lastRevocationCheckData.get(getSerialNumber(certificate)))
- .isAtLeast(timestampBeforeUpdate);
- }
- }
-
- @Test
- public void checkRevocationStatus_allCertificatesRecentlyChecked_doesNotFetchRemoteCrl()
- throws Exception {
- copyFromAssetToFile(
- REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
- mCertificateRevocationStatusManager =
- new CertificateRevocationStatusManager(
- mContext, mRevocationListUrl, mRevocationStatusFile, false);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
// indirectly verifies the remote list is not fetched by simulating a remote revocation
copyFromAssetToFile(
- REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
+ REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
// no exception
mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
}
@Test
- public void checkRevocationStatus_allCertificatesBarelyRecentlyChecked_doesNotFetchRemoteCrl()
+ public void checkRevocationStatus_recentlyCheckedAndRevoked_exception()
throws Exception {
copyFromAssetToFile(
- REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
+ REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mRevocationListUrl, mRevocationStatusFile, false);
- Map<String, LocalDateTime> lastCheckedDates = new HashMap<>();
- LocalDateTime barelyRecently =
- LocalDateTime.now()
- .minusHours(
- CertificateRevocationStatusManager.NUM_HOURS_BEFORE_NEXT_CHECK - 1);
- for (X509Certificate certificate : mCertificates1) {
- lastCheckedDates.put(getSerialNumber(certificate), barelyRecently);
- }
- mCertificateRevocationStatusManager.storeLastRevocationCheckData(lastCheckedDates);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
+ assertThrows(
+ CertPathValidatorException.class,
+ () -> mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1));
+
+ assertThrows(
+ CertPathValidatorException.class,
+ () -> mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1));
+ }
+
+ @Test
+ public void checkRevocationStatus_barelyRecentlyChecked_doesNotFetchRemoteCrl()
+ throws Exception {
+ copyFromAssetToFile(
+ REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
+ mCertificateRevocationStatusManager =
+ new CertificateRevocationStatusManager(
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
+ mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
+ // set the last modified date of the stored list to a barely recent date
+ LocalDateTime now = LocalDateTime.now();
+ LocalDateTime barelyRecentDate =
+ now.minusHours(CertificateRevocationStatusManager.NUM_HOURS_BEFORE_NEXT_FETCH - 1);
+ mStoredRevocationListFile.setLastModified(
+ barelyRecentDate.toEpochSecond(OffsetDateTime.now().getOffset()) * 1000);
+ // indirectly verifies the remote list is not fetched by simulating a remote revocation
+ copyFromAssetToFile(
+ REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
// Indirectly verify the remote CRL is not checked by checking there is no exception despite
- // a certificate being revoked. This test differs from the next only in the lastCheckedDate,
- // one before the NUM_HOURS_BEFORE_NEXT_CHECK cutoff and one after
+ // a certificate being revoked. This test differs from the next only in the stored list last
+ // modified date, one before the NUM_HOURS_BEFORE_NEXT_FETCH cutoff and one after
mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
}
@@ -322,21 +300,20 @@
public void checkRevocationStatus_certificatesRevokedAfterCheck_throwsException()
throws Exception {
copyFromAssetToFile(
- REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST, mRevocationListFile);
+ REVOCATION_LIST_WITHOUT_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
mCertificateRevocationStatusManager =
new CertificateRevocationStatusManager(
- mContext, mRevocationListUrl, mRevocationStatusFile, false);
- Map<String, LocalDateTime> lastCheckedDates = new HashMap<>();
- // To save network use, we do not check the remote CRL if all the certificates are recently
- // checked, so we set the lastCheckDate to some time not recent.
- LocalDateTime notRecently =
- LocalDateTime.now()
- .minusHours(
- CertificateRevocationStatusManager.NUM_HOURS_BEFORE_NEXT_CHECK + 1);
- for (X509Certificate certificate : mCertificates1) {
- lastCheckedDates.put(getSerialNumber(certificate), notRecently);
- }
- mCertificateRevocationStatusManager.storeLastRevocationCheckData(lastCheckedDates);
+ mContext, mRevocationListUrl, mStoredRevocationListFile, false);
+ mCertificateRevocationStatusManager.checkRevocationStatus(mCertificates1);
+ // set the last modified date of the stored list to a barely not recent date
+ LocalDateTime now = LocalDateTime.now();
+ LocalDateTime barelyNotRecentDate =
+ now.minusHours(CertificateRevocationStatusManager.NUM_HOURS_BEFORE_NEXT_FETCH + 1);
+ mStoredRevocationListFile.setLastModified(
+ barelyNotRecentDate.toEpochSecond(OffsetDateTime.now().getOffset()) * 1000);
+ // simulate a remote revocation
+ copyFromAssetToFile(
+ REVOCATION_LIST_WITH_CERTIFICATES_USED_IN_THIS_TEST, mRemoteRevocationListFile);
assertThrows(
CertPathValidatorException.class,
@@ -362,8 +339,4 @@
fileOutputStream.write(data);
}
}
-
- private String getSerialNumber(X509Certificate certificate) {
- return certificate.getSerialNumber().toString(16);
- }
}
diff --git a/tests/PackageWatchdog/Android.bp b/tests/PackageWatchdog/Android.bp
index 44e545b..16c6e3b 100644
--- a/tests/PackageWatchdog/Android.bp
+++ b/tests/PackageWatchdog/Android.bp
@@ -28,6 +28,7 @@
static_libs: [
"PlatformProperties",
"androidx.test.rules",
+ "androidx.test.runner",
"flag-junit",
"frameworks-base-testutils",
"junit",
diff --git a/tests/PackageWatchdog/AndroidManifest.xml b/tests/PackageWatchdog/AndroidManifest.xml
index 540edb4..334d50f 100644
--- a/tests/PackageWatchdog/AndroidManifest.xml
+++ b/tests/PackageWatchdog/AndroidManifest.xml
@@ -15,7 +15,7 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.tests.packagewatchdog" >
+ package="com.android.server" >
<application android:debuggable="true">
<uses-library android:name="android.test.runner" />
@@ -23,6 +23,6 @@
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
- android:targetPackage="com.android.tests.packagewatchdog"
- android:label="PackageWatchdog Test"/>
+ android:targetPackage="com.android.server"
+ android:label="PackageWatchdog Test"/>
</manifest>
diff --git a/tests/PackageWatchdog/AndroidTest.xml b/tests/PackageWatchdog/AndroidTest.xml
new file mode 100644
index 0000000..45a88cd
--- /dev/null
+++ b/tests/PackageWatchdog/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?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.
+ -->
+<configuration description="Runs PackageWatchdog Tests.">
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+ <option name="cleanup-apks" value="true" />
+ <option name="test-file-name" value="PackageWatchdogTest.apk" />
+ </target_preparer>
+
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-tag" value="PackageWatchdogTest" />
+
+ <!-- Only run this tests in MTS if the Crashrecovery Mainline module is installed. -->
+ <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+ <option name="mainline-module-package-name" value="com.google.android.crashrecovery" />
+ </object>
+
+ <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+ <option name="package" value="com.android.server" />
+ <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+ <option name="hidden-api-checks" value="false"/>
+ </test>
+</configuration>
diff --git a/tests/vcn/Android.bp b/tests/vcn/Android.bp
index 661ed07..5ad1d1dc 100644
--- a/tests/vcn/Android.bp
+++ b/tests/vcn/Android.bp
@@ -17,8 +17,9 @@
// For access hidden connectivity methods in tests
defaults: ["framework-connectivity-test-defaults"],
- // TODO: b/374174952 Use 36 after Android B finalization
- min_sdk_version: "35",
+ // Tethering module is released in R so this test needs to be installable
+ // on R
+ min_sdk_version: "30",
srcs: [
"java/**/*.java",
diff --git a/tests/vcn/AndroidManifest.xml b/tests/vcn/AndroidManifest.xml
index 08effbd..6e8b4ac 100644
--- a/tests/vcn/AndroidManifest.xml
+++ b/tests/vcn/AndroidManifest.xml
@@ -17,7 +17,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.frameworks.tests.vcn">
<!-- TODO: b/374174952 Use 36 after Android B finalization -->
- <uses-sdk android:minSdkVersion="35" android:targetSdkVersion="35" />
+ <uses-sdk android:minSdkVersion="30" android:targetSdkVersion="35" />
<application>
<uses-library android:name="android.test.runner" />
diff --git a/tools/aapt2/link/FlaggedResources_test.cpp b/tools/aapt2/link/FlaggedResources_test.cpp
index adf711e..7bea96c 100644
--- a/tools/aapt2/link/FlaggedResources_test.cpp
+++ b/tools/aapt2/link/FlaggedResources_test.cpp
@@ -169,4 +169,18 @@
ASSERT_TRUE(output.contains("test.package.readWriteFlag"));
}
+TEST_F(FlaggedResourcesTest, ReadWriteFlagInPathFails) {
+ test::TestDiagnosticsImpl diag;
+ const std::string compiled_files_dir = GetTestPath("compiled");
+ ASSERT_FALSE(CompileFile(GetTestPath("res/values/flag(!test.package.rwFlag)/bools.xml"),
+ R"(<resources>
+ <bool name="bool1">false</bool>
+ </resources>)",
+ compiled_files_dir, &diag,
+ {"--feature-flags", "test.package.rwFlag=false"}));
+
+ ASSERT_TRUE(diag.GetLog().contains(
+ "Only read only flags may be used with resources: test.package.rwFlag"));
+}
+
} // namespace aapt