Merge "Handle letterbox education when disabled" into 24D1-dev
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 81a1a2d..5aa89b9 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -1142,16 +1142,13 @@
field public static final int NAV_BAR_MODE_KIDS = 1; // 0x1
}
- public static final class StatusBarManager.DisableInfo implements android.os.Parcelable {
+ public static final class StatusBarManager.DisableInfo {
method public boolean areAllComponentsEnabled();
- method public int describeContents();
method public boolean isNavigateToHomeDisabled();
method public boolean isNotificationPeekingDisabled();
method public boolean isRecentsDisabled();
method public boolean isSearchDisabled();
method public boolean isStatusBarExpansionDisabled();
- method public void writeToParcel(@NonNull android.os.Parcel, int);
- field @NonNull public static final android.os.Parcelable.Creator<android.app.StatusBarManager.DisableInfo> CREATOR;
}
public final class SystemServiceRegistry {
diff --git a/core/api/system-lint-baseline.txt b/core/api/system-lint-baseline.txt
index 1923641..11c5b96 100644
--- a/core/api/system-lint-baseline.txt
+++ b/core/api/system-lint-baseline.txt
@@ -1941,10 +1941,6 @@
New API must be flagged with @FlaggedApi: method android.app.ActivityManager.getExternalHistoricalProcessStartReasons(String,int)
UnflaggedApi: android.app.AppOpsManager#OPSTR_RECEIVE_SANDBOX_TRIGGER_AUDIO:
New API must be flagged with @FlaggedApi: field android.app.AppOpsManager.OPSTR_RECEIVE_SANDBOX_TRIGGER_AUDIO
-UnflaggedApi: android.app.StatusBarManager.DisableInfo#CREATOR:
- New API must be flagged with @FlaggedApi: field android.app.StatusBarManager.DisableInfo.CREATOR
-UnflaggedApi: android.app.StatusBarManager.DisableInfo#isBackDisabled():
- New API must be flagged with @FlaggedApi: method android.app.StatusBarManager.DisableInfo.isBackDisabled()
UnflaggedApi: android.companion.virtual.VirtualDeviceManager.VirtualDevice#getPersistentDeviceId():
New API must be flagged with @FlaggedApi: method android.companion.virtual.VirtualDeviceManager.VirtualDevice.getPersistentDeviceId()
UnflaggedApi: android.content.Context#THREAD_NETWORK_SERVICE:
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 3b00cc9..b55e5c9 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -461,7 +461,7 @@
method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void togglePanel();
}
- public static final class StatusBarManager.DisableInfo implements android.os.Parcelable {
+ public static final class StatusBarManager.DisableInfo {
method public boolean isRotationSuggestionDisabled();
}
diff --git a/core/java/android/app/StatusBarManager.aidl b/core/java/android/app/StatusBarManager.aidl
deleted file mode 100644
index 687678c..0000000
--- a/core/java/android/app/StatusBarManager.aidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Copyright (c) 2024, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app;
-
-parcelable StatusBarManager.DisableInfo;
\ No newline at end of file
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index 301fef8..14195c4 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -21,7 +21,6 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
-import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
@@ -44,7 +43,6 @@
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
-import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
@@ -59,7 +57,6 @@
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.IUndoMediaTransferCallback;
import com.android.internal.statusbar.NotificationVisibility;
-import com.android.internal.util.DataClass;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -632,49 +629,38 @@
}
/**
- * @deprecated
- * Disable some features in the status bar. Pass the bitwise-or of the DISABLE_*
- * flags. To re-enable everything, pass {@link #DISABLE_NONE}.
- *
- * This method is deprecated and callers should use
- * {@link #requestDisabledComponent(DisableInfo, String)}
+ * Disable some features in the status bar. Pass the bitwise-or of the DISABLE_* flags.
+ * To re-enable everything, pass {@link #DISABLE_NONE}.
*
* @hide
*/
- @Deprecated
@UnsupportedAppUsage
public void disable(int what) {
- requestDisabledComponent(new DisableInfo(what & DISABLE_MASK, what & DISABLE2_MASK), null);
- }
-
- /**
- * @deprecated
- * Disable some features in the status bar. Pass the bitwise-or of the DISABLE_2*
- * flags. To re-enable everything, pass {@link #DISABLE2_NONE}.
- *
- * This method is deprecated and callers should use
- * {@link #requestDisabledComponent(DisableInfo, String)}
- *
- * @hide
- */
- @Deprecated
- @UnsupportedAppUsage
- public void disable2(int what) {
- requestDisabledComponent(new DisableInfo(what & DISABLE_MASK, what & DISABLE2_MASK), null);
- }
-
- /**
- * Disable some features in the status bar. Pass a DisableInfo object with the required flags.
- *
- * @hide
- */
- @UnsupportedAppUsage
- public void requestDisabledComponent(DisableInfo disableInfo, String reason) {
try {
final int userId = Binder.getCallingUserHandle().getIdentifier();
final IStatusBarService svc = getService();
if (svc != null) {
- svc.disableForUser(disableInfo, mToken, mContext.getPackageName(), userId, reason);
+ svc.disableForUser(what, mToken, mContext.getPackageName(), userId);
+ }
+ } catch (RemoteException ex) {
+ throw ex.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Disable additional status bar features. Pass the bitwise-or of the DISABLE2_* flags.
+ * To re-enable everything, pass {@link #DISABLE_NONE}.
+ *
+ * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags.
+ *
+ * @hide
+ */
+ public void disable2(@Disable2Flags int what) {
+ try {
+ final int userId = Binder.getCallingUserHandle().getIdentifier();
+ final IStatusBarService svc = getService();
+ if (svc != null) {
+ svc.disable2ForUser(what, mToken, mContext.getPackageName(), userId);
}
} catch (RemoteException ex) {
throw ex.rethrowFromSystemServer();
@@ -902,9 +888,18 @@
@SystemApi
@RequiresPermission(android.Manifest.permission.STATUS_BAR)
public void setDisabledForSetup(boolean disabled) {
- int flags1 = disabled ? DEFAULT_SETUP_DISABLE_FLAGS : DISABLE_NONE;
- DisableInfo info = new DisableInfo(flags1, DISABLE2_NONE);
- requestDisabledComponent(info, "setDisabledForSetup");
+ try {
+ final int userId = Binder.getCallingUserHandle().getIdentifier();
+ final IStatusBarService svc = getService();
+ if (svc != null) {
+ svc.disableForUser(disabled ? DEFAULT_SETUP_DISABLE_FLAGS : DISABLE_NONE,
+ mToken, mContext.getPackageName(), userId);
+ svc.disable2ForUser(disabled ? DEFAULT_SETUP_DISABLE2_FLAGS : DISABLE2_NONE,
+ mToken, mContext.getPackageName(), userId);
+ }
+ } catch (RemoteException ex) {
+ throw ex.rethrowFromSystemServer();
+ }
}
/**
@@ -919,9 +914,16 @@
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
@RequiresPermission(android.Manifest.permission.STATUS_BAR)
public void setExpansionDisabledForSimNetworkLock(boolean disabled) {
- int flags1 = disabled ? DEFAULT_SIM_LOCKED_DISABLED_FLAGS : DISABLE_NONE;
- DisableInfo info = new DisableInfo(flags1, DISABLE2_NONE);
- requestDisabledComponent(info, "setExpansionDisabledForSimNetworkLock");
+ try {
+ final int userId = Binder.getCallingUserHandle().getIdentifier();
+ final IStatusBarService svc = getService();
+ if (svc != null) {
+ svc.disableForUser(disabled ? DEFAULT_SIM_LOCKED_DISABLED_FLAGS : DISABLE_NONE,
+ mToken, mContext.getPackageName(), userId);
+ }
+ } catch (RemoteException ex) {
+ throw ex.rethrowFromSystemServer();
+ }
}
/**
@@ -1313,75 +1315,33 @@
* @hide
*/
@SystemApi
- @DataClass
- public static final class DisableInfo implements Parcelable {
+ public static final class DisableInfo {
- /**
- * @hide
- */
private boolean mStatusBarExpansion;
- /**
- * @hide
- */
private boolean mNavigateHome;
- /**
- * @hide
- */
private boolean mNotificationPeeking;
- /**
- * @hide
- */
private boolean mRecents;
- /**
- * @hide
- */
- private boolean mBack;
- /**
- * @hide
- */
private boolean mSearch;
- /**
- * @hide
- */
private boolean mSystemIcons;
- /**
- * @hide
- */
private boolean mClock;
- /**
- * @hide
- */
private boolean mNotificationIcons;
- /**
- * @hide
- */
private boolean mRotationSuggestion;
- /**
- * @hide
- */
- private boolean mNotificationTicker;
/** @hide */
- @SuppressLint("UnflaggedApi")
public DisableInfo(int flags1, int flags2) {
mStatusBarExpansion = (flags1 & DISABLE_EXPAND) != 0;
mNavigateHome = (flags1 & DISABLE_HOME) != 0;
mNotificationPeeking = (flags1 & DISABLE_NOTIFICATION_ALERTS) != 0;
mRecents = (flags1 & DISABLE_RECENT) != 0;
- mBack = (flags1 & DISABLE_BACK) != 0;
mSearch = (flags1 & DISABLE_SEARCH) != 0;
mSystemIcons = (flags1 & DISABLE_SYSTEM_INFO) != 0;
mClock = (flags1 & DISABLE_CLOCK) != 0;
mNotificationIcons = (flags1 & DISABLE_NOTIFICATION_ICONS) != 0;
- mNotificationTicker = (flags1 & DISABLE_NOTIFICATION_TICKER) != 0;
mRotationSuggestion = (flags2 & DISABLE2_ROTATE_SUGGESTIONS) != 0;
}
/** @hide */
- @SuppressLint("UnflaggedApi")
- public DisableInfo() {
- setEnableAll();
- }
+ public DisableInfo() {}
/**
* @return {@code true} if expanding the notification shade is disabled
@@ -1409,7 +1369,7 @@
}
/** * @hide */
- public void setNavigationHomeDisabled(boolean disabled) {
+ public void setNagivationHomeDisabled(boolean disabled) {
mNavigateHome = disabled;
}
@@ -1444,20 +1404,6 @@
}
/**
- * @return {@code true} if mBack is disabled
- *
- * @hide
- */
- public boolean isBackDisabled() {
- return mBack;
- }
-
- /** @hide */
- public void setBackDisabled(boolean disabled) {
- mBack = disabled;
- }
-
- /**
* @return {@code true} if mSearch is disabled
*
* @hide
@@ -1515,20 +1461,6 @@
}
/**
- * @return {@code true} if notification ticker is disabled
- *
- * @hide
- */
- public boolean isNotificationTickerDisabled() {
- return mNotificationTicker;
- }
-
- /** * @hide */
- public void setNotificationTickerDisabled(boolean disabled) {
- mNotificationTicker = disabled;
- }
-
- /**
* Returns whether the rotation suggestion is disabled.
*
* @hide
@@ -1538,11 +1470,6 @@
return mRotationSuggestion;
}
- /** * @hide */
- public void setRotationSuggestionDisabled(boolean disabled) {
- mNotificationIcons = disabled;
- }
-
/**
* @return {@code true} if no components are disabled (default state)
* @hide
@@ -1550,8 +1477,8 @@
@SystemApi
public boolean areAllComponentsEnabled() {
return !mStatusBarExpansion && !mNavigateHome && !mNotificationPeeking && !mRecents
- && !mBack && !mSearch && !mSystemIcons && !mClock && !mNotificationIcons
- && !mNotificationTicker && !mRotationSuggestion;
+ && !mSearch && !mSystemIcons && !mClock && !mNotificationIcons
+ && !mRotationSuggestion;
}
/** @hide */
@@ -1560,12 +1487,10 @@
mNavigateHome = false;
mNotificationPeeking = false;
mRecents = false;
- mBack = false;
mSearch = false;
mSystemIcons = false;
mClock = false;
mNotificationIcons = false;
- mNotificationTicker = false;
mRotationSuggestion = false;
}
@@ -1575,9 +1500,9 @@
* @hide
*/
public boolean areAllComponentsDisabled() {
- return mStatusBarExpansion && mNavigateHome && mNotificationPeeking && mRecents && mBack
- && mSearch && mSystemIcons && mClock && mNotificationIcons
- && mNotificationTicker && mRotationSuggestion;
+ return mStatusBarExpansion && mNavigateHome && mNotificationPeeking
+ && mRecents && mSearch && mSystemIcons && mClock && mNotificationIcons
+ && mRotationSuggestion;
}
/** @hide */
@@ -1586,12 +1511,10 @@
mNavigateHome = true;
mNotificationPeeking = true;
mRecents = true;
- mBack = true;
mSearch = true;
mSystemIcons = true;
mClock = true;
mNotificationIcons = true;
- mNotificationTicker = true;
mRotationSuggestion = true;
}
@@ -1599,19 +1522,16 @@
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
-
- sb.append("Disable Info: ");
+ sb.append("DisableInfo: ");
sb.append(" mStatusBarExpansion=").append(mStatusBarExpansion ? "disabled" : "enabled");
sb.append(" mNavigateHome=").append(mNavigateHome ? "disabled" : "enabled");
sb.append(" mNotificationPeeking=")
.append(mNotificationPeeking ? "disabled" : "enabled");
sb.append(" mRecents=").append(mRecents ? "disabled" : "enabled");
- sb.append(" mBack=").append(mBack ? "disabled" : "enabled");
sb.append(" mSearch=").append(mSearch ? "disabled" : "enabled");
sb.append(" mSystemIcons=").append(mSystemIcons ? "disabled" : "enabled");
sb.append(" mClock=").append(mClock ? "disabled" : "enabled");
sb.append(" mNotificationIcons=").append(mNotificationIcons ? "disabled" : "enabled");
- sb.append(" mNotificationTicker=").append(mNotificationTicker ? "disabled" : "enabled");
sb.append(" mRotationSuggestion=").append(mRotationSuggestion ? "disabled" : "enabled");
return sb.toString();
@@ -1619,7 +1539,7 @@
}
/**
- * Convert a DisableInfo to equivalent flags.
+ * Convert a DisableInfo to equivalent flags
* @return a pair of equivalent disable flags
*
* @hide
@@ -1632,278 +1552,14 @@
if (mNavigateHome) disable1 |= DISABLE_HOME;
if (mNotificationPeeking) disable1 |= DISABLE_NOTIFICATION_ALERTS;
if (mRecents) disable1 |= DISABLE_RECENT;
- if (mBack) disable1 |= DISABLE_BACK;
if (mSearch) disable1 |= DISABLE_SEARCH;
if (mSystemIcons) disable1 |= DISABLE_SYSTEM_INFO;
if (mClock) disable1 |= DISABLE_CLOCK;
if (mNotificationIcons) disable1 |= DISABLE_NOTIFICATION_ICONS;
- if (mNotificationTicker) disable1 |= DISABLE_NOTIFICATION_TICKER;
if (mRotationSuggestion) disable2 |= DISABLE2_ROTATE_SUGGESTIONS;
return new Pair<Integer, Integer>(disable1, disable2);
}
-
-
-
- // Code below generated by codegen v1.0.23.
- //
- // DO NOT MODIFY!
- // CHECKSTYLE:OFF Generated code
- //
- // To regenerate run:
- // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/app/StatusBarManager.java
- //
- // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
- // Settings > Editor > Code Style > Formatter Control
- //@formatter:off
-
-
- /**
- * Creates a new DisableInfo.
- * @hide
- */
- @DataClass.Generated.Member
- public DisableInfo(
- boolean statusBarExpansion,
- boolean navigateHome,
- boolean notificationPeeking,
- boolean recents,
- boolean back,
- boolean search,
- boolean systemIcons,
- boolean clock,
- boolean notificationIcons,
- boolean rotationSuggestion,
- boolean notificationTicker) {
- this.mStatusBarExpansion = statusBarExpansion;
- this.mNavigateHome = navigateHome;
- this.mNotificationPeeking = notificationPeeking;
- this.mRecents = recents;
- this.mBack = back;
- this.mSearch = search;
- this.mSystemIcons = systemIcons;
- this.mClock = clock;
- this.mNotificationIcons = notificationIcons;
- this.mRotationSuggestion = rotationSuggestion;
- this.mNotificationTicker = notificationTicker;
-
- // onConstructed(); // You can define this method to get a callback
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isStatusBarExpansion() {
- return mStatusBarExpansion;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isNavigateHome() {
- return mNavigateHome;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isNotificationPeeking() {
- return mNotificationPeeking;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isRecents() {
- return mRecents;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isBack() {
- return mBack;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isSearch() {
- return mSearch;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isSystemIcons() {
- return mSystemIcons;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isClock() {
- return mClock;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isNotificationIcons() {
- return mNotificationIcons;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isRotationSuggestion() {
- return mRotationSuggestion;
- }
-
- /**
- * @hide
- */
- @DataClass.Generated.Member
- public boolean isNotificationTicker() {
- return mNotificationTicker;
- }
-
- /**
- * @hide
- */
- @SuppressLint("UnflaggedApi")
- @Override
- @DataClass.Generated.Member
- public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
- // You can override field parcelling by defining methods like:
- // void parcelFieldName(Parcel dest, int flags) { ... }
-
- int flg = 0;
- if (mStatusBarExpansion) flg |= 0x1;
- if (mNavigateHome) flg |= 0x2;
- if (mNotificationPeeking) flg |= 0x4;
- if (mRecents) flg |= 0x8;
- if (mBack) flg |= 0x10;
- if (mSearch) flg |= 0x20;
- if (mSystemIcons) flg |= 0x40;
- if (mClock) flg |= 0x80;
- if (mNotificationIcons) flg |= 0x100;
- if (mRotationSuggestion) flg |= 0x200;
- if (mNotificationTicker) flg |= 0x400;
- dest.writeInt(flg);
- }
-
- /**
- * @hide
- */
- @SuppressLint("UnflaggedApi")
- @Override
- @DataClass.Generated.Member
- public int describeContents() { return 0; }
-
- /** @hide */
- @SuppressWarnings({"unchecked", "RedundantCast"})
- @DataClass.Generated.Member
- /* package-private */ DisableInfo(@NonNull android.os.Parcel in) {
- // You can override field unparcelling by defining methods like:
- // static FieldType unparcelFieldName(Parcel in) { ... }
-
- int flg = in.readInt();
- boolean statusBarExpansion = (flg & 0x1) != 0;
- boolean navigateHome = (flg & 0x2) != 0;
- boolean notificationPeeking = (flg & 0x4) != 0;
- boolean recents = (flg & 0x8) != 0;
- boolean back = (flg & 0x10) != 0;
- boolean search = (flg & 0x20) != 0;
- boolean systemIcons = (flg & 0x40) != 0;
- boolean clock = (flg & 0x80) != 0;
- boolean notificationIcons = (flg & 0x100) != 0;
- boolean rotationSuggestion = (flg & 0x200) != 0;
- boolean notificationTicker = (flg & 0x400) != 0;
-
- this.mStatusBarExpansion = statusBarExpansion;
- this.mNavigateHome = navigateHome;
- this.mNotificationPeeking = notificationPeeking;
- this.mRecents = recents;
- this.mBack = back;
- this.mSearch = search;
- this.mSystemIcons = systemIcons;
- this.mClock = clock;
- this.mNotificationIcons = notificationIcons;
- this.mRotationSuggestion = rotationSuggestion;
- this.mNotificationTicker = notificationTicker;
-
- // onConstructed(); // You can define this method to get a callback
- }
-
- @DataClass.Generated.Member
- public static final @NonNull Parcelable.Creator<DisableInfo> CREATOR
- = new Parcelable.Creator<DisableInfo>() {
- @Override
- public DisableInfo[] newArray(int size) {
- return new DisableInfo[size];
- }
-
- @Override
- public DisableInfo createFromParcel(@NonNull android.os.Parcel in) {
- return new DisableInfo(in);
- }
- };
-
- @DataClass.Generated(
- time = 1708625947132L,
- codegenVersion = "1.0.23",
- sourceFile = "frameworks/base/core/java/android/app/StatusBarManager.java",
- inputSignatures = "private boolean mStatusBarExpansion\nprivate boolean "
- + "mNavigateHome\nprivate boolean mNotificationPeeking\nprivate "
- + "boolean mRecents\nprivate boolean mBack\nprivate boolean mSearch\n"
- + "private boolean mSystemIcons\nprivate boolean mClock\nprivate "
- + "boolean mNotificationIcons\nprivate boolean mRotationSuggestion\n"
- + "private boolean mNotificationTicker\npublic "
- + "@android.annotation.SystemApi boolean isStatusBarExpansionDisabled()\n"
- + "public void setStatusBarExpansionDisabled(boolean)\npublic "
- + "@android.annotation.SystemApi boolean isNavigateToHomeDisabled()\npublic"
- + " void setNavigationHomeDisabled(boolean)\npublic "
- + "@android.annotation.SystemApi boolean isNotificationPeekingDisabled()"
- + "\npublic void setNotificationPeekingDisabled(boolean)\npublic "
- + "@android.annotation.SystemApi boolean isRecentsDisabled()\npublic "
- + "void setRecentsDisabled(boolean)\npublic boolean isBackDisabled()"
- + "\npublic void setBackDisabled(boolean)\npublic "
- + "@android.annotation.SystemApi boolean isSearchDisabled()\npublic "
- + "void setSearchDisabled(boolean)\npublic boolean "
- + "areSystemIconsDisabled()\npublic void setSystemIconsDisabled(boolean)\n"
- + "public boolean isClockDisabled()\npublic "
- + "void setClockDisabled(boolean)\npublic boolean "
- + "areNotificationIconsDisabled()\npublic void "
- + "setNotificationIconsDisabled(boolean)\npublic boolean "
- + "isNotificationTickerDisabled()\npublic void "
- + "setNotificationTickerDisabled(boolean)\npublic "
- + "@android.annotation.TestApi boolean isRotationSuggestionDisabled()\n"
- + "public void setRotationSuggestionDisabled(boolean)\npublic "
- + "@android.annotation.SystemApi boolean areAllComponentsEnabled()\npublic"
- + " void setEnableAll()\npublic boolean areAllComponentsDisabled()\n"
- + "public void setDisableAll()\npublic @android.annotation.NonNull "
- + "@java.lang.Override java.lang.String toString()\npublic "
- + "android.util.Pair<java.lang.Integer,java.lang.Integer> toFlags()\n"
- + "class DisableInfo extends java.lang.Object implements "
- + "[android.os.Parcelable]\n@com.android.internal.util.DataClass")
- @Deprecated
- private void __metadata() {}
-
-
- //@formatter:on
- // End of generated code
-
}
/**
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index d2e4a61..1a4c641 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -105,6 +105,33 @@
private static final int CAMERA_TYPE_ALL = 1;
private ArrayList<String> mDeviceIdList;
+ /**
+ * Caches the mapping between a logical camera ID and 'MultiResolutionStreamConfigurationMap'
+ * that is calculated by {@link #getPhysicalCameraMultiResolutionConfigs} as the calculation
+ * might take many binder calls.
+ * <p>
+ * Note, this is a map of maps. The structure is:
+ * <pre>
+ * {
+ * logicalCameraId_1 -> {
+ * physicalCameraId_1 -> [
+ * streamConfiguration_1,
+ * streamConfiguration_2,
+ * ...
+ * ],
+ * physicalCameraId_2 -> [...],
+ * ...
+ * },
+ * logicalCameraId_2 -> {
+ * ...
+ * },
+ * ...
+ * }
+ * </pre>
+ * </p>
+ */
+ private final Map<String, Map<String, StreamConfiguration[]>>
+ mCameraIdToMultiResolutionStreamConfigurationMap = new HashMap<>();
private final Context mContext;
private final Object mLock = new Object();
@@ -540,8 +567,14 @@
private Map<String, StreamConfiguration[]> getPhysicalCameraMultiResolutionConfigs(
String cameraId, CameraMetadataNative info, ICameraService cameraService)
throws CameraAccessException {
+ if (mCameraIdToMultiResolutionStreamConfigurationMap.containsKey(cameraId)) {
+ return mCameraIdToMultiResolutionStreamConfigurationMap.get(cameraId);
+ }
+
HashMap<String, StreamConfiguration[]> multiResolutionStreamConfigurations =
- new HashMap<String, StreamConfiguration[]>();
+ new HashMap<>();
+ mCameraIdToMultiResolutionStreamConfigurationMap.put(cameraId,
+ multiResolutionStreamConfigurations);
Boolean multiResolutionStreamSupported = info.get(
CameraCharacteristics.SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED);
@@ -649,28 +682,9 @@
"Camera service is currently unavailable");
}
try {
- Size displaySize = getDisplaySize();
-
CameraMetadataNative info = cameraService.getCameraCharacteristics(cameraId,
mContext.getApplicationInfo().targetSdkVersion, overrideToPortrait);
- try {
- info.setCameraId(Integer.parseInt(cameraId));
- } catch (NumberFormatException e) {
- Log.v(TAG, "Failed to parse camera Id " + cameraId + " to integer");
- }
-
- boolean hasConcurrentStreams =
- CameraManagerGlobal.get().cameraIdHasConcurrentStreamsLocked(cameraId);
- info.setHasMandatoryConcurrentStreams(hasConcurrentStreams);
- info.setDisplaySize(displaySize);
-
- Map<String, StreamConfiguration[]> multiResolutionSizeMap =
- getPhysicalCameraMultiResolutionConfigs(cameraId, info, cameraService);
- if (multiResolutionSizeMap.size() > 0) {
- info.setMultiResolutionStreamConfigurationMap(multiResolutionSizeMap);
- }
-
- characteristics = new CameraCharacteristics(info);
+ characteristics = prepareCameraCharacteristics(cameraId, info, cameraService);
} catch (ServiceSpecificException e) {
throw ExceptionUtils.throwAsPublicException(e);
} catch (RemoteException e) {
@@ -683,6 +697,47 @@
return characteristics;
}
+
+ /**
+ * Utility method to take a {@link CameraMetadataNative} object and wrap it into a
+ * {@link CameraCharacteristics} object that has all required fields and keys set and is fit
+ * for apps to consume.
+ *
+ * @param cameraId camera Id that the CameraMetadataNative was fetched for.
+ * @param metadata base CameraMetadataNative to be wrapped
+ * @param cameraService remote cameraservice instance to be used if binder calls need
+ * to be made.
+ * @return A CameraCharacteristics object that can be used by the apps.
+ * @hide
+ */
+ @NonNull
+ public CameraCharacteristics prepareCameraCharacteristics(
+ @NonNull String cameraId, CameraMetadataNative metadata, ICameraService cameraService)
+ throws CameraAccessException {
+ synchronized (mLock) {
+ try {
+ metadata.setCameraId(Integer.parseInt(cameraId));
+ } catch (NumberFormatException e) {
+ Log.v(TAG, "Failed to parse camera Id " + cameraId + " to integer");
+ }
+
+ boolean hasConcurrentStreams =
+ CameraManagerGlobal.get().cameraIdHasConcurrentStreamsLocked(cameraId);
+ metadata.setHasMandatoryConcurrentStreams(hasConcurrentStreams);
+
+ Size displaySize = getDisplaySize();
+ metadata.setDisplaySize(displaySize);
+
+ Map<String, StreamConfiguration[]> multiResolutionSizeMap =
+ getPhysicalCameraMultiResolutionConfigs(cameraId, metadata, cameraService);
+ if (!multiResolutionSizeMap.isEmpty()) {
+ metadata.setMultiResolutionStreamConfigurationMap(multiResolutionSizeMap);
+ }
+
+ return new CameraCharacteristics(metadata);
+ }
+ }
+
/**
* <p>Query the camera extension capabilities of a camera device.</p>
*
@@ -708,7 +763,10 @@
return new CameraExtensionCharacteristics(mContext, cameraId, characteristicsMap);
}
- private Map<String, CameraCharacteristics> getPhysicalIdToCharsMap(
+ /**
+ * @hide
+ */
+ public Map<String, CameraCharacteristics> getPhysicalIdToCharsMap(
CameraCharacteristics chars) throws CameraAccessException {
HashMap<String, CameraCharacteristics> physicalIdsToChars =
new HashMap<String, CameraCharacteristics>();
@@ -844,8 +902,6 @@
final int oomScoreOffset, boolean overrideToPortrait) throws CameraAccessException {
CameraCharacteristics characteristics = getCameraCharacteristics(cameraId);
CameraDevice device = null;
- Map<String, CameraCharacteristics> physicalIdsToChars =
- getPhysicalIdToCharsMap(characteristics);
synchronized (mLock) {
ICameraDeviceUser cameraUser = null;
@@ -861,7 +917,7 @@
callback,
executor,
characteristics,
- physicalIdsToChars,
+ this,
mContext.getApplicationInfo().targetSdkVersion,
mContext, cameraDeviceSetup);
ICameraDeviceCallbacks callbacks = deviceImpl.getCallbacks();
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index 97c03ed..740ebb6 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -31,6 +31,7 @@
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraExtensionCharacteristics;
+import android.hardware.camera2.CameraManager;
import android.hardware.camera2.CameraMetadata;
import android.hardware.camera2.CameraOfflineSession;
import android.hardware.camera2.CaptureFailure;
@@ -146,7 +147,8 @@
private final String mCameraId;
private final CameraCharacteristics mCharacteristics;
- private final Map<String, CameraCharacteristics> mPhysicalIdsToChars;
+ private Map<String, CameraCharacteristics> mPhysicalIdsToChars;
+ private final CameraManager mCameraManager;
private final int mTotalPartialCount;
private final Context mContext;
@@ -292,18 +294,19 @@
public CameraDeviceImpl(String cameraId, StateCallback callback, Executor executor,
CameraCharacteristics characteristics,
- Map<String, CameraCharacteristics> physicalIdsToChars,
+ @NonNull CameraManager manager,
int appTargetSdkVersion,
Context ctx,
@Nullable CameraDevice.CameraDeviceSetup cameraDeviceSetup) {
- if (cameraId == null || callback == null || executor == null || characteristics == null) {
+ if (cameraId == null || callback == null || executor == null || characteristics == null
+ || manager == null) {
throw new IllegalArgumentException("Null argument given");
}
mCameraId = cameraId;
mDeviceCallback = callback;
mDeviceExecutor = executor;
mCharacteristics = characteristics;
- mPhysicalIdsToChars = physicalIdsToChars;
+ mCameraManager = manager;
mAppTargetSdkVersion = appTargetSdkVersion;
mContext = ctx;
mCameraDeviceSetup = cameraDeviceSetup;
@@ -325,6 +328,18 @@
}
}
+ private Map<String, CameraCharacteristics> getPhysicalIdToChars() {
+ if (mPhysicalIdsToChars == null) {
+ try {
+ mPhysicalIdsToChars = mCameraManager.getPhysicalIdToCharsMap(mCharacteristics);
+ } catch (CameraAccessException e) {
+ Log.e(TAG, "Unable to query the physical characteristics map!");
+ }
+ }
+
+ return mPhysicalIdsToChars;
+ }
+
public CameraDeviceCallbacks getCallbacks() {
return mCallbacks;
}
@@ -1544,7 +1559,7 @@
return true;
}
- for (Map.Entry<String, CameraCharacteristics> entry : mPhysicalIdsToChars.entrySet()) {
+ for (Map.Entry<String, CameraCharacteristics> entry : getPhysicalIdToChars().entrySet()) {
configMap = entry.getValue().get(ck);
if (configMap != null &&
@@ -2567,7 +2582,7 @@
public void createExtensionSession(ExtensionSessionConfiguration extensionConfiguration)
throws CameraAccessException {
HashMap<String, CameraCharacteristics> characteristicsMap = new HashMap<>(
- mPhysicalIdsToChars);
+ getPhysicalIdToChars());
characteristicsMap.put(mCameraId, mCharacteristics);
boolean initializationFailed = true;
IBinder token = new Binder(TAG + " : " + mNextSessionId++);
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceSetupImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceSetupImpl.java
index 0f199b1..0f16f37 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceSetupImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceSetupImpl.java
@@ -130,11 +130,12 @@
}
try {
- CameraMetadataNative metadataNative = cameraService.getSessionCharacteristics(
+ CameraMetadataNative metadata = cameraService.getSessionCharacteristics(
mCameraId, mTargetSdkVersion,
CameraManager.shouldOverrideToPortrait(mContext), sessionConfig);
- return new CameraCharacteristics(metadataNative);
+ return mCameraManager.prepareCameraCharacteristics(mCameraId, metadata,
+ cameraService);
} catch (ServiceSpecificException e) {
switch (e.errorCode) {
case ICameraService.ERROR_INVALID_OPERATION ->
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index b83b2d2..fc60f06 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -17,7 +17,6 @@
package com.android.internal.statusbar;
import android.app.Notification;
-import android.app.StatusBarManager;
import android.content.ComponentName;
import android.graphics.drawable.Icon;
import android.graphics.Rect;
@@ -53,9 +52,9 @@
void togglePanel();
@UnsupportedAppUsage
void disable(int what, IBinder token, String pkg);
+ void disableForUser(int what, IBinder token, String pkg, int userId);
void disable2(int what, IBinder token, String pkg);
- void disableForUser(in StatusBarManager.DisableInfo info, IBinder token, String pkg, int userId, String reason);
-
+ void disable2ForUser(int what, IBinder token, String pkg, int userId);
int[] getDisableFlags(IBinder token, int userId);
void setIcon(String slot, String iconPackage, int iconId, int iconLevel, String contentDescription);
@UnsupportedAppUsage
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 1fb1fec..a534ea7 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Roetinemodus-inligtingkennisgewing"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Batterybespaarder is aangeskakel"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Verminder tans batterygebruik om batterylewe te verleng"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Batterybespaarder is aan"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Batterybespaarder is aangeskakel om batterylewe te verleng"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Batterybespaarder"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Batterybespaarder is afgeskakel"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Foon se battery het genoeg krag. Kenmerke is nie meer beperk nie."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Jy kan boodskappe stuur en ontvang sonder ’n selfoon- of wi-fi-netwerk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Maak Boodskappe oop"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Hoe dit werk"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 9cff3bfd..3e3ad6b 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"የዕለት ተዕለት ሁነታ መረጃ ማሳወቂያዎች"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"የባትሪ ኃይል ቆጣቢ በርቷል"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"የባትሪ ዕድሜን ለማራዘም የባትሪ አጠቃቀምን በመቀነስ ላይ"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"ባትሪ ቆጣቢ በርቷል"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"የባትሪ ዕድሜን ለማራዘም የባትሪ ኃይል ቆጣቢ በርቷል"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ባትሪ ቆጣቢ"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"የባትሪ ቆጣቢ ጠፍቷል"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ስልክ በቂ የባትሪ ኃይል አለው። ባህሪያት ከእንግዲህ የተገደቡ አይደሉም።"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ያለ ሞባይል ወይም የWi-Fi አውታረ መረብ መልዕክቶችን መላክ እና መቀበል ይችላሉ"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"መልዕክቶች ይክፈቱ"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"እንዴት እንደሚሠራ"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 0827739..5e43882 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -845,7 +845,7 @@
<string name="policylab_forceLock" msgid="7360335502968476434">"قفل الشاشة"</string>
<string name="policydesc_forceLock" msgid="1008844760853899693">"التحكّم في طريقة ووقت قفل الشاشة"</string>
<string name="policylab_wipeData" msgid="1359485247727537311">"محو جميع البيانات"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="7245372676261947507">"يمكنك محو بيانات الجهاز اللوحي بدون تحذير، وذلك عبر إجراء إعادة الضبط على الإعدادات الأصلية."</string>
+ <string name="policydesc_wipeData" product="tablet" msgid="7245372676261947507">"محو بيانات الجهاز اللوحي بدون تحذير، وذلك عبر إعادة الضبط على الإعدادات الأصلية"</string>
<string name="policydesc_wipeData" product="tv" msgid="513862488950801261">"يمكنك محو بيانات جهاز Android TV بدون تحذير عن طريق تنفيذ إعادة الضبط على الإعدادات الأصلية."</string>
<string name="policydesc_wipeData" product="automotive" msgid="660804547737323300">"يمكنك محو بيانات \"نظام الترفيه والمعلومات\" بدون تحذير، وذلك من خلال إعادة الضبط على الإعدادات الأصلية."</string>
<string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"محو بيانات الهاتف بدون تحذير، وذلك من خلال إعادة ضبط البيانات على الإعدادات الأصلية"</string>
@@ -2139,6 +2139,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"إشعار معلومات \"وضع سلسلة الإجراءات\""</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"تم تفعيل ميزة توفير شحن البطارية"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"يتم تقليل استخدام البطارية لإطالة عمرها."</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"تم تفعيل ميزة \"توفير شحن البطارية\""</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"تم تفعيل ميزة \"توفير شحن البطارية\" لإطالة عمر البطارية"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"توفير شحن البطارية"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"تم تفعيل ميزة \"توفير شحن البطارية\""</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"تم شحن الهاتف بدرجة كافية وتفعيل الميزات مرة أخرى"</string>
@@ -2397,4 +2399,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"يمكنك إرسال الرسائل واستلامها بدون شبكة الجوّال أو شبكة Wi-Fi."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"فتح تطبيق \"الرسائل\""</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"طريقة العمل"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 1c5b27b6..f2fc9b0 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ৰুটিন ম’ডৰ তথ্য জাননী"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"বেটাৰী সঞ্চয়কাৰী অন কৰা হৈছে"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"বেটাৰীৰ জীৱনকাল বৃদ্ধি কৰিবলৈ বেটাৰীৰ ব্যৱহাৰ কমোৱা হৈছে"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"বেটাৰী সঞ্চয়কাৰী অন কৰা হৈছে"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"বেটাৰীৰ জীৱনকাল বৃদ্ধি কৰিবলৈ বেটাৰী সঞ্চয়কাৰী অন কৰা হৈছে"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"বেটাৰী সঞ্চয়কাৰী"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"বেটাৰী সঞ্চয়কাৰী অফ কৰা হ’ল"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ফ\'নটোত পর্যাপ্ত পৰিমাণে চার্জ আছে। সুবিধাবোৰ আৰু সীমাবদ্ধ কৰা নাই।"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"আপুনি ম’বাইল বা ৱাই-ফাই নেটৱৰ্কৰ জৰিয়তে পাঠ বাৰ্তা পঠিয়াব বা লাভ কৰিব পাৰে"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages খোলক"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ই কেনেকৈ কাম কৰে"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index b8fc0ff..496349d 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Rejim üçün məlumat bildirişi"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Enerjiyə Qənaət aktivdir"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Batareyanın ömrünü uzatmaq üçün batareyadan istifadəni azaldın"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Enerjiyə Qənaət yanılıdır"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Batareya istifadəsini artırmaq üçün Enerjiyə Qənaət yandırıldı"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Enerjiyə qənaət"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Enerjiyə qənaət deaktivdir"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefonun kifayət qədər enerjisi var. Funksiyalar artıq məhdud deyil."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mobil və ya Wi-Fi şəbəkəsi olmadan mesaj göndərə və qəbul edə bilərsiniz"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Mesajı açın"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Haqqında"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index f7ab63c..0452514 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Obaveštenje o informacijama Rutinskog režima"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Ušteda baterije je uključena"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Smanjuje se potrošnja baterije da bi se produžilo njeno trajanje"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Ušteda baterije je uključena"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Ušteda baterije je uključena da bi se produžilo trajanje baterije"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Ušteda baterije"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Ušteda baterije je isključena"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Baterija telefona je dovoljno napunjena. Funkcije više nisu ograničene."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Možete da šaljete i primate poruke bez mobilne ili WiFi mreže"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvori Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Princip rada"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 4de059c..6856727 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -2137,6 +2137,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Апавяшчэнне з інфармацыяй пра ўсталяваны рэжым"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Рэжым энергазберажэння ўключаны"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Абмежаванне выкарыстання зараду для падаўжэння часу працы ад акумулятара"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Рэжым энергазберажэння ўключаны"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Каб падоўжыць час працы ад акумулятара, уключаны рэжым энергазберажэння"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Рэжым энергазберажэння"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Рэжым эканоміі зараду выключаны"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"У тэлефона дастатковы ўзровень зараду. Функцыі больш не абмежаваны."</string>
@@ -2395,4 +2397,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Вы можаце адпраўляць і атрымліваць паведамленні без доступу да мабільнай сеткі або Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Адкрыць Паведамленні"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Як гэта працуе"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 6ec2338..1a04e8d 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -153,7 +153,7 @@
<string name="cfTemplateForwardedTime" msgid="735042369233323609">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> след <xliff:g id="TIME_DELAY">{2}</xliff:g> секунди"</string>
<string name="cfTemplateRegistered" msgid="5619930473441550596">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Не е пренасочено"</string>
<string name="cfTemplateRegisteredTime" msgid="5222794399642525045">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Не е пренасочено"</string>
- <string name="scCellularNetworkSecurityTitle" msgid="90330018476923559">"Сигурност на мобилната мрежа"</string>
+ <string name="scCellularNetworkSecurityTitle" msgid="90330018476923559">"Сигурност на клетъчната мрежа"</string>
<string name="scCellularNetworkSecuritySummary" msgid="8659128412709908263">"Преглед на настройките"</string>
<string name="scIdentifierDisclosureIssueTitle" msgid="3737384845335568193">"Осъществен е достъп до идентификатора на устройството"</string>
<string name="scIdentifierDisclosureIssueSummary" msgid="3870743771498510600">"Мрежа, свързана с(ъс) <xliff:g id="DISCLOSURE_NETWORK">%4$s</xliff:g>, записа уникалния идентификатор на устройството ви (IMSI) <xliff:g id="DISCLOSURE_COUNT">%1$d</xliff:g> пъти за периода <xliff:g id="DISCLOSURE_WINDOW_START_TIME">%2$tr</xliff:g> – <xliff:g id="DISCLOSURE_WINDOW_END_TIME">%3$tr</xliff:g>."</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Известие с информация за режима на поредица"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Режимът за запазване на батерията е включен"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Използването на батерията се намалява с цел удължаване на живота ѝ"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Режимът за запазване на батерията е включен"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Режимът за запазване на батерията е включен с цел удължаване на живота ѝ"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Режим за запазване на батерията"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Режимът за запазване на батерията е изключен"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Батерията на телефона има достатъчно заряд. Функциите вече не са ограничени."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Можете да изпращате и получавате съобщения без мобилна или Wi-Fi мрежа"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Отваряне на Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Начин на работа"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 9969305..e5d0aa3 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"রুটিন মোডের তথ্য সংক্রান্ত বিজ্ঞপ্তি"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"\'ব্যাটারি সেভার\' ফিচার চালু করা হয়েছে"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ব্যাটারির আয়ু বাড়াতে ব্যাটারির ব্যবহার কমানো হচ্ছে"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"\'ব্যাটারি সেভার\' চালু করা হয়েছে"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"ব্যাটারির আয়ু বাড়াতে \'ব্যাটারি সেভার\' চালু করা হয়েছে"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ব্যাটারি সেভার"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ব্যাটারি সেভার বন্ধ করা আছে"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ফোনের ব্যাটারিতে যথেষ্ট চার্জ আছে। ফিচারগুলির উপর আর বিধিনিষেধ নেই।"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"আপনি কোনও মেবাইল বা ওয়াই-ফাই নেটওয়ার্ক ছাড়াই মেসেজ পাঠাতে ও পেতে পারবেন"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages খুলুন"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"এটি কীভাবে কাজ করে"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index b3dad72d..0351bce 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Obavještenje za informacije Rutinskog načina"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Ušteda baterije je uključena"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Smanjena je potrošnja baterije da se produži vijek trajanja baterije"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Ušteda baterije je uključena"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Ušteda baterije je uključena radi produženja vijeka trajanja baterije"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Ušteda baterije"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Ušteda baterije je isključena"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefon se dovoljno napunio. Funkcije nisu više ograničene."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Možete slati i primati poruke bez mobilne ili WiFi mreže"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvorite Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Kako ovo funkcionira"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index bbd4e6c..782799e 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificació d\'informació del mode de rutina"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Estalvi de bateria s\'ha activat"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"S\'està reduint l\'ús de la bateria per allargar-ne la durada"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"La funció Estalvi de bateria està activada"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"S\'ha activat la funció Estalvi de bateria per allargar la durada de la bateria"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Estalvi de bateria"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"L\'estalvi de bateria s\'ha desactivat"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"El telèfon té prou bateria. Les funcions ja no estan restringides."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Pots enviar i rebre missatges sense una xarxa mòbil o Wi‑Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Obre Missatges"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Com funciona"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index c28aeb5..726598d 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -2137,6 +2137,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Informační oznámení režimu sledu činností"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Zapnul se spořič baterie"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Je třeba snížit využití baterie za účelem prodloužení její výdrže"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Spořič baterie je zapnutý"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Spořič baterie je zapnutý a prodlužuje výdrž baterie"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Spořič baterie"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Spořič baterie je vypnutý"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefon je dostatečně nabitý. Funkce už nejsou omezeny."</string>
@@ -2395,4 +2397,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Zprávy můžete odesílat a přijímat bez mobilní sítě nebo sítě Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otevřít Zprávy"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Jak to funguje"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 3b140e7..5a46db5 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notifikation med oplysninger om rutinetilstand"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Batterisparefunktion er aktiveret"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reducerer batteriforbruget for at forlænge batteritiden"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Batterisparefunktion er aktiveret"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Batterisparefunktion er aktiveret for at forlænge batteritiden"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Batterisparefunktion"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Batterisparefunktion blev slået fra"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefonen har tilstrækkeligt batteri. Funktionerne er ikke længere begrænsede."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Du kan sende og modtage beskeder uden et mobil- eller Wi-Fi-netværk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Åbn Beskeder"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Sådan fungerer det"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 0bfc689..66ba1f0 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Infomitteilung zum Ablaufmodus"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Energiesparmodus aktiviert"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reduzierung der Akkunutzung, um die Akkulaufzeit zu verlängern"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Energiesparmodus ist aktiviert"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Der Energiesparmodus ist aktiviert, um die Akkulaufzeit zu verlängern"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Energiesparmodus"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Energiesparmodus deaktiviert"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Das Smartphone ist ausreichend geladen. Es sind keine Funktionen mehr beschränkt."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Du kannst Nachrichten ohne Mobilfunknetz oder WLAN senden und empfangen"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages öffnen"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"So funktionierts"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index a53b010..8bbaf09 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Ειδοποίηση πληροφοριών λειτουργίας Ρουτίνας"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Η Εξοικονόμηση μπαταρίας ενεργοποιήθηκε"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Μείωση της χρήσης της μπαταρίας για παράταση της διάρκειας ζωής της μπαταρίας"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Η Εξοικονόμηση μπαταρίας είναι ενεργή"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Η Εξοικονόμηση μπαταρίας ενεργοποιήθηκε για την παράταση της διάρκειας ζωής της μπαταρίας"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Εξοικονόμηση μπαταρίας"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Η Εξοικονόμηση μπαταρίας απενεργοποιήθηκε"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Το τηλέφωνο είναι αρκετά φορτισμένο. Οι λειτουργίες δεν περιορίζονται πλέον."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Μπορείτε να στέλνετε και να λαμβάνετε μηνύματα χωρίς δίκτυο κινητής τηλεφωνίας ή Wi-Fi."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Άνοιγμα Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Πώς λειτουργεί"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 2a6c510..984e210 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Routine Mode info notification"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Battery Saver turned on"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reducing battery usage to extend battery life"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Battery Saver is on"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Battery Saver is turned on to extend battery life"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Battery Saver"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Battery Saver turned off"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Phone has enough charge. Features no longer restricted."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"How it works"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 28df178..c94816c 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Routine Mode info notification"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Battery Saver turned on"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reducing battery usage to extend battery life"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Battery Saver is on"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Battery Saver is turned on to extend battery life"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Battery Saver"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Battery Saver turned off"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Phone has enough charge. Features no longer restricted."</string>
@@ -2393,4 +2395,13 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"How it works"</string>
+ <string name="fingerprint_dangling_notification_title" msgid="7362075195588639989">"Set up Fingerprint Unlock again"</string>
+ <string name="fingerprint_dangling_notification_msg_1" msgid="6261149111900787302">"<xliff:g id="FINGERPRINT">%s</xliff:g> wasn\'t working well and was deleted to improve performance"</string>
+ <string name="fingerprint_dangling_notification_msg_2" msgid="7688302770424064884">"<xliff:g id="FINGERPRINT_0">%1$s</xliff:g> and <xliff:g id="FINGERPRINT_1">%2$s</xliff:g> weren\'t working well and were deleted to improve performance"</string>
+ <string name="fingerprint_dangling_notification_msg_all_deleted_1" msgid="2927018569542316055">"<xliff:g id="FINGERPRINT">%s</xliff:g> wasn\'t working well and was deleted. Set it up again to unlock your phone with fingerprint."</string>
+ <string name="fingerprint_dangling_notification_msg_all_deleted_2" msgid="6897989352716156176">"<xliff:g id="FINGERPRINT_0">%1$s</xliff:g> and <xliff:g id="FINGERPRINT_1">%2$s</xliff:g> weren\'t working well and were deleted. Set them up again to unlock your phone with your fingerprint."</string>
+ <string name="face_dangling_notification_title" msgid="947852541060975473">"Set up Face Unlock again"</string>
+ <string name="face_dangling_notification_msg" msgid="8806849376915541655">"Your face model wasn\'t working well and was deleted. Set it up again to unlock your phone with face."</string>
+ <string name="biometric_dangling_notification_action_set_up" msgid="8246885009807817961">"Set up"</string>
+ <string name="biometric_dangling_notification_action_not_now" msgid="8095249216864443491">"Not now"</string>
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index e551023..2ac1eaa 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Routine Mode info notification"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Battery Saver turned on"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reducing battery usage to extend battery life"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Battery Saver is on"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Battery Saver is turned on to extend battery life"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Battery Saver"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Battery Saver turned off"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Phone has enough charge. Features no longer restricted."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"How it works"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 6a4b193..6b383f4 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Routine Mode info notification"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Battery Saver turned on"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reducing battery usage to extend battery life"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Battery Saver is on"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Battery Saver is turned on to extend battery life"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Battery Saver"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Battery Saver turned off"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Phone has enough charge. Features no longer restricted."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"How it works"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 16ac895..bb18735 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Routine Mode info notification"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Battery Saver turned on"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reducing battery usage to extend battery life"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Battery Saver is on"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Battery Saver is turned on to extend battery life"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Battery Saver"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Battery Saver turned off"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Phone has enough charge. Features no longer restricted."</string>
@@ -2393,4 +2395,13 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"How it works"</string>
+ <string name="fingerprint_dangling_notification_title" msgid="7362075195588639989">"Set up Fingerprint Unlock again"</string>
+ <string name="fingerprint_dangling_notification_msg_1" msgid="6261149111900787302">"<xliff:g id="FINGERPRINT">%s</xliff:g> wasn\'t working well and was deleted to improve performance"</string>
+ <string name="fingerprint_dangling_notification_msg_2" msgid="7688302770424064884">"<xliff:g id="FINGERPRINT_0">%1$s</xliff:g> and <xliff:g id="FINGERPRINT_1">%2$s</xliff:g> weren\'t working well and were deleted to improve performance"</string>
+ <string name="fingerprint_dangling_notification_msg_all_deleted_1" msgid="2927018569542316055">"<xliff:g id="FINGERPRINT">%s</xliff:g> wasn\'t working well and was deleted. Set it up again to unlock your phone with fingerprint."</string>
+ <string name="fingerprint_dangling_notification_msg_all_deleted_2" msgid="6897989352716156176">"<xliff:g id="FINGERPRINT_0">%1$s</xliff:g> and <xliff:g id="FINGERPRINT_1">%2$s</xliff:g> weren\'t working well and were deleted. Set them up again to unlock your phone with your fingerprint."</string>
+ <string name="face_dangling_notification_title" msgid="947852541060975473">"Set up Face Unlock again"</string>
+ <string name="face_dangling_notification_msg" msgid="8806849376915541655">"Your face model wasn\'t working well and was deleted. Set it up again to unlock your phone with face."</string>
+ <string name="biometric_dangling_notification_action_set_up" msgid="8246885009807817961">"Set up"</string>
+ <string name="biometric_dangling_notification_action_not_now" msgid="8095249216864443491">"Not now"</string>
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index c5d1500..f759869 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificación de información del modo de Rutinas"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Ahorro de batería activado"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reduciendo el uso de la batería para extender su duración"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"El Ahorro de batería está activado"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Se activó el Ahorro de batería para extender la duración de batería"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Ahorro de batería"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Se desactivó el Ahorro de batería"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"El teléfono tiene suficiente carga. Ya no se restringen las funciones."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Puedes enviar y recibir mensajes incluso si no tienes conexión a una red móvil o Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir Mensajes"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cómo funciona"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 5d54feb..14d6b5c 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificación sobre el modo rutina"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Ahorro de batería activado"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reduciendo el uso de batería para prolongar su duración"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Ahorro de batería activado"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Se ha activado Ahorro de batería para prolongar la duración de la batería"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Ahorro de batería"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Ahorro de batería desactivado"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"El teléfono tiene suficiente batería. Las funciones ya no están restringidas."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Puedes enviar y recibir mensajes sin una red móvil o Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abre Mensajes"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cómo funciona"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 7b4b4ab..e3e6f55 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Rutiinirežiimi teabe märguanne"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Akusäästja lülitati sisse"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Aku tööea pikendamiseks vähendatakse akukasutust"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Akusäästja on sisse lülitatud"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Akusäästja on sisse lülitatud, et pikendada aku tööiga"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Akusäästja"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Akusäästja on välja lülitatud"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefon on piisavalt laetud. Funktsioonid ei ole enam piiratud."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Teil on võimalik sõnumeid saata ja vastu võtta ilma mobiilside- ja WiFi-võrguta"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Ava rakendus Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Tööpõhimõtted"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 58ef4f6..1644dfc 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Ohitura moduaren informazio-jakinarazpena"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Bateria-aurreztailea aktibatu da"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Bateria-erabilera murrizten hasi da haren iraupena luzatzeko"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Bateria-aurreztailea aktibatuta dago"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Bateria-aurreztailea aktibatuta dago, bateriaren iraupena luzatzeko"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Bateria-aurreztailea"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Desaktibatu egin da bateria-aurreztailea"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Behar adina bateria dauka telefonoak. Jada ez dago eginbiderik murriztuta."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mezuak bidal eta jaso ditzakezu sare mugikorrik edo wifi-sarerik gabe"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Ireki Mezuak"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Nola funtzionatzen du?"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index cce2b2c..05225ea 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"اعلان اطلاعات حالت روال معمول"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"«بهینهسازی باتری» روشن شد"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"برای افزایش عمر باتری، مصرف باتری کاهش مییابد"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"«بهینهسازی باتری» روشن است"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"«بهینهسازی باتری» برای افزایش عمر باتری روشن شد"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"بهینهسازی باتری"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"«بهینهسازی باتری» خاموش شد"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"تلفن بهاندازه کافی شارژ دارد. ویژگیها دیگر محدود نمیشوند."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"میتوانید بدون شبکه تلفن همراه یا Wi-Fi پیام ارسال و دریافت کنید"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"باز کردن «پیامها»"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"روش کار"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index ffd7572..8a39bc16 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Ohjelmatilan tietoilmoitus"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Virransäästö päällä"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Akun käyttöä rajoitetaan akunkeston pidentämiseksi"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Virransäästö on päällä"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Virransäästö on laitettu päälle akunkeston pidentämiseksi"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Virransäästö"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Virransäästö laitettiin pois päältä"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Puhelimessa on tarpeeksi virtaa. Ominaisuuksia ei enää rajoiteta."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Voit lähettää ja vastaanottaa viestejä ilman mobiili‑ tai Wi-Fi-verkkoa"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Avaa Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Näin se toimii"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 6e64c45..3a51809 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notification d\'information du mode Routine"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Économiseur de pile activé"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Réduction de l\'utilisation de la pile pour en prolonger l\'autonomie"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"La fonctionnalité Économiseur de pile est activée"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"La fonctionnalité Économiseur de pile est activée pour prolonger l\'autonomie de la pile"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Économiseur de pile"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Le mode Économiseur de pile est désactivé"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Le téléphone est suffisamment chargé. Ces fonctionnalités ne sont plus restreintes."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Vous pouvez envoyer et recevoir des messages sans avoir recours à un appareil mobile ou à un réseau Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Ouvrir Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Fonctionnement"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index ceb5c91..eda1eb9 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notification d\'information du mode Routine"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Économiseur de batterie activé"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Réduction de l\'utilisation de la batterie pour prolonger son autonomie"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Économiseur de batterie activé"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"L\'économiseur de batterie est activé pour prolonger l\'autonomie de la batterie"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Économiseur de batterie"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Économiseur de batterie désactivé"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Téléphone suffisamment chargé. Les fonctionnalités ne sont plus restreintes."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Vous pouvez envoyer et recevoir des messages sans connexion au réseau mobile ou Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Ouvrir Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Fonctionnement"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 49dddd6..5eca7f5 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificación da información do modo de rutina"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Activouse Aforro de batería"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Estase limitando o uso da batería para aumentar a súa duración"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"A función Aforro de batería está activada"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Activouse a función Aforro de batería para prolongar a duración"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Aforro de batería"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Desactivouse a función Aforro de batería."</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"O teléfono non ten suficiente batería. Xa non se restrinxirán as funcións."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Podes enviar e recibir mensaxes sen unha rede de telefonía móbil ou wifi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir Mensaxes"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Como funciona?"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 342e3a4..2de186d 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"રૂટિન મોડની માહિતીનું નોટિફિકેશન"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"બૅટરી સેવરની સુવિધા ચાલુ કરી છે"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"બૅટરીની આવરદા વધારવા માટે બૅટરીનો વપરાશ ઘટાડી રહ્યાં છીએ"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"બૅટરી સેવર ચાલુ છે"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"બૅટરીની આવરદા વધારવા માટે, બૅટરી સેવર ચાલુ કરવામાં આવ્યું છે"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"બૅટરી સેવર"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"બૅટરી સેવર બંધ કર્યું"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ફોનમાં પૂરતો ચાર્જ છે. સુવિધાઓ હવે મર્યાદિત નથી."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"તમે મોબાઇલ અથવા વાઇ-ફાઇ નેટવર્ક વિના મેસેજ મોકલી અને પ્રાપ્ત કરી શકો છો"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ખોલો"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"તેની કામ કરવાની રીત"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 2d60cd1..647e61f 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"रूटीन मोड जानकारी की सूचना"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"बैटरी सेवर चालू है"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"इससे बैटरी कम खर्च होती है और बैटरी लाइफ़ बढ़ती है"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"बैटरी सेवर चालू है"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"बैटरी लाइफ़ बढ़ाने के लिए बैटरी सेवर चालू किया गया है"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"बैटरी सेवर"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"बैटरी सेवर बंद कर दिया गया है"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"फ़ोन में काफ़ी बैटरी बची है. सुविधाओं पर अब पाबंदी नहीं है."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"मोबाइल या वाई-फ़ाई नेटवर्क के बिना भी मैसेज भेजे और पाए जा सकते हैं"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ऐप्लिकेशन खोलें"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"यह सेटिंग कैसे काम करती है"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 369f82b..1c3ace9 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Obavještavanje o informacijama u Rutinskom načinu rada"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Uključena je štednja baterije"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Smanjuje se potrošnja baterije radi produženja njezinog trajanja"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Štednja baterije je uključena"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Štednja baterije je uključena da bi se produljilo trajanje baterije"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Štednja baterije"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Isključena je Štednja baterije"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Baterija mobilnog telefona dovoljno je napunjena. Značajke više nisu ograničene."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Možete slati i primati poruke bez mobilne mreže ili Wi-Fi mreže"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvori Poruke"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Kako to funkcionira"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 6dcc87d..2f96c6f 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Információs értesítés a rutinmódról"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Akkumulátorkímélő mód bekapcsolva"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Akkuhasználat csökkentése a hosszabb akkumulátor-élettartam érdekében"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Akkumulátorkímélő mód bekapcsolva"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Az akkumulátor-üzemidő meghosszabbítása érdekében bekapcsolódott az Akkumulátorkímélő mód"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Akkumulátorkímélő mód"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Akkumulátorkímélő mód kikapcsolva"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"A telefon töltöttsége elegendő. A funkciók használata már nincs korlátozva."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Küldhet és fogadhat üzeneteket mobil- és Wi-Fi-hálózat nélkül is"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"A Messages megnyitása"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Hogyan működik?"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index c7ba38c..1477669 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Ծանուցում լիցքավորման մասին"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Մարտկոցի տնտեսումը միացվել է"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Մարտկոցի օգտագործումը նվազեցվել է դրա աշխատաժամանակը երկարացնելու համար"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Մարտկոցի տնտեսումը միացված է"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Մարտկոցի տնտեսումը միացվել է՝ մարտկոցի աշխատաժամանակը երկարացնելու համար"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Մարտկոցի տնտեսում"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Մարտկոցի տնտեսումն անջատված է"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Հեռախոսի լիցքը բավարար է։ Գործառույթներն այլևս չեն սահմանափակվում։"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Դուք կարող եք ուղարկել և ստանալ հաղորդագրություններ՝ առանց բջջային կամ Wi-Fi կապի"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Բացել Messages-ը"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Ինչպես է դա աշխատում"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index aa7d671..1c11b80 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -635,7 +635,7 @@
<string name="permdesc_mediaLocation" msgid="597912899423578138">"Mengizinkan aplikasi untuk membaca lokasi dari koleksi media Anda."</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 bahwa ini memang Anda"</string>
+ <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifikasi diri Anda"</string>
<string name="biometric_dialog_default_subtitle" msgid="8457232339298571992">"Gunakan biometrik untuk melanjutkan"</string>
<string name="biometric_or_screen_lock_dialog_default_subtitle" msgid="159539678371552009">"Gunakan biometrik atau kunci layar untuk melanjutkan"</string>
<string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"Hardware biometrik tidak tersedia"</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notifikasi info Mode Rutinitas"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Penghemat Baterai diaktifkan"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Mengurangi penggunaan baterai untuk memperpanjang masa pakai baterai"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Penghemat Baterai aktif"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Penghemat Baterai diaktifkan untuk memperpanjang daya tahan baterai"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Penghemat Baterai"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Penghemat Baterai dinonaktifkan"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Baterai ponsel cukup terisi. Fitur tidak lagi dibatasi."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Anda dapat mengirim dan menerima pesan tanpa jaringan seluler atau Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Buka Message"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cara kerjanya"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index c222600..934ab82 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Upplýsingatilkynning aðgerðastillingar"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Kveikt á rafhlöðusparnaði"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Dregur úr rafhlöðunotkun til að auka endingu rafhlöðunnar"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Kveikt er á rafhlöðusparnaði"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Kveikt er á rafhlöðusparnaði til að lengja rafhlöðuendingu"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Rafhlöðusparnaður"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Slökkt á rafhlöðusparnaði"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Síminn er með næga hleðslu. Eiginleikar eru ekki lengur takmarkaðir."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Þú getur sent og móttekið skilaboð án tengingar við farsímakerfi eða Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Opna Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Svona virkar þetta"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 7208c01..9aecf2a 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notifica di informazioni sulla modalità Routine"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Risparmio energetico attivato"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Riduzione dell\'utilizzo di batteria per estenderne la durata"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Risparmio energetico attivo"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Risparmio energetico è attivo per aumentare la durata della batteria"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Risparmio energetico"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Risparmio energetico disattivato"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Il telefono ha carica sufficiente. Funzionalità non più limitate."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Puoi inviare e ricevere messaggi senza una rete mobile o Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Apri Messaggi"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Come funziona"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 6213fdc..9ab3b76 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"התראת מידע לגבי מצב שגרתי"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"התכונה \'חיסכון בסוללה\' הופעלה"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"הפחתת השימוש בסוללה תאריך את חיי הסוללה"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"החיסכון בסוללה מופעל"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"מצב \'חיסכון בסוללה\' מופעל כדי להאריך את חיי הסוללה"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"חיסכון בסוללה"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"מצב \'חיסכון בסוללה\' כבוי"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"הטלפון טעון מספיק. התכונות כבר לא מוגבלות."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"אפשר לשלוח ולקבל הודעות ללא רשת סלולרית או רשת Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"לפתיחת Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"איך זה עובד"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 77a5a3c..a5c27ab 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ルーティン モード情報の通知"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"バッテリー セーバーが ON になりました"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"バッテリー使用量を減らし、バッテリー駆動時間を延ばします"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"バッテリー セーバーが ON になっています"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"バッテリーを長持ちさせるためにバッテリー セーバーが ON になっています"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"バッテリー セーバー"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"バッテリー セーバーが OFF になりました"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"スマートフォンが十分に充電されました。機能は制限されなくなりました。"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"モバイル ネットワークや Wi-Fi ネットワークを使わずにメッセージを送受信できます"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"メッセージ アプリを開く"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"仕組み"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 1255e95..5ecb271 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"რუტინის რეჟიმის საინფორმაციო შეტყობინება"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ბატარეის დამზოგველი ჩართულია"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ბატარეის მოხმარების შემცირება ბატარეის მუშაობის გახანგრძლივების მიზნით"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"ბატარეის დამზოგი ჩართულია"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"ბატარეის მუშაობის გასახანგრძლივებლად ჩართულია ბატარეის დამზოგი"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ბატარეის დამზოგი"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ბატარეის დამზოგი გამორთულია"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ტელეფონი საკმარისად არის დატენილი. ფუნქციები შეზღუდული აღარ არის."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"შეგიძლიათ გაგზავნოთ და მიიღოთ შეტყობინებები მობილური ან Wi-Fi ქსელის გარეშე"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages-ის გახსნა"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"მუშაობის პრინციპი"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 7f44e21..5d4e64a 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Режим туралы хабарландыру"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Батареяны үнемдеу режимі қосулы"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Батарея шығынын азайтсаңыз, батареяның жұмысы ұзарады."</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Батареяны үнемдеу режимі қосулы"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Батарея жұмысының ұзақтығын арттыру үшін батареяны үнемдеу режимі қосылған."</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Батареяны үнемдеу режимі"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Батареяны үнемдеу режимі өшірілді"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Телефонның заряды жеткілікті. Функцияларға енді шектеу қойылмайды."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Мобильдік не Wi-Fi желісіне қосылмастан хабар жібере аласыз және ала аласыз."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages қолданбасын ашу"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Бұл қалай орындалады?"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 2a89968..3c81f0c 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ការជូនដំណឹងព័ត៌មានរបស់មុខងារទម្លាប់"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"បានបើកមុខងារសន្សំថ្ម"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ការកាត់បន្ថយការប្រើប្រាស់ថ្ម ដើម្បីបង្កើនកម្រិតថាមពលថ្ម"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"មុខងារសន្សំថ្មត្រូវបានបើក"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"មុខងារសន្សំថ្មត្រូវបានបើក ដើម្បីបង្កើនកម្រិតថាមពលថ្ម"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"មុខងារសន្សំថ្ម"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"មុខងារសន្សំថ្មត្រូវបានបិទ"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ទូរសព្ទមានកម្រិតថ្មគ្រប់គ្រាន់។ មុខងារផ្សេងៗមិនត្រូវបានរឹតបន្តឹងទៀតទេ។"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"អ្នកអាចផ្ញើ និងទទួលសារដោយមិនប្រើបណ្តាញទូរសព្ទចល័ត ឬ Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"បើកកម្មវិធី Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"របៀបដែលវាដំណើរការ"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 4ffa40b..51a522a 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ದೈನಂದಿನ ಸ್ಥಿತಿಯ ಮಾಹಿತಿಯ ನೋಟಿಫಿಕೇಶನ್"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಅನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ವಿಸ್ತರಿಸಲು ಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಆನ್ ಆಗಿದೆ"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ವಿಸ್ತರಿಸಲು ಬ್ಯಾಟರಿ ಸೇವರ್ ಅನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ಬ್ಯಾಟರಿ ಸೇವರ್"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಅನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ಫೋನ್ನಲ್ಲಿ ಸಾಕಷ್ಟು ಚಾರ್ಜ್ ಇದೆ. ಇನ್ನು ಮುಂದೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುವುದಿಲ್ಲ."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ನೀವು ಮೊಬೈಲ್ ಅಥವಾ ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ ಇಲ್ಲದೆಯೇ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಬಹುದು ಮತ್ತು ಸ್ವೀಕರಿಸಬಹುದು"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ಅನ್ನು ತೆರೆಯಿರಿ"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index bbfef12..517e82c 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"루틴 모드 정보 알림"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"절전 모드 사용 설정됨"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"배터리 사용량을 줄여서 배터리 수명을 늘립니다."</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"절전 모드 사용 중"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"배터리 수명을 늘리기 위해 절전 모드가 사용 설정되었습니다"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"절전 모드"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"절전 모드가 사용 중지되었습니다"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"휴대전화의 배터리가 충분하므로 기능이 더 이상 제한되지 않습니다"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"모바일 또는 Wi-Fi 네트워크 없이 메시지를 주고 받을 수 있습니다"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"메시지 열기"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"작동 방식"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 6bde064..6ff0e19 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -1328,7 +1328,7 @@
<!-- no translation found for network_available_sign_in_detailed (7520423801613396556) -->
<skip />
<string name="wifi_no_internet" msgid="1386911698276448061">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> Интернетке туташуусу жок"</string>
- <string name="wifi_no_internet_detailed" msgid="634938444133558942">"Параметрлерди ачуу үчүн таптап коюңуз"</string>
+ <string name="wifi_no_internet_detailed" msgid="634938444133558942">"Параметрлерди ачуу үчүн тийип коюңуз"</string>
<string name="mobile_no_internet" msgid="4014455157529909781">"Мобилдик Интернет жок"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Тармактын Интернет жок"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Жеке DNS сервери жеткиликсиз"</string>
@@ -1390,7 +1390,7 @@
<string name="usb_midi_notification_title" msgid="7404506788950595557">"USB аркылуу MIDI режими күйгүзүлдү"</string>
<string name="usb_uvc_notification_title" msgid="2030032862673400008">"Түзмөк веб-камера катары туташты"</string>
<string name="usb_accessory_notification_title" msgid="1385394660861956980">"USB шайманы туташты"</string>
- <string name="usb_notification_message" msgid="4715163067192110676">"Кошумча параметрлерди ачуу үчүн таптап коюңуз."</string>
+ <string name="usb_notification_message" msgid="4715163067192110676">"Кошумча параметрлерди ачуу үчүн тийип коюңуз."</string>
<string name="usb_power_notification_message" msgid="7284765627437897702">"Туташкан түзмөк кубатталууда. Дагы параметрлерди көрүү үчүн таптап коюңуз."</string>
<string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Аналогдук аудио жабдуу табылды"</string>
<string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"Тиркелген түзмөк бул телефонго шайкеш келбейт. Көбүрөөк маалымат алуу үчүн таптап коюңуз."</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Режимдин адаттагы билдирмеси"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Батареяны үнөмдөгүч күйгүзүлдү"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Кубат үнөмдөлсө, батарея көбүрөөк убакытка жетет"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Батареяны үнөмдөгүч режими күйүк"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Батареянын кубатынын мөөнөтүн узартуу үчүн Батареяны үнөмдөгүч режими күйгүзүлдү"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Батареяны үнөмдөгүч"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Батареяны үнөмдөө режими өчүк"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Телефондун кубаты жетиштүү. Функциялар мындан ары чектелбейт."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Сиз мобилдик же Wi-Fi тармагы жок эле билдирүүлөрдү жөнөтүп, ала аласыз"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Жазышуулар колдонмосун ачуу"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Ал кантип иштейт"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 08bca75..d22f99a 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ການແຈ້ງເຕືອນຂໍ້ມູນໂໝດກິດຈະວັດປະຈຳວັນ"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ເປີດໃຊ້ຕົວປະຢັດແບັດເຕີຣີແລ້ວ"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ກຳລັງຫຼຸດການໃຊ້ແບັດເຕີຣີເພື່ອຍືດອາຍຸແບັດເຕີຣີ"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"ຕົວປະຢັດແບັດເຕີຣີເປີດຢູ່"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"ຕົວປະຢັດແບັດເຕີຣີເປີດຢູ່ເພື່ອຍືດອາຍຸແບັດເຕີຣີ"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ຕົວປະຢັດແບັດເຕີຣີ"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ປິດຕົວປະຢັດແບັດເຕີຣີແລ້ວ"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ໂທລະສັບມີໄຟພຽງພໍແລ້ວ. ບໍ່ມີການຈຳກັດຄຸນສົມບັດອີກຕໍ່ໄປແລ້ວ."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ທ່ານສາມາດສົ່ງ ແລະ ຮັບຂໍ້ຄວາມໂດຍບໍ່ຕ້ອງໃຊ້ເຄືອຂ່າຍມືຖື ຫຼື Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"ເປີດ Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ມັນເຮັດວຽກແນວໃດ"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index bd92890..9b72bc0 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -2137,6 +2137,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Veiksmų sekos režimo informacijos pranešimas"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Įjungta akumuliatoriaus tausojimo priemonė"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Sumažinamas akumuliatoriaus energijos vartojimas, kad akumuliatorius veiktų ilgiau"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Akumuliatoriaus tausojimo priemonė įjungta"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Akumuliatoriaus tausojimo priemonė įjungta, kad akumuliatorius veiktų ilgiau"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Akumuliatoriaus tausojimo priemonė"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Akumuliatoriaus tausojimo priemonė išjungta"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefonas pakankamai įkrautas. Funkcijos neberibojamos."</string>
@@ -2395,4 +2397,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Galite siųsti ir gauti pranešimus be mobiliojo ryšio ar „Wi-Fi“ tinklo"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Atidaryti programą „Messages“"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Kaip tai veikia"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index d32ef8d..13f77f7 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Informatīvs paziņojums par akumulatoru"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Ieslēgts akumulatora enerģijas taupīšanas režīms"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Tiek samazināts akumulatora lietojums, lai paildzinātu akumulatora darbību."</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Akumulatora enerģijas taupīšanas režīms ir ieslēgts"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Akumulatora enerģijas taupīšanas režīms ir ieslēgts, lai paildzinātu akumulatora darbību."</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Akumulatora enerģijas taupīšanas režīms"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Akumulatora enerģijas taupīšanas režīms ir izslēgts"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Tālruņa uzlādes līmenis ir pietiekams. Funkcijas vairs netiek ierobežotas."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Varat sūtīt un saņemt ziņojumus bez mobilā vai Wi-Fi tīkla."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Atvērt lietotni Ziņojumi"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Darbības principi"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index dc3d4dc..63ed58f 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Известување за информации за режимот за рутини"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"„Штедачот на батерија“ е вклучен"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Се намалува користењето на батеријата за нејзино подолго траење"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"„Штедачот на батерија“ е вклучен"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"„Штедачот на батерија“ е вклучен за да се продолжи траењето на батеријата"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Штедач на батерија"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Штедачот на батерија е исклучен"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Телефонот е доволно полн. Функциите веќе не се ограничени."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Може да испраќате и примате пораки без мобилна или Wi-Fi мрежа"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Отворете ја Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Дознајте како функционира"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index c1d9bc2a..d14529b 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ദിനചര്യ മോഡ് വിവരത്തെ കുറിച്ചുള്ള അറിയിപ്പ്"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ബാറ്ററി സേവർ ഓണാക്കി"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ബാറ്ററി ലൈഫ് വർദ്ധിപ്പിക്കാൻ ബാറ്ററി ഉപയോഗം കുറയ്ക്കുന്നു"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"ബാറ്ററി സേവർ ഓണാണ്"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"ബാറ്ററി ലൈഫ് വർദ്ധിപ്പിക്കാൻ ബാറ്ററി സേവർ ഓണാക്കിയിരിക്കുന്നു"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ബാറ്ററി ലാഭിക്കൽ"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ബാറ്ററി ലാഭിക്കൽ ഓഫാക്കിയിരിക്കുന്നു"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ഫോണിൽ വേണ്ടത്ര ചാർജ് ഉണ്ട്. ഫീച്ചറുകൾക്ക് ഇനി നിയന്ത്രണമില്ല."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"മൊബൈലോ വൈഫൈ നെറ്റ്വർക്കോ ഇല്ലാതെ തന്നെ സന്ദേശങ്ങൾ അയയ്ക്കാനും സ്വീകരിക്കാനും നിങ്ങൾക്ക് കഴിയും"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages തുറക്കുക"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ഇത് പ്രവർത്തിക്കുന്നത് എങ്ങനെയാണ്"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index 23201b1..1e20b5f 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -1756,7 +1756,7 @@
<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_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>-с гарч байна…"</string>
- <string name="owner_name" msgid="8713560351570795743">"Эзэмшигч"</string>
+ <string name="owner_name" msgid="8713560351570795743">"Өмчлөгч"</string>
<string name="guest_name" msgid="8502103277839834324">"Зочин"</string>
<string name="error_message_title" msgid="4082495589294631966">"Алдаа"</string>
<string name="error_message_change_not_allowed" msgid="843159705042381454">"Энэ өөрчлөлтийг админ зөвшөөрөөгүй байна"</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Хэвшлийн горимын мэдээллийн мэдэгдэл"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Батарей хэмнэгчийг асаасан"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Батарейн ажиллах хугацааг уртасгахын тулд батарей ашиглалтыг багасгаж байна"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Батарей хэмнэгч асаалттай байна"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Батарей хэмнэгчийг батарейн ажиллах хугацааг уртасгахын тулд асаасан"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Батарей хэмнэгч"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Батарей хэмнэгчийг унтраалаа"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Утас хангалттай цэнэгтэй боллоо. Онцлогуудыг цаашид хязгаарлахгүй."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Та мобайл эсвэл Wi-Fi сүлжээгүйгээр мессеж илгээх болон хүлээн авах боломжтой"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Мессежийг нээх"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Энэ хэрхэн ажилладаг вэ?"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 7e16081..7f3eb29 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"दिनक्रम मोडची माहिती सूचना"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"बॅटरी सेव्हर सुरू केला आहे"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"बॅटरी लाइफ वाढवण्यासाठी बॅटरी वापर कमी करा"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"बॅटरी सेव्हर सुरू आहे"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"बॅटरी लाइफ वाढवण्यासाठी बॅटरी सेव्हर सुरू केले आहे"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"बॅटरी सेव्हर"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"बॅटरी सेव्हर बंद केलेला आहे"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"फोन पुरेसा चार्ज केलेला आहे. वैशिष्ट्ये मर्यादित नाहीत."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"तुम्ही मोबाइल किंवा वाय-फाय नेटवर्कशिवाय मेसेज पाठवू आणि मिळवू शकता"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages उघडा"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ते कसे काम करते"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 749a2d76..d92fbec 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Pemberitahuan maklumat Mod Rutin"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Penjimat Bateri dihidupkan"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Mengurangkan penggunaan bateri untuk melanjutkan hayat bateri"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Penjimat Bateri dihidupkan"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Penjimat Bateri dihidupkan untuk melanjutkan hayat bateri"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Penjimat Bateri"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Penjimat Bateri dimatikan"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Cas telefon mencukupi. Ciri tidak lagi dihadkan."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Anda boleh menghantar dan menerima mesej tanpa rangkaian mudah alih atau Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Buka Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cara ciri ini berfungsi"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 012cd5b..700b1de 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -640,7 +640,7 @@
<string name="biometric_or_screen_lock_dialog_default_subtitle" msgid="159539678371552009">"ရှေ့ဆက်ရန် သင်၏ ဇီဝမက်ထရစ်အချက်အလက် (သို့) ဖန်သားပြင်လော့ခ်ကို သုံးပါ"</string>
<string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"ဇီဝအချက်အလက်သုံး ကွန်ပျူတာစက်ပစ္စည်း မရရှိနိုင်ပါ"</string>
<string name="biometric_error_user_canceled" msgid="6732303949695293730">"အထောက်အထားစိစစ်ခြင်းကို ပယ်ဖျက်လိုက်သည်"</string>
- <string name="biometric_not_recognized" msgid="5106687642694635888">"မသိ"</string>
+ <string name="biometric_not_recognized" msgid="5106687642694635888">"မသိပါ"</string>
<string name="biometric_face_not_recognized" msgid="5535599455744525200">"မျက်နှာကို မသိရှိပါ"</string>
<string name="biometric_error_canceled" msgid="8266582404844179778">"အထောက်အထားစိစစ်ခြင်းကို ပယ်ဖျက်လိုက်သည်"</string>
<string name="biometric_error_device_not_secured" msgid="3129845065043995924">"ပင်နံပါတ်၊ လော့ခ်ပုံစံ သို့မဟုတ် စကားဝှက် သတ်မှတ်မထားပါ"</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ပုံမှန်မုဒ်အတွက် အချက်အလက်ပြသည့် အကြောင်းကြားချက်"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ဘက်ထရီ အားထိန်း ဖွင့်ထားသည်"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ဘက်ထရီသက်တမ်း ပိုရှည်စေရန် ဘက်ထရီ အသုံးပြုမှု လျှော့ချခြင်း"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"‘ဘက်ထရီ အားထိန်း’ ဖွင့်ထားသည်"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"ဘက်ထရီ သက်တမ်းရှည်စေရန် ‘ဘက်ထရီ အားထိန်း’ ဖွင့်ထားသည်"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ဘက်ထရီ အားထိန်း"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ဘက်ထရီ အားထိန်းကို ပိတ်ထားသည်"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ဖုန်းတွင် ဘက်ထရီအား အလုံအလောက် ရှိသည်။ လုပ်ဆောင်ချက်များကို ကန့်သတ်မထားတော့ပါ။"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"မိုဘိုင်း (သို့) Wi-Fi ကွန်ရက်မရှိဘဲ မက်ဆေ့ဂျ်များကို ပို့နိုင်၊ လက်ခံနိုင်သည်"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ဖွင့်ရန်"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"အလုပ်လုပ်ပုံ"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 912fe70..7e6fd87 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Varsel med informasjon om rutinemodus"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Batterisparing er slått på"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reduserer batteribruken for å forlenge batterilevetiden"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Batterisparing er på"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Batterisparing er slått på for å forlenge batterilevetiden"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Batterisparing"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Batterisparing er slått av"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefonen har nok batteri. Funksjoner begrenses ikke lenger."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Du kan sende og motta meldinger uten mobil- eller wifi-nettverk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Åpne Meldinger"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Slik fungerer det"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index a21c87f..025678c 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -462,11 +462,11 @@
<string name="permdesc_broadcastSticky" product="tablet" msgid="5058486069846384013">"औपचारिक प्रसारणलाई पठाउनको लागि एउटा एपलाई अनुमति दिन्छ, जुन प्रसारण समाप्त भएपछि बाँकी रहन्छ। अत्यधिक प्रयोगले धेरै मेमोरी प्रयोग गरेको कारणले ट्याब्लेटलाई ढिलो र अस्थिर बनाउन सक्छ।"</string>
<string name="permdesc_broadcastSticky" product="tv" msgid="2338185920171000650">"एपलाई प्रसारण समाप्त भइसकेपछि पनि रहिरहने स्टिकी प्रसारणहरू पठाउने अनुमति दिन्छ। यो सुविधाको अत्यधिक प्रयोगले धेरै मेमोरी प्रयोग हुने भएकाले तपाईंको Android टिभी यन्त्र सुस्त वा अस्थिर हुन सक्छ।"</string>
<string name="permdesc_broadcastSticky" product="default" msgid="134529339678913453">"औपचारिक प्रसारणलाई पठाउनको लागि एक एपलाई अनुमति दिन्छ, जुन प्रसारण समाप्त भएपछि बाँकी रहन्छ। अत्यधिक प्रयोगले धेरै मेमोरी प्रयोग गरेको कारणले फोनलाई ढिलो र अस्थिर बनाउन सक्छ।"</string>
- <string name="permlab_readContacts" msgid="8776395111787429099">"तपाईँका सम्पर्कहरू पढ्नुहोस्"</string>
+ <string name="permlab_readContacts" msgid="8776395111787429099">"तपाईँका कन्ट्याक्टहरू पढ्नुहोस्"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6430093481659992692">"एपलाई तपाईंको ट्याब्लेटमा भण्डारण गरिएका कन्ट्याक्टहरूसँग सम्बन्धित डेटा पढ्ने अनुमति दिन्छ। एपहरूले कन्ट्याक्टहरू बनाउने तपाईंको ट्याब्लेटमा भण्डारण गरिएका खाताहरूमाथि पनि पहुँच प्राप्त गर्ने छन्। यसमा तपाईंले स्थापना गरेका एपहरूले बनाएका खाताहरू पर्न सक्छन्। यस अनुमतिले एपहरूलाई तपाईंको सम्पर्क ठेगानासम्बन्धी डेटा सेभ गर्न दिने भएकाले हानिकारक एपहरूले तपाईंलाई थाहै नदिइकन सम्पर्क ठेगानासम्बन्धी डेटा आदान प्रदान गर्न सक्छन्।"</string>
<string name="permdesc_readContacts" product="tv" msgid="8400138591135554789">"एपलाई तपाईंको Android टिभी डिभाइसमा भण्डारण गरिएका सम्पर्क ठेगानासम्बन्धी डेटा पढ्न अनुमति दिन्छ। एपहरूले कन्ट्याक्टहरू बनाउने तपाईंको Android टिभी डिभाइसमा भण्डारण गरिएका खाताहरूमाथि पनि पहुँच प्राप्त गर्ने छन्। यसमा तपाईंले स्थापना गरेका एपहरूले बनाएका खाताहरू पर्न सक्छन्। यस अनुमतिले एपहरूलाई तपाईंको सम्पर्क ठेगानासम्बन्धी डेटा सेभ गर्न दिने भएकाले हानिकारक एपहरूले तपाईंलाई थाहै नदिइकन सम्पर्क ठेगानासम्बन्धी डेटा आदान प्रदान गर्न सक्छन्।"</string>
<string name="permdesc_readContacts" product="default" msgid="4911989776203207644">"एपलाई तपाईंको फोनमा भण्डारण गरिएका कन्ट्याक्टहरूसँग सम्बन्धित डेटा पढ्ने अनुमति दिन्छ। एपहरूले कन्ट्याक्टहरू बनाउने तपाईंको फोनमा भण्डारण गरिएका खाताहरूमाथि पनि पहुँच प्राप्त गर्ने छन्। यसमा तपाईंले स्थापना गरेका एपहरूले बनाएका खाताहरू पर्न सक्छन्। यस अनुमतिले एपहरूलाई तपाईंको सम्पर्क ठेगानासम्बन्धी डेटा सेभ गर्न दिने भएकाले हानिकारक एपहरूले तपाईंलाई थाहै नदिइकन सम्पर्क ठेगानासम्बन्धी डेटा आदान प्रदान गर्न सक्छन्।"</string>
- <string name="permlab_writeContacts" msgid="8919430536404830430">"तपाईँका सम्पर्कहरू परिवर्तन गर्नुहोस्"</string>
+ <string name="permlab_writeContacts" msgid="8919430536404830430">"तपाईँका कन्ट्याक्टहरू परिवर्तन गर्नुहोस्"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="6422419281427826181">"एपलाई तपाईंको ट्याब्लेटमा भण्डारण गरिएका सम्पर्क ठेगानासम्बन्धी डेटा परिमार्जन गर्न अनुमति दिन्छ। यो अनुमतिले एपलाई सम्पर्क ठेगानासम्बन्धी डेटा मेटाउन अनुमति दिन्छ।"</string>
<string name="permdesc_writeContacts" product="tv" msgid="6488872735379978935">"एपलाई तपाईंको Android टिभी डिभाइसमा भण्डारण गरिएका सम्पर्क ठेगानासम्बन्धी डेटा परिमार्जन गर्न अनुमति दिन्छ। यो अनुमतिले एपलाई सम्पर्क ठेगानासम्बन्धी डेटा मेटाउन अनुमति दिन्छ।"</string>
<string name="permdesc_writeContacts" product="default" msgid="8304795696237065281">"एपलाई तपाईंको फोनमा भण्डारण गरिएका सम्पर्क ठेगानासम्बन्धी डेटा परिमार्जन गर्न अनुमति दिन्छ। यो अनुमतिले एपलाई सम्पर्क ठेगानासम्बन्धी डेटा मेटाउन अनुमति दिन्छ।"</string>
@@ -641,7 +641,7 @@
<string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"बायोमेट्रिक हार्डवेयर उपलब्ध छैन"</string>
<string name="biometric_error_user_canceled" msgid="6732303949695293730">"प्रमाणीकरण रद्द गरियो"</string>
<string name="biometric_not_recognized" msgid="5106687642694635888">"पहिचान भएन"</string>
- <string name="biometric_face_not_recognized" msgid="5535599455744525200">"अनुहार पहिचान गर्न सकिएन"</string>
+ <string name="biometric_face_not_recognized" msgid="5535599455744525200">"अनुहार मिलेन"</string>
<string name="biometric_error_canceled" msgid="8266582404844179778">"प्रमाणीकरण रद्द गरियो"</string>
<string name="biometric_error_device_not_secured" msgid="3129845065043995924">"कुनै पनि PIN, ढाँचा वा पासवर्ड सेट गरिएको छैन"</string>
<string name="biometric_error_generic" msgid="6784371929985434439">"प्रमाणित गर्ने क्रममा त्रुटि भयो"</string>
@@ -662,7 +662,7 @@
</string-array>
<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_dialog_use_fingerprint_instead" msgid="5590293588784953188">"अनुहार मिलेन। बरु फिंगरप्रिन्ट प्रयोग गर्नुहोस्।"</string>
<string name="fingerprint_authenticated" msgid="2024862866860283100">"फिंगरप्रिन्ट प्रमाणीकरण गरियो"</string>
<string name="face_authenticated_no_confirmation_required" msgid="8867889115112348167">"अनुहार प्रमाणीकरण गरियो"</string>
<string name="face_authenticated_confirmation_required" msgid="6872632732508013755">"अनुहार प्रमाणीकरण गरियो, कृपया पुष्टि गर्नुहोस् थिच्नुहोस्"</string>
@@ -712,7 +712,7 @@
<string name="face_acquired_not_detected" msgid="1057966913397548150">"तपाईंको अनुहार देखिएन। तपाईंको फोन आफ्नो आँखाअघि राखी समात्नुहोस्।"</string>
<string name="face_acquired_too_much_motion" msgid="8199691445085189528">"अत्यधिक हल्लियो। फोन स्थिर राख्नुहोस्।"</string>
<string name="face_acquired_recalibrate" msgid="8724013080976469746">"कृपया आफ्नो अनुहार पुनः दर्ता गर्नुहोस्।"</string>
- <string name="face_acquired_too_different" msgid="4505278456634706967">"अनुहार पहिचान गर्न सकिएन। फेरि प्रयास गर्नुहोस्।"</string>
+ <string name="face_acquired_too_different" msgid="4505278456634706967">"अनुहार मिलेन। फेरि प्रयास गर्नुहोस्।"</string>
<string name="face_acquired_too_similar" msgid="8882920552674125694">"आफ्नो टाउको थोरै यताउता सार्नुहोस्"</string>
<string name="face_acquired_pan_too_extreme" msgid="5417928604710621088">"आफ्नो फोनमा अझ सीधा हेर्नुहोस्"</string>
<string name="face_acquired_tilt_too_extreme" msgid="5715715666540716620">"आफ्नो फोनमा अझ सीधा हेर्नुहोस्"</string>
@@ -1501,7 +1501,7 @@
<string name="ime_action_previous" msgid="6548799326860401611">"अघिल्लो"</string>
<string name="ime_action_default" msgid="8265027027659800121">"चलाउनुहोस्"</string>
<string name="dial_number_using" msgid="6060769078933953531">\n"नम्बर डायल गर्नुहोस् <xliff:g id="NUMBER">%s</xliff:g> प्रयोग गरेर"</string>
- <string name="create_contact_using" msgid="6200708808003692594">"सम्पर्क सिर्जना गर्नुहोस्\nयो <xliff:g id="NUMBER">%s</xliff:g> प्रयोग गरेर"</string>
+ <string name="create_contact_using" msgid="6200708808003692594">"कन्ट्याक्ट हाल्नुहोस्\nयो <xliff:g id="NUMBER">%s</xliff:g> प्रयोग गरेर"</string>
<string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"निम्न एउटा वा धेरै एपहरूले तपाईँको खातामा पहुँचको लागि अनुमति अहिले र भविष्यमा अनुरोध गर्छन्।"</string>
<string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"के तपाईं यस अनुरोधलाई अनुमति दिन चाहनुहुन्छ?"</string>
<string name="grant_permissions_header_text" msgid="3420736827804657201">"अनुरोध पहुँच गर्नुहोस्"</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"दिनचर्या मोडको जानकारीमूलक सूचना"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ब्याट्री सेभर अन गरिएको छ"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ब्याट्रीको आयु बढाउन ब्याट्रीको खपत कम गरिँदै छ"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"ब्याट्री सेभर अन छ"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"ब्याट्रीको आयु बढाउन ब्याट्री सेभर अन गरिएको छ"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ब्याट्री सेभर"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ब्याट्री सेभर अफ गरियो"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"फोनमा पर्याप्त चार्ज छ। सुविधाहरूलाई अब उप्रान्त प्रतिबन्ध लगाइँदैन।"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"तपाईं मोबाइल वा Wi-Fi नेटवर्कविनै म्यासेज पठाउन र प्राप्त गर्न सक्नुहुन्छ"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages खोल्नुहोस्"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"यसले काम गर्ने तरिका"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 4dc837f..3ae86a8 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Informatiemelding voor routinemodus"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Batterijbesparing staat aan"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Het batterijgebruik wordt beperkt om de batterijduur te verlengen"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Batterijbesparing staat aan"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Batterijbesparing is aangezet om de batterijduur te verlengen"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Batterijbesparing"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Batterijbesparing staat uit"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefoon is voldoende opgeladen. Functies worden niet meer beperkt."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Je kunt berichten sturen en krijgen zonder een mobiel of wifi-netwerk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Berichten openen"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Hoe het werkt"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 0c57e8e..dce56dd 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ନିୟମିତ ମୋଡ୍ ସୂଚନା ବିଜ୍ଞପ୍ତି"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ବେଟେରୀ ସେଭର ଚାଲୁ କରାଯାଇଛି"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ବ୍ୟାଟେରୀ ଲାଇଫ ବଢ଼ାଇବା ପାଇଁ ବ୍ୟାଟେରୀ ବ୍ୟବହାର କମ୍ କରିବା"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"ବ୍ୟାଟେରୀ ସେଭର୍ ଚାଲୁ ଅଛି"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"ବେଟେରୀ ଲାଇଫକୁ ବଢ଼ାଇବା ପାଇଁ ବେଟେରୀ ସେଭରକୁ ଚାଲୁ କରାଯାଇଛି"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ବେଟେରୀ ସେଭର"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ବ୍ୟାଟେରୀ ସେଭର୍ ବନ୍ଦ ଅଛି"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ଫୋନରେ ଯଥେଷ୍ଟ ଚାର୍ଜ ଅଛି। ଫିଚରଗୁଡ଼ିକ ଆଉ ପ୍ରତିବନ୍ଧିତ ନୁହେଁ।"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ଏକ ମୋବାଇଲ କିମ୍ବା ୱାଇ-ଫାଇ ନେଟୱାର୍କ ବିନା ଆପଣ ମେସେଜ ପଠାଇପାରିବେ ଏବଂ ପାଇପାରିବେ"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ଖୋଲନ୍ତୁ"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ଏହା କିପରି କାମ କରେ"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 0a217e5..69668cc 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -313,7 +313,7 @@
<string name="managed_profile_app_label" msgid="367401088383965725">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਦੇ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ \'ਤੇ ਜਾਓ"</string>
<string name="permgrouplab_contacts" msgid="4254143639307316920">"ਸੰਪਰਕ"</string>
<string name="permgroupdesc_contacts" msgid="9163927941244182567">"ਆਪਣੇ ਸੰਪਰਕਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string>
- <string name="permgrouplab_location" msgid="1858277002233964394">"ਟਿਕਾਣਾ"</string>
+ <string name="permgrouplab_location" msgid="1858277002233964394">"ਟਿਕਾਣੇ ਦੀ ਜਾਣਕਾਰੀ"</string>
<string name="permgroupdesc_location" msgid="1995955142118450685">"ਇਸ ਡੀਵਾਈਸ ਦੇ ਨਿਰਧਾਰਤ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚੋ"</string>
<string name="permgrouplab_calendar" msgid="6426860926123033230">"ਕੈਲੰਡਰ"</string>
<string name="permgroupdesc_calendar" msgid="6762751063361489379">"ਤੁਹਾਡੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ਨਿਯਮਬੱਧ ਮੋਡ ਦੀ ਜਾਣਕਾਰੀ ਵਾਲੀ ਸੂਚਨਾ"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਹੈ"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ਬੈਟਰੀ ਲਾਈਫ਼ ਵਧਾਉਣ ਲਈ ਬੈਟਰੀ ਵਰਤੋਂ ਨੂੰ ਘਟਾਉਣਾ"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਹੈ"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"ਬੈਟਰੀ ਲਾਈਫ਼ ਵਧਾਉਣ ਲਈ ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਹੈ"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"ਬੈਟਰੀ ਸੇਵਰ"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ਬੈਟਰੀ ਸੇਵਰ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ਫ਼ੋਨ ਲੋੜੀਂਦਾ ਚਾਰਜ ਹੈ। ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਹੁਣ ਪ੍ਰਤਿਬੰਧਿਤ ਨਹੀਂ ਹਨ।"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ਤੁਸੀਂ ਮੋਬਾਈਲ ਜਾਂ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਤੋਂ ਬਿਨਾਂ ਸੁਨੇਹੇ ਭੇਜ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ਐਪ ਖੋਲ੍ਹੋ"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 1f951a4..f3c029e 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -2137,6 +2137,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Powiadomienie z informacją o trybie rutynowym"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Oszczędzanie baterii jest włączone"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Ograniczam wykorzystanie baterii, aby przedłużyć jej żywotność"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Oszczędzanie baterii jest włączone"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Oszczędzanie baterii jest włączone, aby wydłużyć jej żywotność"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Oszczędzanie baterii"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Oszczędzanie baterii zostało wyłączone"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefon jest wystarczająco naładowany. Funkcje nie są już ograniczone."</string>
@@ -2395,4 +2397,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Możesz wymieniać wiadomości bez dostępu do sieci komórkowej lub Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otwórz Wiadomości"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Jak to działa"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 6be6ebd..f909fd0 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificação de informação do modo rotina"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Economia de bateria ativada"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reduzindo o uso da bateria para prolongar a duração dela"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"A Economia de bateria está ativada"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"A Economia de bateria está ativada para prolongar a duração da carga"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Economia de bateria"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"\"Economia de bateria\" desativada"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Não há carga suficiente no smartphone. Os recursos não estão mais restritos."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Você pode enviar e receber mensagens sem um dispositivo móvel ou uma rede Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir o app Mensagens"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Como funciona"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index e0db5fb..703ec81 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1383,7 +1383,7 @@
<string name="no_permissions" msgid="5729199278862516390">"Não são necessárias permissões"</string>
<string name="perm_costs_money" msgid="749054595022779685">"isto poderá estar sujeito a custos"</string>
<string name="dlg_ok" msgid="5103447663504839312">"OK"</string>
- <string name="usb_charging_notification_title" msgid="1674124518282666955">"O dispositivo está a carregar por USB"</string>
+ <string name="usb_charging_notification_title" msgid="1674124518282666955">"O dispositivo está a ser carregado por USB"</string>
<string name="usb_supplying_notification_title" msgid="5378546632408101811">"A carregar o dispositivo ligado por USB"</string>
<string name="usb_mtp_notification_title" msgid="1065989144124499810">"A transferência de ficheiros por USB está ativada"</string>
<string name="usb_ptp_notification_title" msgid="5043437571863443281">"O PTP por USB está ativado"</string>
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificação de informações do Modo rotina"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Poupança de bateria ativada"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reduzir a utilização da bateria para prolongar a autonomia da mesma"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Poupança de bateria ativada"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"A Poupança de bateria está ativada para prolongar a autonomia da bateria"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Poupança de bateria"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"A Poupança de bateria está desativada"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"O telemóvel tem carga suficiente. As funcionalidades já não estão restritas."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Pode enviar e receber mensagens sem uma rede móvel ou Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abre a app Mensagens"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Como funciona"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 6be6ebd..f909fd0 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificação de informação do modo rotina"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Economia de bateria ativada"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reduzindo o uso da bateria para prolongar a duração dela"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"A Economia de bateria está ativada"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"A Economia de bateria está ativada para prolongar a duração da carga"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Economia de bateria"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"\"Economia de bateria\" desativada"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Não há carga suficiente no smartphone. Os recursos não estão mais restritos."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Você pode enviar e receber mensagens sem um dispositivo móvel ou uma rede Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir o app Mensagens"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Como funciona"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 8bfb9d9..0b0a007 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificare pentru informații despre modul Rutină"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Economisirea bateriei este activată"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Se reduce utilizarea bateriei pentru a-i extinde autonomia"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Economisirea bateriei este activată"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Economisirea bateriei este activată pentru a extinde autonomia"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Economisirea bateriei"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Economisirea bateriei a fost dezactivată"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefonul este încărcat suficient. Funcțiile nu mai sunt limitate."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Poți să trimiți și să primești mesaje fără o rețea mobilă sau Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Deschide Mesaje"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cum funcționează"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index fac2c9b..d927c6a 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -2137,6 +2137,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Уведомление о батарее"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Включен режим энергосбережения"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Экономия заряда продлит время работы от батареи."</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Включен режим энергосбережения"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Это нужно, чтобы продлить время работы от батареи."</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Режим энергосбережения"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Режим энергосбережения отключен"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Телефон заряжен достаточно. Функции больше не ограничены."</string>
@@ -2395,4 +2397,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Вы можете отправлять и получать сообщения без доступа к мобильной сети или Wi-Fi."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Открыть Сообщения"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Узнать принцип работы"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index f99f87e..2cdff40a 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"දිනචරියා ප්රකාර තතු දැනුම්දීම"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"බැටරි සුරැකුම ක්රියාත්මකයි"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"බැටරි ආයු කාලය දිගු කිරීම සඳහා බැටරි භාවිතය අඩු කිරීම"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"බැටරි සුරැකුම ක්රියාත්මකයි"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"බැටරි ආයු කාලය දීර්ඝ කිරීමට බැටරි සුරැකුම ක්රියාත්මක කර ඇත"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"බැටරි සුරැකුම"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"බැටරි සුරැකුම ක්රියාවිරහිත කර ඇත"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"දුරකථනයට ප්රමාණවත් ආරෝපණයක් තිබේ. විශේෂාංග තවදුරටත් සීමා කර නැත."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ඔබට ජංගම හෝ Wi-Fi ජාලයක් නොමැතිව පණිවිඩ යැවීමට සහ ලැබීමට හැක"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages විවෘත කරන්න"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"එය ක්රියා කරන ආකාරය"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index ae7eb39..c672139 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -2137,6 +2137,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Upozornenie s informáciami o rutinnom režime"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Bol zapnutý šetrič batérie"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Zníženie spotreby batérie predlžuje jej výdrž"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Šetrič batérie je zapnutý"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Šetrič batérie ja zapnutý, aby sa predĺžila výdrž batérie"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Šetrič batérie"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Šetrič batérie bol vypnutý."</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefón je dostatočne nabitý. Funkcie už nie sú obmedzené."</string>
@@ -2395,4 +2397,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Správy môžete odosielať a prijímať bez mobilnej siete či siete Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvoriť Správy"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Ako to funguje"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 2822a16..b5b6cc9 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -2137,6 +2137,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Rutinsko informativno obvestilo o načinu delovanja"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Varčevanje z energijo baterije je vklopljeno"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Manjša poraba energije baterije za podaljšanje časa delovanja baterije"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Varčevanje z energijo baterije je vklopljeno"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Varčevanje z energijo baterije je vklopljeno za podaljšanje časa delovanja pri baterijskem napajanju"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Varčevanje z energijo baterije"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Varčevanje z energijo baterije je izklopljeno"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Baterija v telefonu je dovolj napolnjena. Funkcije niso več omejene."</string>
@@ -2395,4 +2397,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Sporočila SMS lahko pošiljate in prejemate brez mobilnega omrežja ali omrežja Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Odpri Sporočila"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Kako deluje"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 341d7081..0057a43 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Njoftimi i informacionit të \"Modalitetit rutinë\""</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"\"Kursyesi i baterisë\" u aktivizua"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Po reduktohet përdorimi i baterisë për të rritur kohëzgjatjen e baterisë"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"\"Kursyesi i baterisë\" është aktiv"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"\"Kursyesi i baterisë\" është aktivizuar për të zgjatur kohëzgjatjen e baterisë"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Kursyesi i baterisë"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"\"Kursyesi i baterisë\" është çaktivizuar"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefoni ka nivel të mjaftueshëm baterie. Funksionet nuk janë më të kufizuara."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mund të dërgosh dhe të marrësh mesazhe pa një rrjet celular apo rrjet Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Hap \"Mesazhet\""</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Si funksionon"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 4c01e62..1efa08f 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -2136,6 +2136,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Обавештење о информацијама Рутинског режима"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Уштеда батерије је укључена"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Смањује се потрошња батерије да би се продужило њено трајање"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Уштеда батерије је укључена"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Уштеда батерије је укључена да би се продужило трајање батерије"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Уштеда батерије"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Уштеда батерије је искључена"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Батерија телефона је довољно напуњена. Функције више нису ограничене."</string>
@@ -2394,4 +2396,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Можете да шаљете и примате поруке без мобилне или WiFi мреже"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Отвори Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Принцип рада"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 1b9188c..dd449fb 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Avisering om rutinläge"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Batterisparläget har aktiverats"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Minskar batteriförbrukning för att förlänga batteritiden"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Batterisparläget är aktiverat"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Batterisparläget är aktiverat för att förlänga batteritiden"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Batterisparläge"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Batterisparläget har inaktiverats"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefonen har laddats tillräckligt. Funktioner begränsas inte längre."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Du kan skicka och ta emot meddelanden utan mobil- eller wifi-nätverk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Öppna Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Så fungerar det"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 612359a..9ebca96 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Arifa ya maelezo ya Hali ya Kawaida"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Kiokoa Betri kimewashwa"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Inapunguza matumizi ya betri ili kuongeza muda wa matumizi ya betri"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Kiokoa Betri kimewashwa"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Kiokoa Betri kimewashwa ili kuongeza muda wa matumizi ya betri"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Kiokoa betri"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Kiokoa Betri kimezimwa"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Simu ina chaji ya kutosha. Vipengele havizuiliwi tena."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Unaweza kutuma na kupokea ujumbe bila mtandao wa simu au Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Fungua Programu ya Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Utaratibu wake"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 5ab9c36..f3b5d66 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"வழக்கமான பேட்டரி சேமிப்பானுக்கான விவர அறிவிப்பு"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"பேட்டரி சேமிப்பு இயக்கப்பட்டுள்ளது"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"பேட்டரி ஆயுளை நீட்டிக்க, பேட்டரி உபயோகத்தைக் குறைக்கிறது"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"பேட்டரி சேமிப்பான் இயக்கத்தில் உள்ளது"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"பேட்டரி ஆயுளை நீட்டிக்க பேட்டரி சேமிப்பான் இயக்கப்பட்டது"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"பேட்டரி சேமிப்பு"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"பேட்டரி சேமிப்பான் ஆஃப் செய்யப்பட்டுள்ளது"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"மொபைலில் போதுமான சார்ஜ் உள்ளது. அம்சங்கள் இனி தடையின்றி இயங்கும்."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"மொபைல்/வைஃபை நெட்வொர்க் இல்லாமல் நீங்கள் மெசேஜ்களை அனுப்பலாம் பெறலாம்"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ஆப்ஸைத் திறக்கவும்"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"இது செயல்படும் விதம்"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 6be7ee3..fdebd14 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"రొటీన్ మోడ్ సమాచార నోటిఫికేషన్"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"బ్యాటరీ సేవర్ ఆన్ చేయబడింది"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"బ్యాటరీ జీవితకాలాన్ని పొడిగించడానికి బ్యాటరీ వినియోగాన్ని తగ్గించడం"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"బ్యాటరీ సేవర్ ఆన్లో ఉంది"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"బ్యాటరీ లైఫ్ను పొడిగించడానికి బ్యాటరీ సేవర్ ఆన్ చేయబడింది"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"బ్యాటరీ సేవర్"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"బ్యాటరీ సేవర్ ఆఫ్ చేయబడింది"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ఫోన్కు తగినంత ఛార్జింగ్ ఉంది. ఫీచర్లు ఇప్పటి నుండి పరిమితం చేయబడవు."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"మీరు మొబైల్ లేదా Wi-Fi నెట్వర్క్ లేకుండా మెసేజ్లను పంపవచ్చు, స్వీకరించవచ్చు"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messagesను తెరవండి"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ఇది ఎలా పని చేస్తుంది"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index f128e88..3574173 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1613,7 +1613,7 @@
<string name="data_usage_mobile_limit_snoozed_title" msgid="101888478915677895">"เกินปริมาณเน็ตมือถือที่กำหนดไว้"</string>
<string name="data_usage_wifi_limit_snoozed_title" msgid="1622359254521960508">"เกินขีดจำกัดของข้อมูล Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="545146591766765678">"คุณใช้อินเทอร์เน็ตเกินไป <xliff:g id="SIZE">%s</xliff:g> จากปริมาณที่กำหนดไว้"</string>
- <string name="data_usage_restricted_title" msgid="126711424380051268">"จำกัดอินเทอร์เน็ตที่ใช้งานอยู่เบื้องหลัง"</string>
+ <string name="data_usage_restricted_title" msgid="126711424380051268">"จำกัดข้อมูลในเบื้องหลัง"</string>
<string name="data_usage_restricted_body" msgid="5338694433686077733">"แตะเพื่อนำข้อจำกัดออก"</string>
<string name="data_usage_rapid_title" msgid="2950192123248740375">"ปริมาณการใช้เน็ตมือถือสูง"</string>
<string name="data_usage_rapid_body" msgid="3886676853263693432">"แอปของคุณใช้อินเทอร์เน็ตมากกว่าปกติ"</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"การแจ้งเตือนข้อมูลโหมดกิจวัตร"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"เปิดโหมดประหยัดแบตเตอรี่แล้ว"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"ลดการใช้งานแบตเตอรี่เพื่อยืดอายุการใช้งานแบตเตอรี่"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"โหมดประหยัดแบตเตอรี่เปิดอยู่"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"เปิดโหมดประหยัดแบตเตอรี่แล้วเพื่อยืดระยะเวลาการใช้งานแบตเตอรี่"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"โหมดประหยัดแบตเตอรี่"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ปิดโหมดประหยัดแบตเตอรี่แล้ว"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"โทรศัพท์มีแบตเตอรี่เพียงพอ ไม่มีการจำกัดฟีเจอร์แล้ว"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"คุณรับส่งข้อความผ่านดาวเทียมได้โดยไม่ต้องใช้เครือข่ายมือถือหรือ Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"เปิด Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"วิธีการทำงาน"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 4c40a84..5305892 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notification ng impormasyon ng Routine Mode"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Na-on ang Pantipid ng Baterya"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Binabawasan ang paggamit sa baterya para mapatagal ang baterya"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Naka-on ang Pantipid ng Baterya"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Naka-on ang Pantipid ng Baterya para mapahaba ang tagal ng baterya"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Pantipid ng Baterya"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Na-off ang Pantipid ng Baterya"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"May sapat na charge ang telepono. Hindi na pinaghihigpitan ang mga feature."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Puwede kang magpadala at tumanggap ng mga mensahe nang walang mobile o Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Buksan ang Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Paano ito gumagana"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index d7a17c1..cfdc947 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Rutin Modu bilgi bildirimi"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Pil Tasarrufu açıldı"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Pil ömrünü uzatmak için pil kullanımını azaltma"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Pil Tasarrufu açık"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Pil ömrünü uzatmak için Pil Tasarrufu özelliği açıldı"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Pil Tasarrufu"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Pil Tasarrufu kapatıldı"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefon yeterince şarj oldu. Özellikler artık kısıtlanmış değil."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mobil veya kablosuz ağa bağlı olmadan mesaj alıp gönderebilirsiniz"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Mesajlar\'ı aç"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"İşleyiş şekli"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index b5dc26a..b3b4f54 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -2137,6 +2137,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Сповіщення про програму"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Режим енергозбереження ввімкнено"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Заряд використовується економно, щоб подовжити час роботи акумулятора"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Режим енергозбереження ввімкнено"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Увімкнено режим енергозбереження, щоб збільшити час роботи акумулятора"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Режим енергозбереження"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Режим енергозбереження вимкнено."</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Телефон має достатньо заряду акумулятора. Функції вже не обмежено."</string>
@@ -2395,4 +2397,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Ви можете надсилати й отримувати повідомлення, не використовуючи Wi-Fi або мобільну мережу"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Відкрийте Повідомлення"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Як це працює"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 43365c7..ba71462 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -640,7 +640,7 @@
<string name="biometric_or_screen_lock_dialog_default_subtitle" msgid="159539678371552009">"جاری رکھنے کے لیے اپنے بایو میٹرک اور اسکرین لاک کا استعمال کریں"</string>
<string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"بایومیٹرک ہارڈ ویئر دستیاب نہیں ہے"</string>
<string name="biometric_error_user_canceled" msgid="6732303949695293730">"تصدیق کا عمل منسوخ ہو گیا"</string>
- <string name="biometric_not_recognized" msgid="5106687642694635888">"تسلیم شدہ نہیں ہے"</string>
+ <string name="biometric_not_recognized" msgid="5106687642694635888">"شناخت نہیں ہو سکی"</string>
<string name="biometric_face_not_recognized" msgid="5535599455744525200">"چہرے کی شناخت نہیں ہو سکی"</string>
<string name="biometric_error_canceled" msgid="8266582404844179778">"تصدیق کا عمل منسوخ ہو گیا"</string>
<string name="biometric_error_device_not_secured" msgid="3129845065043995924">"کوئی پن، پیٹرن، یا پاس ورڈ سیٹ نہیں ہے"</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"روٹین موڈ معلومات کی اطلاع"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"بیٹری سیور کو آن کیا گیا"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"بیٹری لائف کو بڑھانے کے لیے بیٹری کے استعمال کو کم کیا جا رہا ہے"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"بیٹری سیور آن ہے"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"بیٹری لائف کو بڑھانے کے لیے بیٹری سیور کو آن کر دیا گیا ہے"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"بیٹری سیور"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"بیٹری سیور کو آف کر دیا گیا"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"فون میں کافی چارج ہے۔ خصوصیات پر اب پابندی نہیں ہے۔"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"آپ موبائل یا Wi-Fi نیٹ ورک کے بغیر پیغامات بھیج اور موصول کر سکتے ہیں"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"پیغامات ایپ کو کھولیں"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"اس کے کام کرنے کا طریقہ"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 34d796b..87ec24e 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Kun tartibi rejimi haqidagi bildirishnoma"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Quvvat tejalishi yoqildi"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Batareya tejalganda batareya quvvati uzoqroq vaqtga yetadi"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Quvvat tejash rejimi yoniq"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Batareya quvvatini uzaytirish uchun Quvvat tejash yoqilgan"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Quvvat tejash"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Quvvat tejash rejimi faolsizlantirildi"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Telefon yetarli quvvatlandi. Funksiyalar endi cheklovlarsiz ishlaydi."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mobil yoki Wi-Fi tarmoqsiz xabarlarni yuborishingiz va qabul qilishingiz mumkin"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Xabarlar ilovasini ochish"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Ishlash tartibi"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 1c26d79..9f732eb 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -153,7 +153,7 @@
<string name="cfTemplateForwardedTime" msgid="735042369233323609">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> sau <xliff:g id="TIME_DELAY">{2}</xliff:g> giây"</string>
<string name="cfTemplateRegistered" msgid="5619930473441550596">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Không được chuyển tiếp"</string>
<string name="cfTemplateRegisteredTime" msgid="5222794399642525045">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Không được chuyển tiếp"</string>
- <string name="scCellularNetworkSecurityTitle" msgid="90330018476923559">"Chế độ bảo mật mạng di động"</string>
+ <string name="scCellularNetworkSecurityTitle" msgid="90330018476923559">"An ninh mạng di động"</string>
<string name="scCellularNetworkSecuritySummary" msgid="8659128412709908263">"Xem lại các chế độ cài đặt"</string>
<string name="scIdentifierDisclosureIssueTitle" msgid="3737384845335568193">"Đã truy cập vào mã nhận dạng thiết bị"</string>
<string name="scIdentifierDisclosureIssueSummary" msgid="3870743771498510600">"Một mạng trong kết nối <xliff:g id="DISCLOSURE_NETWORK">%4$s</xliff:g> đã ghi lại giá trị nhận dạng duy nhất (IMSI) của thiết bị <xliff:g id="DISCLOSURE_COUNT">%1$d</xliff:g> lần trong khoảng thời gian từ <xliff:g id="DISCLOSURE_WINDOW_START_TIME">%2$tr</xliff:g> đến <xliff:g id="DISCLOSURE_WINDOW_END_TIME">%3$tr</xliff:g>."</string>
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Thông báo cung cấp thông tin về chế độ sạc thông thường"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Đã bật Trình tiết kiệm pin"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Giảm mức sử dụng pin để kéo dài thời lượng pin"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Trình tiết kiệm pin đang bật"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Trình tiết kiệm pin được bật để kéo dài thời lượng pin"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Trình tiết kiệm pin"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Trình tiết kiệm pin đã tắt"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Điện thoại còn đủ pin. Các tính năng không bị hạn chế nữa."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Bạn có thể gửi và nhận tin nhắn mà không cần có mạng di động hoặc mạng Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Mở ứng dụng Tin nhắn"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cách hoạt động"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 2a98d8a..987b170 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"日常安排模式信息通知"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"省电模式已开启"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"降低电池用量以延长电池续航时间"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"省电模式已开启"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"已开启省电模式以延长电池续航时间"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"省电模式"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"省电模式已关闭"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"手机电量充足。各项功能不再受限。"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"您无需使用移动网络或 WLAN 网络便能收发消息"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"打开“信息”应用"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"运作方式"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 523f293..855020f 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"「日常安排模式」資料通知"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"已開啟「慳電模式」"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"減少用電可延長電池壽命"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"「慳電模式」已開啟"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"已開啟「慳電模式」,以延長電池壽命"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"慳電模式"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"已關閉慳電模式"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"手機電量充足。各項功能已不再受限。"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"你可在沒有流動/Wi-Fi 網絡的情況下收發訊息"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"開啟「訊息」"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"運作方式"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 2d3794b..38ff563 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"日常安排模式資訊通知"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"已開啟省電模式"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"降低電池用量,以便延長電池續航力"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"省電模式已開啟"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"已開啟省電模式,延長電池續航力"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"省電模式"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"省電模式已關閉"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"手機電力充足,各項功能不再受到限制。"</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"你可以收發訊息,沒有行動/Wi-Fi 網路也無妨"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"開啟「訊息」應用程式"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"運作方式"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index b6c2b9d1..258a3cdc 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -2135,6 +2135,8 @@
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Isaziso solwazi lwe-Routine Mode"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Isilondolozi Sebhethri sivuliwe"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Ukwehlisa ukusetshenziswa kwebhethri ukuze kunwetshiswe impilo yebhethri"</string>
+ <string name="dynamic_mode_notification_title_v2" msgid="5072385242078021152">"Isilondolozi sebhethri sivuliwe"</string>
+ <string name="dynamic_mode_notification_summary_v2" msgid="2142444344663147938">"Isilondolozi Sebhethri sivuliwe ukuze kunwetshwe impilo yebhethri"</string>
<string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Isilondolozi sebhethri"</string>
<string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Isilondolozi sebhethri sivaliwe"</string>
<string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Ifoni inokushajwa okwanele. Izici azisakhawulelwe."</string>
@@ -2393,4 +2395,22 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Ungathumela futhi wamukele imilayezo ngaphandle kwenethiwekhi yeselula noma ye-Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Vula Imilayezo"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Indlela esebenza ngayo"</string>
+ <!-- no translation found for fingerprint_dangling_notification_title (7362075195588639989) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_1 (6261149111900787302) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_2 (7688302770424064884) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_1 (2927018569542316055) -->
+ <skip />
+ <!-- no translation found for fingerprint_dangling_notification_msg_all_deleted_2 (6897989352716156176) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_title (947852541060975473) -->
+ <skip />
+ <!-- no translation found for face_dangling_notification_msg (8806849376915541655) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_set_up (8246885009807817961) -->
+ <skip />
+ <!-- no translation found for biometric_dangling_notification_action_not_now (8095249216864443491) -->
+ <skip />
</resources>
diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
index 4b561775..0465850 100644
--- a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
@@ -62,9 +62,9 @@
<string name="bubble_content_description_single" msgid="8495748092720065813">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
<string name="bubble_content_description_stack" msgid="8071515017164630429">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g> et <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> autres"</string>
<string name="bubble_accessibility_action_move_top_left" msgid="2644118920500782758">"Déplacer dans coin sup. gauche"</string>
- <string name="bubble_accessibility_action_move_top_right" msgid="5864594920870245525">"Déplacer dans coin sup. droit"</string>
- <string name="bubble_accessibility_action_move_bottom_left" msgid="850271002773745634">"Déplacer dans coin inf. gauche"</string>
- <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Déplacer dans coin inf. droit"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="5864594920870245525">"Déplacer en haut à droite"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="850271002773745634">"Déplacer en bas à gauche"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Déplacer en bas à droite"</string>
<string name="bubble_accessibility_announce_expand" msgid="5388792092888203776">"développer <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string>
<string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"réduire <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string>
<string name="bubbles_app_settings" msgid="3617224938701566416">"Paramètres <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml
index b2a0a49..c4014d3 100644
--- a/libs/WindowManager/Shell/res/values-ky/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ky/strings.xml
@@ -71,7 +71,7 @@
<string name="bubble_dismiss_text" msgid="8816558050659478158">"Калкып чыкма билдирмени жабуу"</string>
<string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Жазышууда калкып чыкма билдирмелер көрүнбөсүн"</string>
<string name="bubbles_user_education_title" msgid="2112319053732691899">"Калкып чыкма билдирмелер аркылуу маектешүү"</string>
- <string name="bubbles_user_education_description" msgid="4215862563054175407">"Жаңы жазышуулар калкыма сүрөтчөлөр же калкып чыкма билдирмелер түрүндө көрүнөт. Калкып чыкма билдирмелерди ачуу үчүн таптап коюңуз. Жылдыруу үчүн сүйрөңүз."</string>
+ <string name="bubbles_user_education_description" msgid="4215862563054175407">"Жаңы жазышуулар калкыма сүрөтчөлөр же калкып чыкма билдирмелер түрүндө көрүнөт. Калкып чыкма билдирмелерди ачуу үчүн тийип коюңуз. Жылдыруу үчүн сүйрөңүз."</string>
<string name="bubbles_user_education_manage_title" msgid="7042699946735628035">"Калкып чыкма билдирмелерди каалаган убакта көзөмөлдөңүз"</string>
<string name="bubbles_user_education_manage" msgid="3460756219946517198">"Бул колдонмодогу калкып чыкма билдирмелерди өчүрүү үчүн \"Башкарууну\" басыңыз"</string>
<string name="bubbles_user_education_got_it" msgid="3382046149225428296">"Түшүндүм"</string>
diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml
index ba5d283f..ee7fb5a 100644
--- a/libs/WindowManager/Shell/res/values-mn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mn/strings.xml
@@ -53,7 +53,7 @@
<string name="accessibility_split_top" msgid="2789329702027147146">"Дээд талд хуваах"</string>
<string name="accessibility_split_bottom" msgid="8694551025220868191">"Доод талд хуваах"</string>
<string name="one_handed_tutorial_title" msgid="4583241688067426350">"Нэг гарын горимыг ашиглаж байна"</string>
- <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Гарахын тулд дэлгэцийн доод хэсгээс дээш шударч эсвэл апп дээр хүссэн газраа товшино уу"</string>
+ <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Гарахын тулд дэлгэцийн доод хэсгээс дээш шударч эсвэл аппын дээр хүссэн газраа товшино уу"</string>
<string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Нэг гарын горимыг эхлүүлэх"</string>
<string name="accessibility_action_stop_one_handed" msgid="1369940261782179442">"Нэг гарын горимоос гарах"</string>
<string name="bubbles_settings_button_description" msgid="1301286017420516912">"<xliff:g id="APP_NAME">%1$s</xliff:g>-н бөмбөлгүүдийн тохиргоо"</string>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
index ecb53dc..59d6969 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
@@ -16,11 +16,11 @@
package com.android.wm.shell.draganddrop;
-import static android.app.StatusBarManager.DISABLE2_NONE;
import static android.app.StatusBarManager.DISABLE_NONE;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.content.pm.ActivityInfo.CONFIG_ASSETS_PATHS;
import static android.content.pm.ActivityInfo.CONFIG_UI_MODE;
+import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_FRAME;
import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION;
@@ -516,20 +516,18 @@
}
private void animateFullscreenContainer(boolean visible) {
- int flags = visible ? HIDE_STATUS_BAR_FLAGS : DISABLE_NONE;
- StatusBarManager.DisableInfo disableInfo = new StatusBarManager.DisableInfo(flags,
- DISABLE2_NONE);
- mStatusBarManager.requestDisabledComponent(disableInfo, "animateFullscreenContainer");
+ mStatusBarManager.disable(visible
+ ? HIDE_STATUS_BAR_FLAGS
+ : DISABLE_NONE);
// We're only using the first drop zone if there is one fullscreen target
mDropZoneView1.setShowingMargin(visible);
mDropZoneView1.setShowingHighlight(visible);
}
private void animateSplitContainers(boolean visible, Runnable animCompleteCallback) {
- int flags = visible ? HIDE_STATUS_BAR_FLAGS : DISABLE_NONE;
- StatusBarManager.DisableInfo disableInfo = new StatusBarManager.DisableInfo(flags,
- DISABLE2_NONE);
- mStatusBarManager.requestDisabledComponent(disableInfo, "animateSplitContainers");
+ mStatusBarManager.disable(visible
+ ? HIDE_STATUS_BAR_FLAGS
+ : DISABLE_NONE);
mDropZoneView1.setShowingMargin(visible);
mDropZoneView2.setShowingMargin(visible);
Animator animator = mDropZoneView1.getAnimator();
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 99133f7..422a2e0 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
@@ -425,7 +425,8 @@
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_TRANSITIONS,
"Converting mixed transition into a keyguard transition");
// Consume the original mixed transition
- onTransitionConsumed(transition, false, null);
+ mActiveTransitions.remove(mixed);
+ mixed.onTransitionConsumed(transition, false, null);
return true;
} else {
// Keyguard handler cannot handle it, process through original mixed
diff --git a/packages/CompanionDeviceManager/res/values-hu/strings.xml b/packages/CompanionDeviceManager/res/values-hu/strings.xml
index fc81399..55fc926 100644
--- a/packages/CompanionDeviceManager/res/values-hu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hu/strings.xml
@@ -49,7 +49,7 @@
<string name="vendor_header_button_description" msgid="7994879208461111473">"További információ"</string>
<string name="permission_phone" msgid="2661081078692784919">"Telefon"</string>
<string name="permission_sms" msgid="6337141296535774786">"SMS"</string>
- <string name="permission_contacts" msgid="3858319347208004438">"Címtár"</string>
+ <string name="permission_contacts" msgid="3858319347208004438">"Névjegyek"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Naptár"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Hívásnaplók"</string>
diff --git a/packages/CredentialManager/res/values-es-rUS/strings.xml b/packages/CredentialManager/res/values-es-rUS/strings.xml
index 0cbc449..be63dd7 100644
--- a/packages/CredentialManager/res/values-es-rUS/strings.xml
+++ b/packages/CredentialManager/res/values-es-rUS/strings.xml
@@ -90,7 +90,7 @@
<string name="no_sign_in_info_in" msgid="2641118151920288356">"No hay información de acceso en <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
<string name="get_dialog_heading_manage_sign_ins" msgid="3522556476480676782">"Administrar accesos"</string>
<string name="get_dialog_heading_from_another_device" msgid="1166697017046724072">"Desde otro dispositivo"</string>
- <string name="get_dialog_option_headline_use_a_different_device" msgid="8201578814988047549">"Usar otra voz"</string>
+ <string name="get_dialog_option_headline_use_a_different_device" msgid="8201578814988047549">"Usar otro dispositivo"</string>
<string name="request_cancelled_by" msgid="3735222326886267820">"<xliff:g id="APP_NAME">%1$s</xliff:g> canceló la solicitud"</string>
<string name="dropdown_presentation_more_sign_in_options_text" msgid="1693727354272417902">"Opciones de acceso"</string>
<string name="more_options_content_description" msgid="1323427365788198808">"Más"</string>
diff --git a/packages/CredentialManager/res/values-or/strings.xml b/packages/CredentialManager/res/values-or/strings.xml
index 46744b5..dc6a241 100644
--- a/packages/CredentialManager/res/values-or/strings.xml
+++ b/packages/CredentialManager/res/values-or/strings.xml
@@ -57,9 +57,9 @@
<string name="set_as_default" msgid="4415328591568654603">"ଡିଫଲ୍ଟ ଭାବେ ସେଟ କରନ୍ତୁ"</string>
<string name="settings" msgid="6536394145760913145">"ସେଟିଂସ"</string>
<string name="use_once" msgid="9027366575315399714">"ଥରେ ବ୍ୟବହାର କରନ୍ତୁ"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>ଟି ପାସୱାର୍ଡ • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>ଟି ପାସକୀ"</string>
- <string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>ଟି ପାସୱାର୍ଡ"</string>
- <string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>ଟି ପାସକୀ"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ପାସୱାର୍ଡ • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ପାସକୀ"</string>
+ <string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ପାସୱାର୍ଡ"</string>
+ <string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> ପାସକୀ"</string>
<string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>ଟି କ୍ରେଡେନସିଆଲ"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"ପାସକୀ"</string>
<string name="another_device" msgid="5147276802037801217">"ଅନ୍ୟ ଏକ ଡିଭାଇସ"</string>
diff --git a/packages/CredentialManager/res/values-zh-rHK/strings.xml b/packages/CredentialManager/res/values-zh-rHK/strings.xml
index 8f69643..b419dee6 100644
--- a/packages/CredentialManager/res/values-zh-rHK/strings.xml
+++ b/packages/CredentialManager/res/values-zh-rHK/strings.xml
@@ -73,7 +73,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="790049858275131785">"要以此登入方式使用「<xliff:g id="APP_NAME">%1$s</xliff:g>」嗎?"</string>
<string name="get_dialog_title_unlock_options_for" msgid="7605568190597632433">"要解鎖「<xliff:g id="APP_NAME">%1$s</xliff:g>」的登入選項嗎?"</string>
<string name="get_dialog_title_choose_passkey_for" msgid="9175997688078538490">"選擇已儲存的「<xliff:g id="APP_NAME">%1$s</xliff:g>」密鑰"</string>
- <string name="get_dialog_title_choose_password_for" msgid="1724435823820819221">"選擇已儲存的「<xliff:g id="APP_NAME">%1$s</xliff:g>」密碼"</string>
+ <string name="get_dialog_title_choose_password_for" msgid="1724435823820819221">"選擇「<xliff:g id="APP_NAME">%1$s</xliff:g>」的儲存密碼"</string>
<string name="get_dialog_title_choose_saved_sign_in_for" msgid="2420298653461652728">"選擇已儲存的「<xliff:g id="APP_NAME">%1$s</xliff:g>」登入資料"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="3048870756117876514">"選擇用於「<xliff:g id="APP_NAME">%1$s</xliff:g>」的登入方式"</string>
<string name="get_dialog_title_choose_option_for" msgid="4976380044745029107">"要選擇適用於「<xliff:g id="APP_NAME">%1$s</xliff:g>」的項目嗎?"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index e2be360..736da01 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -111,7 +111,7 @@
<string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferencia de archivos"</string>
<string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string>
<string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acceso a Internet"</string>
- <string name="bluetooth_profile_pbap" msgid="2103406516858653017">"Acceso a contactos e historial de llamadas"</string>
+ <string name="bluetooth_profile_pbap" msgid="2103406516858653017">"Acceso a historial de llamadas y contactos"</string>
<string name="bluetooth_profile_pbap_summary" msgid="402819589201138227">"Se usará la información para anuncios de llamadas y más"</string>
<string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartir conexión a Internet"</string>
<string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensajes de texto"</string>
@@ -267,7 +267,7 @@
<string name="keep_screen_on_summary" msgid="1510731514101925829">"La pantalla nunca quedará inactiva mientras el dispositivo se esté cargando"</string>
<string name="bt_hci_snoop_log" msgid="7291287955649081448">"Registro de Bluetooth HCI"</string>
<string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Capturar paquetes de Bluetooth (activa/desactiva el Bluetooth después de cambiar esta configuración)"</string>
- <string name="oem_unlock_enable" msgid="5334869171871566731">"Desbloqueo de OEM"</string>
+ <string name="oem_unlock_enable" msgid="5334869171871566731">"Desbloqueo para OEM"</string>
<string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Permitir que el cargador de inicio se desbloquee"</string>
<string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"¿Permitir desbloqueo de OEM?"</string>
<string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ADVERTENCIA: Las funciones de protección de dispositivos no funcionarán en este dispositivo mientras esta configuración esté activada."</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index 9d1ee22..673bfd0 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -280,7 +280,7 @@
<string name="wifi_scan_throttling" msgid="2985624788509913617">"Wifi-sareen bilaketaren moteltzea"</string>
<string name="wifi_non_persistent_mac_randomization" msgid="7482769677894247316">"Wifi-konexioetan iraunkorrak ez diren MAC helbideak ausaz antolatzea"</string>
<string name="mobile_data_always_on" msgid="8275958101875563572">"Datu-konexioa beti aktibo"</string>
- <string name="tethering_hardware_offload" msgid="4116053719006939161">"Konexioa partekatzeko hardwarearen azelerazioa"</string>
+ <string name="tethering_hardware_offload" msgid="4116053719006939161">"Konexioa partekatzeko hardwarearen bizkortzea"</string>
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Erakutsi Bluetooth bidezko gailuak izenik gabe"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Desgaitu bolumen absolutua"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gaitu Gabeldorsche"</string>
@@ -325,7 +325,7 @@
<string name="allow_mock_location_summary" msgid="179780881081354579">"Onartu kokapen faltsuak"</string>
<string name="debug_view_attributes" msgid="3539609843984208216">"Gaitu ikuspegiaren atributuak ikuskatzeko aukera"</string>
<string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Mantendu datu-konexioa beti aktibo, baita wifi-konexioa aktibo dagoenean ere (sare batetik bestera bizkor aldatu ahal izateko)."</string>
- <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Erabilgarri badago, erabili konexioa partekatzeko hardwarearen azelerazioa"</string>
+ <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Erabilgarri badago, erabili konexioa partekatzeko hardwarearen bizkortzea"</string>
<string name="adb_warning_title" msgid="7708653449506485728">"USB bidezko arazketa onartu?"</string>
<string name="adb_warning_message" msgid="8145270656419669221">"USB bidezko arazketa garapen-xedeetarako soilik dago diseinatuta. Erabil ezazu ordenagailuaren eta gailuaren artean datuak kopiatzeko, aplikazioak gailuan jakinarazi gabe instalatzeko eta erregistro-datuak irakurtzeko."</string>
<string name="adbwifi_warning_title" msgid="727104571653031865">"Hari gabeko arazketa baimendu nahi duzu?"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index ae6859c..e73adf9 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -112,7 +112,7 @@
<string name="bluetooth_profile_hid" msgid="2969922922664315866">"इनपुट डिवाइस"</string>
<string name="bluetooth_profile_pan" msgid="1006235139308318188">"इंटरनेट का ऐक्सेस"</string>
<string name="bluetooth_profile_pbap" msgid="2103406516858653017">"संपर्क और कॉल इतिहास का ऐक्सेस दें"</string>
- <string name="bluetooth_profile_pbap_summary" msgid="402819589201138227">"इस जानकारी का इस्तेमाल, कॉल की सूचना देने और दूसरी चीज़ों के लिए किया जाएगा"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="402819589201138227">"इस जानकारी का इस्तेमाल, कॉल की सूचना देने वगैरह के लिए किया जाएगा"</string>
<string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"इंटरनेट कनेक्शन साझाकरण"</string>
<string name="bluetooth_profile_map" msgid="8907204701162107271">"लेख संदेश"</string>
<string name="bluetooth_profile_sap" msgid="8304170950447934386">"सिम का ऐक्सेस"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index 729a5df..cf52c82 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -145,7 +145,7 @@
<string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Չեղարկել"</string>
<string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Զուգակցում է մուտքի թույլտվությունը դեպի ձեր կոնտակտները և զանգերի պատմությունը, երբ միացված է:"</string>
<string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Չհաջողվեց զուգակցել <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ:"</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Չհաջողվեց զուգակցել <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ սխալ PIN-ի կամ անցաբառի պատճառով:"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Չհաջողվեց զուգակցել <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ՝ սխալ PIN-ի կամ անցաբառի պատճառով:"</string>
<string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Հնարավոր չէ կապ հաստատել <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ:"</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Զուգավորումը մերժվեց <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի կողմից:"</string>
<string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Համակարգիչ"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index ba7dbab..39ce45a 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -145,7 +145,7 @@
<string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Откажи"</string>
<string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Кога е поврзано, спарувањето одобрува пристап до контактите и историјата на повиците."</string>
<string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Не може да се спари со <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Не може да се спари со <xliff:g id="DEVICE_NAME">%1$s</xliff:g> поради погрешен PIN или лозинка."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Не може да се спари со <xliff:g id="DEVICE_NAME">%1$s</xliff:g> поради погрешен PIN или криптографски клуч."</string>
<string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Не може да комуницира со <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Спарувањето е одбиено од <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Компјутер"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index dfe68a1..89681e3 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -143,7 +143,7 @@
<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>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"जब जडान हुन्छ जोडी अनुदानले तपाईँको कन्ट्याक्टहरू पहुँच गर्छ र इतिहास सम्झाउँछ।"</string>
<string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>सँग जोडा मिलाउन सकेन"</string>
<string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"गलत PIN वा पासकीका कारणले <xliff:g id="DEVICE_NAME">%1$s</xliff:g> मा कनेक्ट गर्न सकिएन।"</string>
<string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग कुराकानी हुन सक्दैन।"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index e75ecfc..cc9c164 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -145,7 +145,7 @@
<string name="bluetooth_pairing_decline" msgid="6483118841204885890">"منسوخ کریں"</string>
<string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"منسلک ہونے پر جوڑا بنانے سے آپ کے رابطوں اور کال کی سرگزشت تک رسائی حاصل ہو جاتی ہے۔"</string>
<string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> کے ساتھ جوڑا نہیں بنا سکا۔"</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"غلط PIN یا پاس کلید کی وجہ سے <xliff:g id="DEVICE_NAME">%1$s</xliff:g> کے ساتھ جوڑا نہیں بنا سکا۔"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"غلط PIN یا پاس کلید کی وجہ سے <xliff:g id="DEVICE_NAME">%1$s</xliff:g> کے ساتھ جوڑا نہیں بنایا جا سکا۔"</string>
<string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> کے ساتھ مواصلت نہیں ہو سکتی۔"</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> نے جوڑا بنانے کو مسترد کر دیا۔"</string>
<string name="bluetooth_talkback_computer" msgid="3736623135703893773">"کمپیوٹر"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index ff964ae..6de7d50 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -699,9 +699,9 @@
<string name="physical_keyboard_title" msgid="4811935435315835220">"实体键盘"</string>
<string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"选择键盘布局"</string>
<string name="keyboard_layout_default_label" msgid="1997292217218546957">"默认"</string>
- <string name="turn_screen_on_title" msgid="3266937298097573424">"开启屏幕"</string>
+ <string name="turn_screen_on_title" msgid="3266937298097573424">"唤醒屏幕"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"允许开启屏幕"</string>
- <string name="allow_turn_screen_on_description" msgid="43834403291575164">"允许应用开启屏幕。如获授权,该应用便可在您未明确表达意愿的情况下随时开启屏幕。"</string>
+ <string name="allow_turn_screen_on_description" msgid="43834403291575164">"允许应用唤醒屏幕。如获授权,该应用便可在您未明确表达意愿的情况下随时唤醒屏幕。"</string>
<string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"要停止广播“<xliff:g id="APP_NAME">%1$s</xliff:g>”的内容吗?"</string>
<string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"如果广播“<xliff:g id="SWITCHAPP">%1$s</xliff:g>”的内容或更改输出来源,当前的广播就会停止"</string>
<string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"广播“<xliff:g id="SWITCHAPP">%1$s</xliff:g>”的内容"</string>
diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml
index fad222d..c4c094b 100644
--- a/packages/SystemUI/res-keyguard/values-hr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml
@@ -61,7 +61,7 @@
<string name="bouncer_face_not_recognized" msgid="1666128054475597485">"Lice nije prepoznato"</string>
<string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Pokušajte ponovno ili unesite PIN"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Pokušajte ponovno ili unesite zaporku"</string>
- <string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Pokušajte ponovno ili izradite uzorak"</string>
+ <string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Pokušajte ponovno ili nacrtajte uzorak"</string>
<string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"PIN je obavezan nakon previše pokušaja"</string>
<string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Zaporka je obavezna nakon previše pokušaja"</string>
<string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Uzorak je obavezan nakon previše pokušaja"</string>
diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml
index 8ec55e0..f8dba6d 100644
--- a/packages/SystemUI/res-keyguard/values-my/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-my/strings.xml
@@ -113,7 +113,7 @@
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ထပ်ဆောင်းလုံခြုံရေးအတွက် ၎င်းအစား စကားဝှက်သုံးပါ"</string>
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"စက်ပစ္စည်းကို စီမံခန့်ခွဲသူက လော့ခ်ချထားပါသည်"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"စက်ပစ္စည်းကို ကိုယ်တိုင်ကိုယ်ကျ လော့ခ်ချထားခဲ့သည်"</string>
- <string name="kg_face_not_recognized" msgid="7903950626744419160">"မသိ"</string>
+ <string name="kg_face_not_recognized" msgid="7903950626744419160">"မသိပါ"</string>
<string name="kg_face_sensor_privacy_enabled" msgid="939511161763558512">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ သုံးရန် ‘ဆက်တင်များ’ တွင်ကင်မရာသုံးခွင့်ကိုဖွင့်ပါ"</string>
<string name="kg_password_default_pin_message" msgid="1434544655827987873">"{count,plural, =1{ဆင်းမ်ပင်နံပါတ် ထည့်သွင်းပါ။ သင့်စက်ကို လော့ခ်ဖွင့်ရန် မိုဘိုင်းဖုန်းကုမ္ပဏီသို့ မဆက်သွယ်မီ # ကြိမ် ကြိုးစားခွင့်ရှိသေးသည်။}other{ဆင်းမ်ပင်နံပါတ် ထည့်သွင်းပါ။ သင့်တွင် # ကြိမ် ကြိုးစားခွင့်ရှိသေးသည်။}}"</string>
<string name="kg_password_default_puk_message" msgid="1025139786449741950">"{count,plural, =1{ဆင်းမ်ကတ်သည် ယခု ပိတ်သွားပါပြီ။ ရှေ့ဆက်ရန် PUK ကုဒ်ကို ထည့်ပါ။ ဆင်းမ်ကတ် အပြီးပိတ်မသွားမီ သင့်တွင် # ကြိမ် ကြိုးစားခွင့်ရှိသေးသည်။ အသေးစိတ်အတွက် မိုဘိုင်းဖုန်းကုမ္ပဏီကို ဆက်သွယ်ပါ။}other{ဆင်းမ်ကတ်သည် ယခု ပိတ်သွားပါပြီ။ ရှေ့ဆက်ရန် PUK ကုဒ်ကို ထည့်ပါ။ ဆင်းမ်ကတ် အပြီးပိတ်မသွားမီ သင့်တွင် # ကြိမ် ကြိုးစားခွင့်ရှိသေးသည်။ အသေးစိတ်အတွက် မိုဘိုင်းဖုန်းကုမ္ပဏီကို ဆက်သွယ်ပါ။}}"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml
index ebf46355..6f5fb8b 100644
--- a/packages/SystemUI/res-keyguard/values-ne/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml
@@ -58,7 +58,7 @@
<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="bouncer_face_not_recognized" msgid="1666128054475597485">"अनुहार पहिचान गर्न सकिएन"</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>
diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml
index cf3616e..18e1eb2 100644
--- a/packages/SystemUI/res-keyguard/values-sk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml
@@ -57,7 +57,7 @@
<string name="kg_wrong_pin" msgid="4160978845968732624">"Nesprávny kód PIN"</string>
<string name="kg_wrong_pin_try_again" msgid="3129729383303430190">"Nesprávny kód PIN. Zopakujte."</string>
<string name="kg_wrong_input_try_fp_suggestion" msgid="3143861542242024833">"Alebo odomknite odtlačkom prsta"</string>
- <string name="kg_fp_not_recognized" msgid="5183108260932029241">"Nerozpoz. odtlačok prsta"</string>
+ <string name="kg_fp_not_recognized" msgid="5183108260932029241">"Odtlačok prsta nebol rozpoznaný"</string>
<string name="bouncer_face_not_recognized" msgid="1666128054475597485">"Tvár nebola rozpoznaná"</string>
<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>
diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml
index 05ac0c0..35f24bb 100644
--- a/packages/SystemUI/res-keyguard/values-ta/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml
@@ -57,7 +57,7 @@
<string name="kg_wrong_pin" msgid="4160978845968732624">"தவறான பின்"</string>
<string name="kg_wrong_pin_try_again" msgid="3129729383303430190">"தவறு. மீண்டும் முயலவும்."</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">"மீண்டும் முயலவும் அல்லது பின்னை உள்ளிடவும்"</string>
<string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"மீண்டும் முயலவும் அல்லது கடவுச்சொல்லை உள்ளிடவும்"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml
index e466807..ab0b854 100644
--- a/packages/SystemUI/res-keyguard/values-ur/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml
@@ -113,7 +113,7 @@
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"اضافی سیکیورٹی کے لئے، اس کے بجائے پاس ورڈ استعمال کریں"</string>
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"آلہ منتظم کی جانب سے مقفل ہے"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"آلہ کو دستی طور پر مقفل کیا گیا تھا"</string>
- <string name="kg_face_not_recognized" msgid="7903950626744419160">"تسلیم شدہ نہیں ہے"</string>
+ <string name="kg_face_not_recognized" msgid="7903950626744419160">"شناخت نہیں ہو سکی"</string>
<string name="kg_face_sensor_privacy_enabled" msgid="939511161763558512">"فیس اَنلاک استعمال کرنے کیلئے، ترتیبات میں کیمرا تک رسائی کو آن کریں"</string>
<string name="kg_password_default_pin_message" msgid="1434544655827987873">"{count,plural, =1{SIM کا PIN درج کریں۔ اس سے پہلے کہ آپ اپنا آلہ غیر مقفل کرنے کیلئے لازمی طور پر اپنے کیریئر سے رابطہ کریں آپ کے پاس # کوشش بچی ہے۔}other{SIM کا PIN درج کریں۔ آپ کے پاس # کوششیں بچی ہیں۔}}"</string>
<string name="kg_password_default_puk_message" msgid="1025139786449741950">"{count,plural, =1{SIM اب غیر فعال ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ SIM کے مستقل طور پر ناقابل استعمال ہونے سے پہلے آپ کے پاس # کوشش بچی ہے۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔}other{SIM اب غیر فعال ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ SIM کے مستقل طور پر ناقابل استعمال ہونے سے پہلے آپ کے پاس # کوششیں بچی ہیں۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔}}"</string>
diff --git a/packages/SystemUI/res/layout/clipboard_overlay2.xml b/packages/SystemUI/res/layout/clipboard_overlay2.xml
index 33ad2cd..521369e 100644
--- a/packages/SystemUI/res/layout/clipboard_overlay2.xml
+++ b/packages/SystemUI/res/layout/clipboard_overlay2.xml
@@ -31,7 +31,7 @@
android:layout_width="0dp"
android:elevation="4dp"
android:background="@drawable/shelf_action_chip_container_background"
- android:layout_marginStart="@dimen/overlay_action_container_margin_horizontal"
+ android:layout_marginStart="@dimen/overlay_action_container_minimum_edge_spacing"
android:layout_marginBottom="@dimen/overlay_action_container_margin_bottom"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/actions_container"
diff --git a/packages/SystemUI/res/layout/screenshot_shelf.xml b/packages/SystemUI/res/layout/screenshot_shelf.xml
index 76f7f3b..2cb4b02 100644
--- a/packages/SystemUI/res/layout/screenshot_shelf.xml
+++ b/packages/SystemUI/res/layout/screenshot_shelf.xml
@@ -33,8 +33,7 @@
android:layout_width="wrap_content"
android:elevation="4dp"
android:background="@drawable/shelf_action_chip_container_background"
- android:layout_marginHorizontal="@dimen/overlay_action_container_margin_horizontal"
- android:layout_marginBottom="@dimen/screenshot_shelf_vertical_margin"
+ android:layout_marginHorizontal="@dimen/overlay_action_container_minimum_edge_spacing"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/guideline"
>
@@ -61,7 +60,7 @@
android:id="@+id/screenshot_preview_border"
android:layout_width="0dp"
android:layout_height="0dp"
- android:layout_marginStart="@dimen/overlay_action_container_margin_horizontal"
+ android:layout_marginStart="@dimen/overlay_action_container_minimum_edge_spacing"
android:layout_marginTop="@dimen/overlay_border_width_neg"
android:layout_marginEnd="@dimen/overlay_border_width_neg"
android:layout_marginBottom="@dimen/screenshot_shelf_vertical_margin"
@@ -153,7 +152,7 @@
android:id="@+id/screenshot_message_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginHorizontal="@dimen/overlay_action_container_margin_horizontal"
+ android:layout_marginHorizontal="@dimen/overlay_action_container_minimum_edge_spacing"
android:layout_marginTop="4dp"
android:layout_marginBottom="@dimen/overlay_action_container_margin_bottom"
android:paddingHorizontal="@dimen/overlay_action_container_padding_end"
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 64f2539..080e99e 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -158,7 +158,7 @@
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"تمّ التأكيد."</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"يمكنك النقر على \"تأكيد\" لإكمال المهمة."</string>
<string name="biometric_dialog_tap_confirm_with_face" msgid="2378151312221818694">"تم فتح قفل جهازك عند تقريبه من وجهك."</string>
- <string name="biometric_dialog_tap_confirm_with_face_alt_1" msgid="439152621640507113">"تم فتح قفل جهازك عند تقريبه من وجهك. اضغط للمتابعة."</string>
+ <string name="biometric_dialog_tap_confirm_with_face_alt_1" msgid="439152621640507113">"تم فتح الجهاز بالتعرّف على وجهك. اضغط للمتابعة."</string>
<string name="biometric_dialog_tap_confirm_with_face_alt_2" msgid="8586608186457385108">"تم التعرّف على الوجه. اضغط للمتابعة."</string>
<string name="biometric_dialog_tap_confirm_with_face_alt_3" msgid="2192670471930606539">"تم التعرّف على الوجه. للمتابعة، اضغط على رمز فتح القفل."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"مصادقة"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index c4b91ff..c95dc06 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -618,8 +618,7 @@
<string name="accessibility_status_bar_satellite_poor_connection" msgid="5231478574952724160">"Спадарожнікавая сувязь, дрэннае падключэнне"</string>
<string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Спадарожнікавая сувязь, добрае падключэнне"</string>
<string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Спадарожнікавая сувязь, падключэнне даступнае"</string>
- <!-- no translation found for satellite_connected_carrier_text (118524195198532589) -->
- <skip />
+ <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Экстраннае спадарожнікавае падключэнне"</string>
<string name="accessibility_managed_profile" msgid="4703836746209377356">"Працоўны профіль"</string>
<string name="tuner_warning_title" msgid="7721976098452135267">"Цікава для некаторых, але не для ўсіх"</string>
<string name="tuner_warning" msgid="1861736288458481650">"Наладка сістэмнага інтэрфейсу карыстальніка дае вам дадатковыя спосабы наладжвання і дапасоўвання карыстальніцкага інтэрфейсу Android. Гэтыя эксперыментальныя функцыі могуць змяніцца, перастаць працаваць або знікнуць у будучых версіях. Карыстайцеся з асцярожнасцю."</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 1709fef..72591d40 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -149,7 +149,7 @@
<string name="accessibility_scanning_face" msgid="3093828357921541387">"Skeniranje lica"</string>
<string name="accessibility_send_smart_reply" msgid="8885032190442015141">"Pošalji"</string>
<string name="cancel" msgid="1089011503403416730">"Otkaži"</string>
- <string name="biometric_dialog_confirm" msgid="2005978443007344895">"Potvrdite"</string>
+ <string name="biometric_dialog_confirm" msgid="2005978443007344895">"Potvrdi"</string>
<string name="biometric_dialog_try_again" msgid="8575345628117768844">"Pokušaj ponovo"</string>
<string name="biometric_dialog_empty_space_description" msgid="3330555462071453396">"Dodirnite da otkažete autentifikaciju"</string>
<string name="biometric_dialog_face_icon_description_idle" msgid="4351777022315116816">"Pokušajte ponovo"</string>
@@ -262,7 +262,7 @@
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nema dostupnih uparenih uređaja"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Dodirnite da povežete ili prekinete povezanost uređaja"</string>
- <string name="pair_new_bluetooth_devices" msgid="4601767620843349645">"Upari novi uređaj"</string>
+ <string name="pair_new_bluetooth_devices" msgid="4601767620843349645">"Uparite novi uređaj"</string>
<string name="see_all_bluetooth_devices" msgid="1761596816620200433">"Prikaži sve"</string>
<string name="turn_on_bluetooth" msgid="5681370462180289071">"Koristi Bluetooth"</string>
<string name="quick_settings_bluetooth_device_connected" msgid="7884777006729260996">"Povezano"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 4cbd373..64ee072 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -264,7 +264,7 @@
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Klepnutím zařízení připojíte nebo odpojíte"</string>
<string name="pair_new_bluetooth_devices" msgid="4601767620843349645">"Spárovat nové zařízení"</string>
<string name="see_all_bluetooth_devices" msgid="1761596816620200433">"Zobrazit vše"</string>
- <string name="turn_on_bluetooth" msgid="5681370462180289071">"Použít Bluetooth"</string>
+ <string name="turn_on_bluetooth" msgid="5681370462180289071">"Používat Bluetooth"</string>
<string name="quick_settings_bluetooth_device_connected" msgid="7884777006729260996">"Připojeno"</string>
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Uloženo"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"odpojit"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 695c03c..49b5a6d 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -963,10 +963,10 @@
<string name="accessibility_floating_button_hidden_notification_text" msgid="1457021647040915658">"Touchez pour afficher le bouton d\'accessibilité"</string>
<string name="accessibility_floating_button_undo_message_label_text" msgid="9017658016426242640">"Le raccourci <xliff:g id="FEATURE_NAME">%s</xliff:g> a été retiré"</string>
<string name="accessibility_floating_button_undo_message_number_text" msgid="4909270290725226075">"{count,plural, =1{# raccourci retiré}one{# raccourci retiré}many{# de raccourcis retirés}other{# raccourcis retirés}}"</string>
- <string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Déplacer dans coin sup. gauche"</string>
- <string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Déplacer dans coin sup. droit"</string>
- <string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Déplacer dans coin inf. gauche"</string>
- <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Déplacer dans coin inf. droit"</string>
+ <string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Déplacer en haut à gauche"</string>
+ <string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Déplacer en haut à droite"</string>
+ <string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Déplacer en bas à gauche"</string>
+ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Déplacer en bas à droite"</string>
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Rapprocher du bord et masquer"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Éloigner du bord et afficher"</string>
<string name="accessibility_floating_button_action_remove_menu" msgid="6730432848162552135">"Retirer"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 45e79f7..69924ca 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -264,7 +264,7 @@
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"אפשר להקיש כדי להתחבר למכשיר או להתנתק ממנו"</string>
<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">"Bluetooth"</string>
+ <string name="turn_on_bluetooth" msgid="5681370462180289071">"שימוש ב-Bluetooth"</string>
<string name="quick_settings_bluetooth_device_connected" msgid="7884777006729260996">"מחובר"</string>
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"נשמר"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ניתוק"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 9db36a1..68231b6 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -266,7 +266,7 @@
<string name="see_all_bluetooth_devices" msgid="1761596816620200433">"すべて表示"</string>
<string name="turn_on_bluetooth" msgid="5681370462180289071">"Bluetooth を使用"</string>
<string name="quick_settings_bluetooth_device_connected" msgid="7884777006729260996">"接続しました"</string>
- <string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"保存しました"</string>
+ <string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"保存済み"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"接続を解除"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"有効化"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"明日自動的に ON に戻す"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index d071ffa..a906b0d 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -563,9 +563,9 @@
<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_notification" msgid="7930294049046243939">"ನೋಟಿಫಿಕೇಶನ್"</string>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index f502ee0..28abe71 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -590,7 +590,7 @@
<string name="volume_dialog_title" msgid="6502703403483577940">"ການຄວບຄຸມສຽງ %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"ການໂທ ແລະ ການແຈ້ງເຕືອນຈະມີສຽງດັງ (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
<string name="media_output_label_title" msgid="872824698593182505">"ກຳລັງຫຼິ້ນ <xliff:g id="LABEL">%s</xliff:g> ໃນ"</string>
- <string name="media_output_title_without_playing" msgid="3825663683169305013">"ສຽງຈະຫຼິ້ນຕໍ່ໄປ"</string>
+ <string name="media_output_title_without_playing" msgid="3825663683169305013">"ສຽງຈະຫຼິ້ນຢູ່"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
<string name="status_bar" msgid="4357390266055077437">"ແຖບສະຖານະ"</string>
<string name="demo_mode" msgid="263484519766901593">"ໂໝດເດໂມສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ລະບົບ"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 1a7eb475..1e82805 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -565,14 +565,14 @@
<string name="screen_pinning_exit" msgid="4553787518387346893">"Апликацијата е откачена"</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_notification" msgid="7930294049046243939">"Известување"</string>
<string name="stream_bluetooth_sco" msgid="6234562365528664331">"Bluetooth"</string>
<string name="stream_dtmf" msgid="7322536356554673067">"Двојна повеќетонска фреквенција"</string>
<string name="stream_accessibility" msgid="3873610336741987152">"Пристапност"</string>
- <string name="volume_ringer_status_normal" msgid="1339039682222461143">"Ѕвони"</string>
+ <string name="volume_ringer_status_normal" msgid="1339039682222461143">"Ѕвонење"</string>
<string name="volume_ringer_status_vibrate" msgid="6970078708957857825">"Вибрации"</string>
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Исклучи звук"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Емитување"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 137f028..1bd0ba7 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -269,7 +269,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Disimpan"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"putuskan sambungan"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktifkan"</string>
- <string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Dihidupkan sekali lagi esok secara automatik"</string>
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Dihidupkan lagi esok secara automatik"</string>
<string name="turn_on_bluetooth_auto_info" msgid="8831410009251539988">"Ciri seperti Quick Share, Find My Device dan lokasi peranti menggunakan Bluetooth"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> bateri"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 072c82b..2eb36e5 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -198,10 +198,10 @@
<string name="face_reenroll_failure_dialog_content" msgid="7073947334397236935">"फेस अनलक सेटअप गर्न सकिएन। फेरि प्रयास गर्न सेटिङमा जानुहोस्।"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="2817887108047658975">"फिंगरप्रिन्ट सेन्सरमा छुनुहोस्"</string>
<string name="fingerprint_dialog_authenticated_confirmation" msgid="1603899612957562862">"जारी राख्न अनलक आइकनमा थिच्नुहोस्"</string>
- <string name="fingerprint_dialog_use_fingerprint_instead" msgid="5542430577183894219">"अनुहार पहिचान गर्न सकिएन। बरु फिंगरप्रिन्ट प्रयोग गर्नुहोस्।"</string>
+ <string name="fingerprint_dialog_use_fingerprint_instead" msgid="5542430577183894219">"अनुहार मिलेन। बरु फिंगरप्रिन्ट प्रयोग गर्नुहोस्।"</string>
<!-- no translation found for keyguard_face_failed_use_fp (7140293906176164263) -->
<skip />
- <string name="keyguard_face_failed" msgid="2346762871330729634">"अनुहार पहिचान गर्न सकिएन"</string>
+ <string name="keyguard_face_failed" msgid="2346762871330729634">"अनुहार मिलेन"</string>
<string name="keyguard_suggest_fingerprint" msgid="8742015961962702960">"बरु फिंगरप्रिन्ट प्रयोग गर्नुहोस्"</string>
<string name="keyguard_face_unlock_unavailable" msgid="1581949044193418736">"फेस अनलक उपलब्ध छैन"</string>
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ब्लुटुथ जडान भयो।"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 1a7382d..018baf5 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -264,7 +264,7 @@
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Klepnutím pripojíte alebo odpojíte zariadenie"</string>
<string name="pair_new_bluetooth_devices" msgid="4601767620843349645">"Spárovať nové zariadenie"</string>
<string name="see_all_bluetooth_devices" msgid="1761596816620200433">"Zobraziť všetko"</string>
- <string name="turn_on_bluetooth" msgid="5681370462180289071">"Použiť Bluetooth"</string>
+ <string name="turn_on_bluetooth" msgid="5681370462180289071">"Používať Bluetooth"</string>
<string name="quick_settings_bluetooth_device_connected" msgid="7884777006729260996">"Pripojené"</string>
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Uložené"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"odpojiť"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index a69ff82..ca62499 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -269,7 +269,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"சேமிக்கப்பட்டது"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"இணைப்பு நீக்கும்"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"செயல்படுத்தும்"</string>
- <string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"நாளைக்குத் தானாகவே மீண்டும் இயக்கப்படும்"</string>
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"நாளைக்குத் தானாகவே மீண்டும் இயக்கப்படுதல்"</string>
<string name="turn_on_bluetooth_auto_info" msgid="8831410009251539988">"விரைவுப் பகிர்தல், Find My Device போன்ற அம்சங்களும் சாதன இருப்பிடமும் புளூடூத்தைப் பயன்படுத்துகின்றன"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> பேட்டரி"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ஆடியோ"</string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index eba24233..c9abcaa 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -442,6 +442,8 @@
<dimen name="overlay_preview_container_margin">8dp</dimen>
<dimen name="overlay_action_container_margin_horizontal">8dp</dimen>
<dimen name="overlay_action_container_margin_bottom">6dp</dimen>
+ <!-- minimum distance to the left, right or bottom edges. -->
+ <dimen name="overlay_action_container_minimum_edge_spacing">12dp</dimen>
<dimen name="overlay_bg_protection_height">242dp</dimen>
<dimen name="overlay_action_container_corner_radius">20dp</dimen>
<dimen name="overlay_action_container_padding_vertical">8dp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
index 0bc29a8..46206b7 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
@@ -2695,12 +2695,10 @@
protected final void setRotationSuggestionsEnabled(boolean enabled) {
try {
final int userId = Binder.getCallingUserHandle().getIdentifier();
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- if (enabled) {
- info.setRotationSuggestionDisabled(true);
- }
- mStatusBarService.disableForUser(info, mToken, mContext.getPackageName(), userId,
- "setRotationSuggestionsEnabled");
+ final int what = enabled
+ ? StatusBarManager.DISABLE2_NONE
+ : StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS;
+ mStatusBarService.disable2ForUser(what, mToken, mContext.getPackageName(), userId);
} catch (RemoteException ex) {
throw ex.rethrowFromSystemServer();
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 9349227..9edea27 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -16,7 +16,6 @@
package com.android.systemui.keyguard;
-import static android.app.StatusBarManager.DISABLE2_NONE;
import static android.app.StatusBarManager.SESSION_KEYGUARD;
import static android.provider.Settings.Secure.LOCK_SCREEN_LOCK_AFTER_TIMEOUT;
import static android.provider.Settings.System.LOCKSCREEN_SOUNDS_ENABLED;
@@ -3411,12 +3410,9 @@
// unless disable is called to show un-hide it once first
if (forceClearFlags) {
try {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(flags,
- DISABLE2_NONE);
- mStatusBarService.disableForUser(info, mStatusBarDisableToken,
+ mStatusBarService.disableForUser(flags, mStatusBarDisableToken,
mContext.getPackageName(),
- mSelectedUserInteractor.getSelectedUserId(true),
- "adjustStatusBarLocked - force clear flags");
+ mSelectedUserInteractor.getSelectedUserId(true));
} catch (RemoteException e) {
Log.d(TAG, "Failed to force clear flags", e);
}
@@ -3442,11 +3438,9 @@
}
try {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(flags,
- DISABLE2_NONE);
- mStatusBarService.disableForUser(info, mStatusBarDisableToken,
- mContext.getPackageName(), mSelectedUserInteractor.getSelectedUserId(true),
- "adjustStatusBarLocked - set disable flags");
+ mStatusBarService.disableForUser(flags, mStatusBarDisableToken,
+ mContext.getPackageName(),
+ mSelectedUserInteractor.getSelectedUserId(true));
} catch (RemoteException e) {
Log.d(TAG, "Failed to set disable flags: " + flags, e);
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt
index ba7d410..acb48a9 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt
@@ -18,18 +18,12 @@
import android.content.Context
import android.content.res.Configuration
-import android.database.ContentObserver
-import android.net.Uri
-import android.os.Handler
-import android.os.UserHandle
-import android.provider.Settings
import android.view.View
import android.view.ViewGroup
import androidx.annotation.VisibleForTesting
import com.android.systemui.Dumpable
import com.android.systemui.Flags.migrateClocksToBlueprint
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.media.controls.ui.view.MediaHost
import com.android.systemui.media.controls.ui.view.MediaHostState
@@ -43,7 +37,6 @@
import com.android.systemui.statusbar.policy.SplitShadeStateController
import com.android.systemui.util.asIndenting
import com.android.systemui.util.println
-import com.android.systemui.util.settings.SecureSettings
import com.android.systemui.util.withIncreasedIndent
import java.io.PrintWriter
import javax.inject.Inject
@@ -61,8 +54,6 @@
private val bypassController: KeyguardBypassController,
private val statusBarStateController: SysuiStatusBarStateController,
private val context: Context,
- private val secureSettings: SecureSettings,
- @Main private val handler: Handler,
configurationController: ConfigurationController,
private val splitShadeStateController: SplitShadeStateController,
private val logger: KeyguardMediaControllerLogger,
@@ -91,26 +82,6 @@
}
)
- val settingsObserver: ContentObserver =
- object : ContentObserver(handler) {
- override fun onChange(selfChange: Boolean, uri: Uri?) {
- if (uri == lockScreenMediaPlayerUri) {
- allowMediaPlayerOnLockScreen =
- secureSettings.getBoolForUser(
- Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN,
- true,
- UserHandle.USER_CURRENT
- )
- refreshMediaPosition(reason = "allowMediaPlayerOnLockScreen changed")
- }
- }
- }
- secureSettings.registerContentObserverForUser(
- Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN,
- settingsObserver,
- UserHandle.USER_ALL
- )
-
// First let's set the desired state that we want for this host
mediaHost.expansion = MediaHostState.EXPANDED
mediaHost.showsOnlyActiveMedia = true
@@ -156,16 +127,6 @@
private set
private var splitShadeContainer: ViewGroup? = null
- /** Track the media player setting status on lock screen. */
- private var allowMediaPlayerOnLockScreen: Boolean =
- secureSettings.getBoolForUser(
- Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN,
- true,
- UserHandle.USER_CURRENT
- )
- private val lockScreenMediaPlayerUri =
- secureSettings.getUriFor(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN)
-
/**
* Attaches media container in single pane mode, situated at the top of the notifications list
*/
@@ -229,14 +190,12 @@
// mediaHost.visible required for proper animations handling
val isMediaHostVisible = mediaHost.visible
val isBypassNotEnabled = !bypassController.bypassEnabled
- val currentAllowMediaPlayerOnLockScreen = allowMediaPlayerOnLockScreen
val useSplitShade = useSplitShade
val shouldBeVisibleForSplitShade = shouldBeVisibleForSplitShade()
visible =
isMediaHostVisible &&
isBypassNotEnabled &&
keyguardOrUserSwitcher &&
- currentAllowMediaPlayerOnLockScreen &&
shouldBeVisibleForSplitShade
logger.logRefreshMediaPosition(
reason = reason,
@@ -246,7 +205,6 @@
keyguardOrUserSwitcher = keyguardOrUserSwitcher,
mediaHostVisible = isMediaHostVisible,
bypassNotEnabled = isBypassNotEnabled,
- currentAllowMediaPlayerOnLockScreen = currentAllowMediaPlayerOnLockScreen,
shouldBeVisibleForSplitShade = shouldBeVisibleForSplitShade,
)
val currActiveContainer = activeContainer
@@ -321,7 +279,6 @@
println("Self", this@KeyguardMediaController)
println("visible", visible)
println("useSplitShade", useSplitShade)
- println("allowMediaPlayerOnLockScreen", allowMediaPlayerOnLockScreen)
println("bypassController.bypassEnabled", bypassController.bypassEnabled)
println("isDozeWakeUpAnimationWaiting", isDozeWakeUpAnimationWaiting)
println("singlePaneContainer", singlePaneContainer)
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerLogger.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerLogger.kt
index c0d9dc2..4d1827ef 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerLogger.kt
@@ -36,7 +36,6 @@
keyguardOrUserSwitcher: Boolean,
mediaHostVisible: Boolean,
bypassNotEnabled: Boolean,
- currentAllowMediaPlayerOnLockScreen: Boolean,
shouldBeVisibleForSplitShade: Boolean,
) {
logBuffer.log(
@@ -50,8 +49,7 @@
bool3 = keyguardOrUserSwitcher
bool4 = mediaHostVisible
int2 = if (bypassNotEnabled) 1 else 0
- str2 = currentAllowMediaPlayerOnLockScreen.toString()
- str3 = shouldBeVisibleForSplitShade.toString()
+ str2 = shouldBeVisibleForSplitShade.toString()
},
{
"refreshMediaPosition(reason=$str1, " +
@@ -60,8 +58,7 @@
"keyguardOrUserSwitcher=$bool3, " +
"mediaHostVisible=$bool4, " +
"bypassNotEnabled=${int2 == 1}, " +
- "currentAllowMediaPlayerOnLockScreen=$str2, " +
- "shouldBeVisibleForSplitShade=$str3)"
+ "shouldBeVisibleForSplitShade=$str2)"
}
)
}
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 dbd71f3..37a035c 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
@@ -115,7 +115,7 @@
) {
/** Track the media player setting status on lock screen. */
- private var allowMediaPlayerOnLockScreen: Boolean = true
+ private var allowMediaPlayerOnLockScreen: Boolean = getMediaLockScreenSetting()
private val lockScreenMediaPlayerUri =
secureSettings.getUriFor(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN)
@@ -485,6 +485,7 @@
mediaCarouselController.logSmartspaceImpression(qsExpanded)
}
updateUserVisibility()
+ mediaCarouselController.updateHostVisibility()
}
override fun onDozeAmountChanged(linear: Float, eased: Float) {
@@ -569,12 +570,8 @@
object : ContentObserver(handler) {
override fun onChange(selfChange: Boolean, uri: Uri?) {
if (uri == lockScreenMediaPlayerUri) {
- allowMediaPlayerOnLockScreen =
- secureSettings.getBoolForUser(
- Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN,
- true,
- UserHandle.USER_CURRENT
- )
+ allowMediaPlayerOnLockScreen = getMediaLockScreenSetting()
+ mediaCarouselController.updateHostVisibility()
}
}
}
@@ -595,6 +592,14 @@
}
}
+ private fun getMediaLockScreenSetting(): Boolean {
+ return secureSettings.getBoolForUser(
+ Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN,
+ true,
+ UserHandle.USER_CURRENT
+ )
+ }
+
private fun updateConfiguration() {
distanceForFullShadeTransition =
context.resources.getDimensionPixelSize(
@@ -634,6 +639,13 @@
mediaCarouselController.closeGuts()
}
+ /** Return true if the carousel should be hidden because lockscreen is currently visible */
+ fun isLockedAndHidden(): Boolean {
+ return !allowMediaPlayerOnLockScreen &&
+ (statusbarState == StatusBarState.SHADE_LOCKED ||
+ statusbarState == StatusBarState.KEYGUARD)
+ }
+
private fun createUniqueObjectHost(): UniqueObjectHostView {
val viewHost = UniqueObjectHostView(context)
viewHost.addOnAttachStateChangeListener(
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaHost.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaHost.kt
index d92168b..04f9a9d 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaHost.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaHost.kt
@@ -202,7 +202,9 @@
*/
fun updateViewVisibility() {
state.visible =
- if (showsOnlyActiveMedia) {
+ if (mediaHierarchyManager.isLockedAndHidden()) {
+ false
+ } else if (showsOnlyActiveMedia) {
mediaDataManager.hasActiveMediaOrRecommendation()
} else {
mediaDataManager.hasAnyMediaOrRecommendation()
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotActionsProvider.kt b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotActionsProvider.kt
index ef1d87d..a1dd415 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotActionsProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotActionsProvider.kt
@@ -40,6 +40,7 @@
*/
interface ScreenshotActionsProvider {
fun onScrollChipReady(onClick: Runnable)
+ fun onScrollChipInvalidated()
fun setCompletedScreenshot(result: ScreenshotSavedResult)
/**
@@ -67,6 +68,8 @@
@Assisted val requestId: String,
@Assisted val actionExecutor: ActionExecutor,
) : ScreenshotActionsProvider {
+ private var addedScrollChip = false
+ private var onScrollClick: Runnable? = null
private var pendingAction: ((ScreenshotSavedResult) -> Unit)? = null
private var result: ScreenshotSavedResult? = null
@@ -122,18 +125,26 @@
}
override fun onScrollChipReady(onClick: Runnable) {
- viewModel.addAction(
- ActionButtonAppearance(
- AppCompatResources.getDrawable(context, R.drawable.ic_screenshot_scroll),
- context.resources.getString(R.string.screenshot_scroll_label),
- context.resources.getString(R.string.screenshot_scroll_label),
- ),
- showDuringEntrance = true,
- ) {
- onClick.run()
+ onScrollClick = onClick
+ if (!addedScrollChip) {
+ viewModel.addAction(
+ ActionButtonAppearance(
+ AppCompatResources.getDrawable(context, R.drawable.ic_screenshot_scroll),
+ context.resources.getString(R.string.screenshot_scroll_label),
+ context.resources.getString(R.string.screenshot_scroll_label),
+ ),
+ showDuringEntrance = true,
+ ) {
+ onScrollClick?.run()
+ }
+ addedScrollChip = true
}
}
+ override fun onScrollChipInvalidated() {
+ onScrollClick = null
+ }
+
override fun setCompletedScreenshot(result: ScreenshotSavedResult) {
if (this.result != null) {
Log.e(TAG, "Got a second completed screenshot for existing request!")
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
index 0217fc2..dfd742c 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
@@ -591,7 +591,11 @@
if (mConfigChanges.applyNewConfig(mContext.getResources())) {
// Hide the scroll chip until we know it's available in this
// orientation
- mViewProxy.hideScrollChip();
+ if (screenshotShelfUi2()) {
+ mActionsProvider.onScrollChipInvalidated();
+ } else {
+ mViewProxy.hideScrollChip();
+ }
// Delay scroll capture eval a bit to allow the underlying activity
// to set up in the new orientation.
mScreenshotHandler.postDelayed(
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotShelfViewProxy.kt b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotShelfViewProxy.kt
index 412b089..1e66cd1 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotShelfViewProxy.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotShelfViewProxy.kt
@@ -86,7 +86,8 @@
viewModel,
LayoutInflater.from(context),
onDismissalRequested = { event, velocity -> requestDismissal(event, velocity) },
- onDismissalCancelled = { animationController.getSwipeReturnAnimation().start() }
+ onDismissalCancelled = { animationController.getSwipeReturnAnimation().start() },
+ onUserInteraction = { callbacks?.onUserInteraction() }
)
view.updateInsets(windowManager.currentWindowMetrics.windowInsets)
addPredictiveBackListener { requestDismissal(SCREENSHOT_DISMISSED_OTHER) }
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ui/ScreenshotShelfView.kt b/packages/SystemUI/src/com/android/systemui/screenshot/ui/ScreenshotShelfView.kt
index 916d50f..969cf48 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ui/ScreenshotShelfView.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ui/ScreenshotShelfView.kt
@@ -22,6 +22,8 @@
import android.graphics.Rect
import android.graphics.Region
import android.util.AttributeSet
+import android.view.GestureDetector
+import android.view.GestureDetector.SimpleOnGestureListener
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
@@ -30,7 +32,6 @@
import android.widget.ImageView
import com.android.systemui.res.R
import com.android.systemui.screenshot.FloatingWindowUtil
-import kotlin.math.max
class ScreenshotShelfView(context: Context, attrs: AttributeSet? = null) :
FrameLayout(context, attrs) {
@@ -39,11 +40,50 @@
private lateinit var screenshotStatic: ViewGroup
var onTouchInterceptListener: ((MotionEvent) -> Boolean)? = null
+ var userInteractionCallback: (() -> Unit)? = null
+
private val displayMetrics = context.resources.displayMetrics
private val tmpRect = Rect()
private lateinit var actionsContainerBackground: View
+ private lateinit var actionsContainer: View
private lateinit var dismissButton: View
+ // Prepare an internal `GestureDetector` to determine when we can initiate a touch-interception
+ // session (with the client's provided `onTouchInterceptListener`). We delegate out to their
+ // listener only for gestures that can't be handled by scrolling our `actionsContainer`.
+ private val gestureDetector =
+ GestureDetector(
+ context,
+ object : SimpleOnGestureListener() {
+ override fun onScroll(
+ ev1: MotionEvent?,
+ ev2: MotionEvent,
+ distanceX: Float,
+ distanceY: Float
+ ): Boolean {
+ actionsContainer.getBoundsOnScreen(tmpRect)
+ val touchedInActionsContainer =
+ tmpRect.contains(ev2.rawX.toInt(), ev2.rawY.toInt())
+ val canHandleInternallyByScrolling =
+ touchedInActionsContainer
+ && actionsContainer.canScrollHorizontally(distanceX.toInt())
+ return !canHandleInternallyByScrolling
+ }
+ }
+ )
+
+ init {
+
+ // Delegate to the client-provided `onTouchInterceptListener` if we've already initiated
+ // touch-interception.
+ setOnTouchListener({ _: View, ev: MotionEvent ->
+ userInteractionCallback?.invoke()
+ onTouchInterceptListener?.invoke(ev) ?: false
+ })
+
+ gestureDetector.setIsLongpressEnabled(false)
+ }
+
override fun onFinishInflate() {
super.onFinishInflate()
// Get focus so that the key events go to the layout.
@@ -52,7 +92,15 @@
blurredScreenshotPreview = requireViewById(R.id.screenshot_preview_blur)
screenshotStatic = requireViewById(R.id.screenshot_static)
actionsContainerBackground = requireViewById(R.id.actions_container_background)
+ actionsContainer = requireViewById(R.id.actions_container)
dismissButton = requireViewById(R.id.screenshot_dismiss_button)
+
+ // Configure to extend the timeout during ongoing gestures (i.e. scrolls) that are already
+ // being handled by our child views.
+ actionsContainer.setOnTouchListener({ _: View, ev: MotionEvent ->
+ userInteractionCallback?.invoke()
+ false
+ })
}
fun getTouchRegion(gestureInsets: Insets): Region {
@@ -79,6 +127,18 @@
val inPortrait = orientation == Configuration.ORIENTATION_PORTRAIT
val cutout = insets.displayCutout
val navBarInsets = insets.getInsets(WindowInsets.Type.navigationBars())
+
+ // When honoring the navbar or other obstacle offsets, include some extra padding above
+ // the inset itself.
+ val verticalPadding =
+ mContext.resources.getDimensionPixelOffset(R.dimen.screenshot_shelf_vertical_margin)
+
+ // Minimum bottom padding to always enforce (e.g. if there's no nav bar)
+ val minimumBottomPadding =
+ context.resources.getDimensionPixelOffset(
+ R.dimen.overlay_action_container_minimum_edge_spacing
+ )
+
if (cutout == null) {
screenshotStatic.setPadding(0, 0, 0, navBarInsets.bottom)
} else {
@@ -86,25 +146,41 @@
if (inPortrait) {
screenshotStatic.setPadding(
waterfall.left,
- max(cutout.safeInsetTop.toDouble(), waterfall.top.toDouble()).toInt(),
+ max(cutout.safeInsetTop, waterfall.top),
waterfall.right,
max(
- cutout.safeInsetBottom.toDouble(),
- max(navBarInsets.bottom.toDouble(), waterfall.bottom.toDouble())
- )
- .toInt()
+ navBarInsets.bottom + verticalPadding,
+ cutout.safeInsetBottom + verticalPadding,
+ waterfall.bottom + verticalPadding,
+ minimumBottomPadding,
+ )
)
} else {
screenshotStatic.setPadding(
- max(cutout.safeInsetLeft.toDouble(), waterfall.left.toDouble()).toInt(),
+ max(cutout.safeInsetLeft, waterfall.left),
waterfall.top,
- max(cutout.safeInsetRight.toDouble(), waterfall.right.toDouble()).toInt(),
- max(navBarInsets.bottom.toDouble(), waterfall.bottom.toDouble()).toInt()
+ max(cutout.safeInsetRight, waterfall.right),
+ max(
+ navBarInsets.bottom + verticalPadding,
+ waterfall.bottom + verticalPadding,
+ minimumBottomPadding,
+ )
)
}
}
}
+ // Max function for two or more params.
+ private fun max(first: Int, second: Int, vararg items: Int): Int {
+ var largest = if (first > second) first else second
+ for (item in items) {
+ if (item > largest) {
+ largest = item
+ }
+ }
+ return largest
+ }
+
private fun getSwipeRegion(): Region {
val swipeRegion = Region()
val padding = FloatingWindowUtil.dpToPx(displayMetrics, -1 * TOUCH_PADDING_DP).toInt()
@@ -127,10 +203,24 @@
private const val TOUCH_PADDING_DP = 12f
}
+ override fun onInterceptHoverEvent(event: MotionEvent): Boolean {
+ userInteractionCallback?.invoke()
+ return super.onInterceptHoverEvent(event)
+ }
+
override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
- if (onTouchInterceptListener?.invoke(ev) == true) {
- return true
+ userInteractionCallback?.invoke()
+
+ // Let the client-provided listener see all `DOWN` events so that they'll be able to
+ // interpret the remainder of the gesture, even if interception starts partway-through.
+ // TODO: is this really necessary? And if we don't go on to start interception, should we
+ // follow up with `ACTION_CANCEL`?
+ if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
+ onTouchInterceptListener?.invoke(ev)
}
- return super.onInterceptTouchEvent(ev)
+
+ // Only allow the client-provided touch interceptor to take over the gesture if our
+ // top-level `GestureDetector` decides not to scroll the action container.
+ return gestureDetector.onTouchEvent(ev)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ActionButtonViewBinder.kt b/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ActionButtonViewBinder.kt
index 750bd53..2243ade 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ActionButtonViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ActionButtonViewBinder.kt
@@ -37,6 +37,14 @@
// models would remove/create separate views.
drawable?.setIcon(viewModel.appearance.icon)
textView.text = viewModel.appearance.label
+
+ viewModel.appearance.customBackground?.also {
+ if (it.canApplyTheme()) {
+ it.applyTheme(view.rootView.context.theme)
+ }
+ view.background = it
+ }
+
setMargins(iconView, textView, viewModel.appearance.label?.isNotEmpty() ?: false)
if (viewModel.onClicked != null) {
view.setOnClickListener { viewModel.onClicked.invoke() }
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt b/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt
index 43c0107..89f904a 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt
@@ -45,6 +45,7 @@
layoutInflater: LayoutInflater,
onDismissalRequested: (event: ScreenshotEvent, velocity: Float?) -> Unit,
onDismissalCancelled: () -> Unit,
+ onUserInteraction: () -> Unit
) {
val swipeGestureListener =
SwipeGestureListener(
@@ -55,6 +56,7 @@
onCancel = onDismissalCancelled
)
view.onTouchInterceptListener = { swipeGestureListener.onMotionEvent(it) }
+ view.userInteractionCallback = onUserInteraction
val previewView: ImageView = view.requireViewById(R.id.screenshot_preview)
val previewViewBlur: ImageView = view.requireViewById(R.id.screenshot_preview_blur)
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ui/viewmodel/ActionButtonAppearance.kt b/packages/SystemUI/src/com/android/systemui/screenshot/ui/viewmodel/ActionButtonAppearance.kt
index 55a2ad2..2982ea0 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ui/viewmodel/ActionButtonAppearance.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ui/viewmodel/ActionButtonAppearance.kt
@@ -19,8 +19,11 @@
import android.graphics.drawable.Drawable
/** Data describing how an action should be shown to the user. */
-data class ActionButtonAppearance(
+data class ActionButtonAppearance
+@JvmOverloads
+constructor(
val icon: Drawable?,
val label: CharSequence?,
val description: CharSequence,
+ val customBackground: Drawable? = null,
)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
index db15144..e84451d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.phone;
+import static android.app.StatusBarManager.DISABLE_HOME;
import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
import static android.app.StatusBarManager.WindowVisibleState;
@@ -1004,14 +1005,8 @@
// this handling this post-init task. We force an update in this case, and use a new
// token to not conflict with any other disabled flags already requested by SysUI
Binder token = new Binder();
- int userId = mContext.getUserId();
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setNavigationHomeDisabled(true);
- mBarService.disableForUser(info, token, mContext.getPackageName(),
- userId, "set the initial view visibility");
-
- mBarService.disableForUser(new StatusBarManager.DisableInfo(), token,
- mContext.getPackageName(), userId, "set the initial view visibility");
+ mBarService.disable(DISABLE_HOME, token, mContext.getPackageName());
+ mBarService.disable(0, token, mContext.getPackageName());
} catch (RemoteException ex) {
ex.rethrowFromSystemServer();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/SubscriptionModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/SubscriptionModel.kt
index d9d909a..fc54f14 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/SubscriptionModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/SubscriptionModel.kt
@@ -33,6 +33,18 @@
*/
val isOpportunistic: Boolean = false,
+ /**
+ * True if this subscription **only** supports non-terrestrial networks (NTN) and false
+ * otherwise. (non-terrestrial == satellite)
+ *
+ * Note that we intend to filter these subscriptions out, because these connections are actually
+ * supported by
+ * [com.android.systemui.statusbar.pipeline.satellite.data.DeviceBasedSatelliteRepository]. See
+ * [com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor] for
+ * the filtering.
+ */
+ val isExclusivelyNonTerrestrial: Boolean = false,
+
/** Subscriptions in the same group may be filtered or treated as a single subscription */
val groupUuid: ParcelUuid? = null,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepository.kt
index 2278597..425c58b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepository.kt
@@ -23,6 +23,7 @@
import com.android.systemui.statusbar.pipeline.mobile.data.model.DataConnectionState
import com.android.systemui.statusbar.pipeline.mobile.data.model.NetworkNameModel
import com.android.systemui.statusbar.pipeline.mobile.data.model.ResolvedNetworkType
+import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
import kotlinx.coroutines.flow.StateFlow
@@ -76,7 +77,17 @@
*/
val isInService: StateFlow<Boolean>
- /** Reflects [android.telephony.ServiceState.isUsingNonTerrestrialNetwork] */
+ /**
+ * True if this subscription is actively connected to a non-terrestrial network and false
+ * otherwise. Reflects [android.telephony.ServiceState.isUsingNonTerrestrialNetwork].
+ *
+ * Notably: This value reflects that this subscription is **currently** using a non-terrestrial
+ * network, because some subscriptions can switch between terrestrial and non-terrestrial
+ * networks. [SubscriptionModel.isExclusivelyNonTerrestrial] reflects whether a subscription is
+ * configured to exclusively connect to non-terrestrial networks. [isNonTerrestrial] can change
+ * during the lifetime of a subscription but [SubscriptionModel.isExclusivelyNonTerrestrial]
+ * will stay constant.
+ */
val isNonTerrestrial: StateFlow<Boolean>
/** True if [android.telephony.SignalStrength] told us that this connection is using GSM */
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 a455db2..962b2229 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
@@ -417,6 +417,7 @@
SubscriptionModel(
subscriptionId = subscriptionId,
isOpportunistic = isOpportunistic,
+ isExclusivelyNonTerrestrial = isOnlyNonTerrestrialNetwork,
groupUuid = groupUuid,
carrierName = carrierName.toString(),
profileClass = profileClass,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt
index d555c47..91d7ca6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractor.kt
@@ -172,21 +172,33 @@
private val unfilteredSubscriptions: Flow<List<SubscriptionModel>> =
mobileConnectionsRepo.subscriptions
- /**
- * Any filtering that we can do based purely on the info of each subscription. Currently this
- * only applies the ProfileClass-based filter, but if we need other they can go here
- */
+ /** Any filtering that we can do based purely on the info of each subscription individually. */
private val subscriptionsBasedFilteredSubs =
- unfilteredSubscriptions.map { subs -> applyProvisioningFilter(subs) }.distinctUntilChanged()
+ unfilteredSubscriptions
+ .map { it.filterBasedOnProvisioning().filterBasedOnNtn() }
+ .distinctUntilChanged()
- private fun applyProvisioningFilter(subs: List<SubscriptionModel>): List<SubscriptionModel> =
+ private fun List<SubscriptionModel>.filterBasedOnProvisioning(): List<SubscriptionModel> =
if (!featureFlagsClassic.isEnabled(FILTER_PROVISIONING_NETWORK_SUBSCRIPTIONS)) {
- subs
+ this
} else {
- subs.filter { it.profileClass != PROFILE_CLASS_PROVISIONING }
+ this.filter { it.profileClass != PROFILE_CLASS_PROVISIONING }
}
/**
+ * Subscriptions that exclusively support non-terrestrial networks should **never** directly
+ * show any iconography in the status bar. These subscriptions only exist to provide a backing
+ * for the device-based satellite connections, and the iconography for those connections are
+ * already being handled in
+ * [com.android.systemui.statusbar.pipeline.satellite.data.DeviceBasedSatelliteRepository]. We
+ * need to filter out those subscriptions here so we guarantee the subscription never turns into
+ * an icon. See b/336881301.
+ */
+ private fun List<SubscriptionModel>.filterBasedOnNtn(): List<SubscriptionModel> {
+ return this.filter { !it.isExclusivelyNonTerrestrial }
+ }
+
+ /**
* Generally, SystemUI wants to show iconography for each subscription that is listed by
* [SubscriptionManager]. However, in the case of opportunistic subscriptions, we want to only
* show a single representation of the pair of subscriptions. The docs define opportunistic as:
@@ -204,12 +216,8 @@
subscriptionsBasedFilteredSubs,
mobileConnectionsRepo.activeMobileDataSubscriptionId,
connectivityRepository.vcnSubId,
- ) { unfilteredSubs, activeId, vcnSubId ->
- filterSubsBasedOnOpportunistic(
- unfilteredSubs,
- activeId,
- vcnSubId,
- )
+ ) { preFilteredSubs, activeId, vcnSubId ->
+ filterSubsBasedOnOpportunistic(preFilteredSubs, activeId, vcnSubId)
}
.distinctUntilChanged()
.logDiffsForTable(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerTest.kt
index 9f5260c..37dea11 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerTest.kt
@@ -16,7 +16,6 @@
package com.android.systemui.media.controls.ui.controller
-import android.provider.Settings
import android.test.suitebuilder.annotation.SmallTest
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
@@ -37,8 +36,6 @@
import com.android.systemui.util.animation.UniqueObjectHostView
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
-import com.android.systemui.util.settings.FakeSettings
-import com.android.systemui.utils.os.FakeHandler
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.assertTrue
import org.junit.Before
@@ -65,10 +62,7 @@
private val mediaContainerView: MediaContainerView = MediaContainerView(context, null)
private val hostView = UniqueObjectHostView(context)
- private val settings = FakeSettings()
private lateinit var keyguardMediaController: KeyguardMediaController
- private lateinit var testableLooper: TestableLooper
- private lateinit var fakeHandler: FakeHandler
private lateinit var statusBarStateListener: StatusBarStateController.StateListener
@Before
@@ -84,16 +78,12 @@
whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
whenever(mediaHost.hostView).thenReturn(hostView)
hostView.layoutParams = FrameLayout.LayoutParams(100, 100)
- testableLooper = TestableLooper.get(this)
- fakeHandler = FakeHandler(testableLooper.looper)
keyguardMediaController =
KeyguardMediaController(
mediaHost,
bypassController,
statusBarStateController,
context,
- settings,
- fakeHandler,
configurationController,
ResourcesSplitShadeStateController(),
mock<KeyguardMediaControllerLogger>(),
@@ -126,24 +116,6 @@
}
@Test
- fun testHiddenOnKeyguard_whenMediaOnLockScreenDisabled() {
- settings.putInt(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, 0)
-
- keyguardMediaController.refreshMediaPosition(TEST_REASON)
-
- assertThat(mediaContainerView.visibility).isEqualTo(GONE)
- }
-
- @Test
- fun testAvailableOnKeyguard_whenMediaOnLockScreenEnabled() {
- settings.putInt(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, 1)
-
- keyguardMediaController.refreshMediaPosition(TEST_REASON)
-
- assertThat(mediaContainerView.visibility).isEqualTo(VISIBLE)
- }
-
- @Test
fun testActivatesSplitShadeContainerInSplitShadeMode() {
val splitShadeContainer = FrameLayout(context)
keyguardMediaController.attachSplitShadeContainer(splitShadeContainer)
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 29820f7..e9b11c4 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
@@ -156,6 +156,7 @@
verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture())
verify(statusBarStateController).addCallback(statusBarCallback.capture())
verify(dreamOverlayStateController).addCallback(dreamOverlayCallback.capture())
+ whenever(mediaCarouselController.updateHostVisibility).thenReturn({})
setupHost(lockHost, MediaHierarchyManager.LOCATION_LOCKSCREEN, LOCKSCREEN_TOP)
setupHost(qsHost, MediaHierarchyManager.LOCATION_QS, QS_TOP)
setupHost(qqsHost, MediaHierarchyManager.LOCATION_QQS, QQS_TOP)
@@ -613,6 +614,55 @@
assertThat(mediaCarouselScrollHandler.visibleToUser).isFalse()
}
+ @Test
+ fun keyguardState_allowedOnLockscreen_updateVisibility() {
+ settings.putBool(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true)
+ clearInvocations(mediaCarouselController)
+
+ statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
+ statusBarCallback.value.onStateChanged(StatusBarState.KEYGUARD)
+
+ verify(mediaCarouselController).updateHostVisibility
+ assertThat(mediaHierarchyManager.isLockedAndHidden()).isFalse()
+ }
+
+ @Test
+ fun keyguardState_notAllowedOnLockscreen_updateVisibility() {
+ settings.putBool(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, false)
+ clearInvocations(mediaCarouselController)
+
+ statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
+ statusBarCallback.value.onStateChanged(StatusBarState.KEYGUARD)
+
+ verify(mediaCarouselController).updateHostVisibility
+ assertThat(mediaHierarchyManager.isLockedAndHidden()).isTrue()
+ }
+
+ @Test
+ fun keyguardGone_updateVisibility() {
+ settings.putBool(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, false)
+ clearInvocations(mediaCarouselController)
+
+ statusBarCallback.value.onStatePreChange(StatusBarState.KEYGUARD, StatusBarState.SHADE)
+ statusBarCallback.value.onStateChanged(StatusBarState.SHADE)
+
+ verify(mediaCarouselController).updateHostVisibility
+ assertThat(mediaHierarchyManager.isLockedAndHidden()).isFalse()
+ }
+
+ @Test
+ fun lockscreenSettingChanged_updateVisibility() {
+ settings.putBool(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true)
+ statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
+ statusBarCallback.value.onStateChanged(StatusBarState.KEYGUARD)
+ clearInvocations(mediaCarouselController)
+
+ settings.putBool(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, false)
+
+ verify(mediaCarouselController).updateHostVisibility
+ assertThat(mediaHierarchyManager.isLockedAndHidden()).isTrue()
+ }
+
private fun enableSplitShade() {
context
.getOrCreateTestableResources()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/DefaultScreenshotActionsProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/DefaultScreenshotActionsProviderTest.kt
index 853e50a..896c3bf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/DefaultScreenshotActionsProviderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/DefaultScreenshotActionsProviderTest.kt
@@ -37,6 +37,7 @@
import org.junit.Before
import org.junit.runner.RunWith
import org.mockito.Mockito.verifyNoMoreInteractions
+import org.mockito.kotlin.never
import org.mockito.kotlin.verify
@RunWith(AndroidTestingRunner::class)
@@ -111,6 +112,47 @@
assertThat(intentCaptor.value.action).isEqualTo(Intent.ACTION_CHOOSER)
}
+ @Test
+ fun scrollChipClicked_callsOnClick() = runTest {
+ actionsProvider = createActionsProvider()
+
+ val onScrollClick = mock<Runnable>()
+ val numActions = viewModel.actions.value.size
+ actionsProvider.onScrollChipReady(onScrollClick)
+ viewModel.actions.value[numActions].onClicked!!.invoke()
+
+ verify(onScrollClick).run()
+ }
+
+ @Test
+ fun scrollChipClicked_afterInvalidate_doesNothing() = runTest {
+ actionsProvider = createActionsProvider()
+
+ val onScrollClick = mock<Runnable>()
+ val numActions = viewModel.actions.value.size
+ actionsProvider.onScrollChipReady(onScrollClick)
+ actionsProvider.onScrollChipInvalidated()
+ viewModel.actions.value[numActions].onClicked!!.invoke()
+
+ verify(onScrollClick, never()).run()
+ }
+
+ @Test
+ fun scrollChipClicked_afterUpdate_runsNewAction() = runTest {
+ actionsProvider = createActionsProvider()
+
+ val onScrollClick = mock<Runnable>()
+ val onScrollClick2 = mock<Runnable>()
+ val numActions = viewModel.actions.value.size
+ actionsProvider.onScrollChipReady(onScrollClick)
+ actionsProvider.onScrollChipInvalidated()
+ actionsProvider.onScrollChipReady(onScrollClick2)
+ viewModel.actions.value[numActions].onClicked!!.invoke()
+
+ verify(onScrollClick2).run()
+ verify(onScrollClick, never()).run()
+ }
+
private fun createActionsProvider(): ScreenshotActionsProvider {
return DefaultScreenshotActionsProvider(
context,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt
index 07abd27..5152d6b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt
@@ -272,6 +272,50 @@
}
@Test
+ fun subscriptions_subIsOnlyNtn_modelHasExclusivelyNtnTrue() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.subscriptions)
+
+ val onlyNtnSub =
+ mock<SubscriptionInfo>().also {
+ whenever(it.isOnlyNonTerrestrialNetwork).thenReturn(true)
+ whenever(it.subscriptionId).thenReturn(45)
+ whenever(it.groupUuid).thenReturn(GROUP_1)
+ whenever(it.carrierName).thenReturn("NTN only")
+ whenever(it.profileClass).thenReturn(PROFILE_CLASS_UNSET)
+ }
+
+ whenever(subscriptionManager.completeActiveSubscriptionInfoList)
+ .thenReturn(listOf(onlyNtnSub))
+ getSubscriptionCallback().onSubscriptionsChanged()
+
+ assertThat(latest).hasSize(1)
+ assertThat(latest!![0].isExclusivelyNonTerrestrial).isTrue()
+ }
+
+ @Test
+ fun subscriptions_subIsNotOnlyNtn_modelHasExclusivelyNtnFalse() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.subscriptions)
+
+ val notOnlyNtnSub =
+ mock<SubscriptionInfo>().also {
+ whenever(it.isOnlyNonTerrestrialNetwork).thenReturn(false)
+ whenever(it.subscriptionId).thenReturn(45)
+ whenever(it.groupUuid).thenReturn(GROUP_1)
+ whenever(it.carrierName).thenReturn("NTN only")
+ whenever(it.profileClass).thenReturn(PROFILE_CLASS_UNSET)
+ }
+
+ whenever(subscriptionManager.completeActiveSubscriptionInfoList)
+ .thenReturn(listOf(notOnlyNtnSub))
+ getSubscriptionCallback().onSubscriptionsChanged()
+
+ assertThat(latest).hasSize(1)
+ assertThat(latest!![0].isExclusivelyNonTerrestrial).isFalse()
+ }
+
+ @Test
fun testSubscriptions_carrierMergedOnly_listHasCarrierMerged() =
testScope.runTest {
val latest by collectLastValue(underTest.subscriptions)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt
index 0b14be1..0f9cbfa 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt
@@ -42,14 +42,11 @@
import com.google.common.truth.Truth.assertThat
import java.util.UUID
import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.launchIn
-import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.advanceTimeBy
+import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
-import kotlinx.coroutines.yield
-import org.junit.After
import org.junit.Before
import org.junit.Test
import org.mockito.Mock
@@ -68,7 +65,7 @@
set(Flags.FILTER_PROVISIONING_NETWORK_SUBSCRIPTIONS, true)
}
- private val testDispatcher = UnconfinedTestDispatcher()
+ private val testDispatcher = StandardTestDispatcher()
private val testScope = TestScope(testDispatcher)
private val tableLogBuffer =
@@ -113,17 +110,12 @@
)
}
- @After fun tearDown() {}
-
@Test
fun filteredSubscriptions_default() =
testScope.runTest {
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
assertThat(latest).isEqualTo(listOf<SubscriptionModel>())
-
- job.cancel()
}
// Based on the logic from the old pipeline, we'll never filter subs when there are more than 2
@@ -133,12 +125,9 @@
connectionsRepository.setSubscriptions(listOf(SUB_1, SUB_3_OPP, SUB_4_OPP))
connectionsRepository.setActiveMobileDataSubscriptionId(SUB_4_ID)
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
assertThat(latest).isEqualTo(listOf(SUB_1, SUB_3_OPP, SUB_4_OPP))
-
- job.cancel()
}
@Test
@@ -146,12 +135,9 @@
testScope.runTest {
connectionsRepository.setSubscriptions(listOf(SUB_1, SUB_2))
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
assertThat(latest).isEqualTo(listOf(SUB_1, SUB_2))
-
- job.cancel()
}
@Test
@@ -160,12 +146,9 @@
connectionsRepository.setSubscriptions(listOf(SUB_3_OPP, SUB_4_OPP))
connectionsRepository.setActiveMobileDataSubscriptionId(SUB_3_ID)
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
assertThat(latest).isEqualTo(listOf(SUB_3_OPP, SUB_4_OPP))
-
- job.cancel()
}
@Test
@@ -180,12 +163,9 @@
connectionsRepository.setSubscriptions(listOf(sub1, sub2))
connectionsRepository.setActiveMobileDataSubscriptionId(SUB_1_ID)
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
assertThat(latest).isEqualTo(listOf(sub1, sub2))
-
- job.cancel()
}
@Test
@@ -202,13 +182,10 @@
whenever(carrierConfigTracker.alwaysShowPrimarySignalBarInOpportunisticNetworkDefault)
.thenReturn(false)
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
// Filtered subscriptions should show the active one when the config is false
assertThat(latest).isEqualTo(listOf(sub3))
-
- job.cancel()
}
@Test
@@ -225,13 +202,10 @@
whenever(carrierConfigTracker.alwaysShowPrimarySignalBarInOpportunisticNetworkDefault)
.thenReturn(false)
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
// Filtered subscriptions should show the active one when the config is false
assertThat(latest).isEqualTo(listOf(sub4))
-
- job.cancel()
}
@Test
@@ -248,14 +222,11 @@
whenever(carrierConfigTracker.alwaysShowPrimarySignalBarInOpportunisticNetworkDefault)
.thenReturn(true)
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
// Filtered subscriptions should show the primary (non-opportunistic) if the config is
// true
assertThat(latest).isEqualTo(listOf(sub1))
-
- job.cancel()
}
@Test
@@ -272,14 +243,11 @@
whenever(carrierConfigTracker.alwaysShowPrimarySignalBarInOpportunisticNetworkDefault)
.thenReturn(true)
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
// Filtered subscriptions should show the primary (non-opportunistic) if the config is
// true
assertThat(latest).isEqualTo(listOf(sub1))
-
- job.cancel()
}
@Test
@@ -297,12 +265,9 @@
whenever(carrierConfigTracker.alwaysShowPrimarySignalBarInOpportunisticNetworkDefault)
.thenReturn(false)
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
assertThat(latest).isEqualTo(listOf(sub3))
-
- job.cancel()
}
@Test
@@ -320,12 +285,9 @@
whenever(carrierConfigTracker.alwaysShowPrimarySignalBarInOpportunisticNetworkDefault)
.thenReturn(false)
- var latest: List<SubscriptionModel>? = null
- val job = underTest.filteredSubscriptions.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.filteredSubscriptions)
assertThat(latest).isEqualTo(listOf(sub1))
-
- job.cancel()
}
@Test
@@ -446,313 +408,345 @@
}
@Test
+ fun filteredSubscriptions_subNotExclusivelyNonTerrestrial_hasSub() =
+ testScope.runTest {
+ val notExclusivelyNonTerrestrialSub =
+ SubscriptionModel(
+ isExclusivelyNonTerrestrial = false,
+ subscriptionId = 5,
+ carrierName = "Carrier 5",
+ profileClass = PROFILE_CLASS_UNSET,
+ )
+
+ connectionsRepository.setSubscriptions(listOf(notExclusivelyNonTerrestrialSub))
+
+ val latest by collectLastValue(underTest.filteredSubscriptions)
+
+ assertThat(latest).isEqualTo(listOf(notExclusivelyNonTerrestrialSub))
+ }
+
+ @Test
+ fun filteredSubscriptions_subExclusivelyNonTerrestrial_doesNotHaveSub() =
+ testScope.runTest {
+ val exclusivelyNonTerrestrialSub =
+ SubscriptionModel(
+ isExclusivelyNonTerrestrial = true,
+ subscriptionId = 5,
+ carrierName = "Carrier 5",
+ profileClass = PROFILE_CLASS_UNSET,
+ )
+
+ connectionsRepository.setSubscriptions(listOf(exclusivelyNonTerrestrialSub))
+
+ val latest by collectLastValue(underTest.filteredSubscriptions)
+
+ assertThat(latest).isEmpty()
+ }
+
+ @Test
+ fun filteredSubscription_mixOfExclusivelyNonTerrestrialAndOther_hasOtherSubsOnly() =
+ testScope.runTest {
+ val exclusivelyNonTerrestrialSub =
+ SubscriptionModel(
+ isExclusivelyNonTerrestrial = true,
+ subscriptionId = 5,
+ carrierName = "Carrier 5",
+ profileClass = PROFILE_CLASS_UNSET,
+ )
+ val otherSub1 =
+ SubscriptionModel(
+ isExclusivelyNonTerrestrial = false,
+ subscriptionId = 1,
+ carrierName = "Carrier 1",
+ profileClass = PROFILE_CLASS_UNSET,
+ )
+ val otherSub2 =
+ SubscriptionModel(
+ isExclusivelyNonTerrestrial = false,
+ subscriptionId = 2,
+ carrierName = "Carrier 2",
+ profileClass = PROFILE_CLASS_UNSET,
+ )
+
+ connectionsRepository.setSubscriptions(
+ listOf(otherSub1, exclusivelyNonTerrestrialSub, otherSub2)
+ )
+
+ val latest by collectLastValue(underTest.filteredSubscriptions)
+
+ assertThat(latest).isEqualTo(listOf(otherSub1, otherSub2))
+ }
+
+ @Test
+ fun filteredSubscriptions_exclusivelyNonTerrestrialSub_andOpportunistic_bothFiltersHappen() =
+ testScope.runTest {
+ // Exclusively non-terrestrial sub
+ val exclusivelyNonTerrestrialSub =
+ SubscriptionModel(
+ isExclusivelyNonTerrestrial = true,
+ subscriptionId = 5,
+ carrierName = "Carrier 5",
+ profileClass = PROFILE_CLASS_UNSET,
+ )
+
+ // Opportunistic subs
+ val (sub3, sub4) =
+ createSubscriptionPair(
+ subscriptionIds = Pair(SUB_3_ID, SUB_4_ID),
+ opportunistic = Pair(true, true),
+ grouped = true,
+ )
+
+ // WHEN both an exclusively non-terrestrial sub and opportunistic sub pair is included
+ connectionsRepository.setSubscriptions(listOf(sub3, sub4, exclusivelyNonTerrestrialSub))
+ connectionsRepository.setActiveMobileDataSubscriptionId(SUB_3_ID)
+
+ val latest by collectLastValue(underTest.filteredSubscriptions)
+
+ // THEN both the only-non-terrestrial sub and the non-active sub are filtered out,
+ // leaving only sub3.
+ assertThat(latest).isEqualTo(listOf(sub3))
+ }
+
+ @Test
fun activeDataConnection_turnedOn() =
testScope.runTest {
CONNECTION_1.setDataEnabled(true)
- var latest: Boolean? = null
- val job =
- underTest.activeDataConnectionHasDataEnabled.onEach { latest = it }.launchIn(this)
+
+ val latest by collectLastValue(underTest.activeDataConnectionHasDataEnabled)
assertThat(latest).isTrue()
-
- job.cancel()
}
@Test
fun activeDataConnection_turnedOff() =
testScope.runTest {
CONNECTION_1.setDataEnabled(true)
- var latest: Boolean? = null
- val job =
- underTest.activeDataConnectionHasDataEnabled.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.activeDataConnectionHasDataEnabled)
CONNECTION_1.setDataEnabled(false)
- yield()
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
fun activeDataConnection_invalidSubId() =
testScope.runTest {
- var latest: Boolean? = null
- val job =
- underTest.activeDataConnectionHasDataEnabled.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.activeDataConnectionHasDataEnabled)
connectionsRepository.setActiveMobileDataSubscriptionId(INVALID_SUBSCRIPTION_ID)
- yield()
// An invalid active subId should tell us that data is off
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
fun failedConnection_default_validated_notFailed() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.isDefaultConnectionFailed.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
connectionsRepository.mobileIsDefault.value = true
connectionsRepository.defaultConnectionIsValidated.value = true
- yield()
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
fun failedConnection_notDefault_notValidated_notFailed() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.isDefaultConnectionFailed.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
connectionsRepository.mobileIsDefault.value = false
connectionsRepository.defaultConnectionIsValidated.value = false
- yield()
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
fun failedConnection_default_notValidated_failed() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.isDefaultConnectionFailed.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
connectionsRepository.mobileIsDefault.value = true
connectionsRepository.defaultConnectionIsValidated.value = false
- yield()
assertThat(latest).isTrue()
-
- job.cancel()
}
@Test
fun failedConnection_carrierMergedDefault_notValidated_failed() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.isDefaultConnectionFailed.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
connectionsRepository.hasCarrierMergedConnection.value = true
connectionsRepository.defaultConnectionIsValidated.value = false
- yield()
assertThat(latest).isTrue()
-
- job.cancel()
}
/** Regression test for b/275076959. */
@Test
fun failedConnection_dataSwitchInSameGroup_notFailed() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.isDefaultConnectionFailed.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
connectionsRepository.mobileIsDefault.value = true
connectionsRepository.defaultConnectionIsValidated.value = true
+ runCurrent()
// WHEN there's a data change in the same subscription group
connectionsRepository.activeSubChangedInGroupEvent.emit(Unit)
connectionsRepository.defaultConnectionIsValidated.value = false
+ runCurrent()
// THEN the default connection is *not* marked as failed because of forced validation
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
fun failedConnection_dataSwitchNotInSameGroup_isFailed() =
testScope.runTest {
- var latestConnectionFailed: Boolean? = null
- val job =
- underTest.isDefaultConnectionFailed
- .onEach { latestConnectionFailed = it }
- .launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
+
connectionsRepository.mobileIsDefault.value = true
connectionsRepository.defaultConnectionIsValidated.value = true
+ runCurrent()
// WHEN the connection is invalidated without a activeSubChangedInGroupEvent
connectionsRepository.defaultConnectionIsValidated.value = false
// THEN the connection is immediately marked as failed
- assertThat(latestConnectionFailed).isTrue()
-
- job.cancel()
+ assertThat(latest).isTrue()
}
@Test
fun alwaysShowDataRatIcon_configHasTrue() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.alwaysShowDataRatIcon.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.alwaysShowDataRatIcon)
val config = MobileMappings.Config()
config.alwaysShowDataRatIcon = true
connectionsRepository.defaultDataSubRatConfig.value = config
- yield()
assertThat(latest).isTrue()
-
- job.cancel()
}
@Test
fun alwaysShowDataRatIcon_configHasFalse() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.alwaysShowDataRatIcon.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.alwaysShowDataRatIcon)
val config = MobileMappings.Config()
config.alwaysShowDataRatIcon = false
connectionsRepository.defaultDataSubRatConfig.value = config
- yield()
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
fun alwaysUseCdmaLevel_configHasTrue() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.alwaysUseCdmaLevel.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.alwaysUseCdmaLevel)
val config = MobileMappings.Config()
config.alwaysShowCdmaRssi = true
connectionsRepository.defaultDataSubRatConfig.value = config
- yield()
assertThat(latest).isTrue()
-
- job.cancel()
}
@Test
fun alwaysUseCdmaLevel_configHasFalse() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.alwaysUseCdmaLevel.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.alwaysUseCdmaLevel)
val config = MobileMappings.Config()
config.alwaysShowCdmaRssi = false
connectionsRepository.defaultDataSubRatConfig.value = config
- yield()
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
fun isSingleCarrier_zeroSubscriptions_false() =
testScope.runTest {
- var latest: Boolean? = true
- val job = underTest.isSingleCarrier.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isSingleCarrier)
connectionsRepository.setSubscriptions(emptyList())
- assertThat(latest).isFalse()
- job.cancel()
+ assertThat(latest).isFalse()
}
@Test
fun isSingleCarrier_oneSubscription_true() =
testScope.runTest {
- var latest: Boolean? = false
- val job = underTest.isSingleCarrier.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isSingleCarrier)
connectionsRepository.setSubscriptions(listOf(SUB_1))
- assertThat(latest).isTrue()
- job.cancel()
+ assertThat(latest).isTrue()
}
@Test
fun isSingleCarrier_twoSubscriptions_false() =
testScope.runTest {
- var latest: Boolean? = true
- val job = underTest.isSingleCarrier.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isSingleCarrier)
connectionsRepository.setSubscriptions(listOf(SUB_1, SUB_2))
- assertThat(latest).isFalse()
- job.cancel()
+ assertThat(latest).isFalse()
}
@Test
fun isSingleCarrier_updates() =
testScope.runTest {
- var latest: Boolean? = false
- val job = underTest.isSingleCarrier.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isSingleCarrier)
connectionsRepository.setSubscriptions(listOf(SUB_1))
assertThat(latest).isTrue()
connectionsRepository.setSubscriptions(listOf(SUB_1, SUB_2))
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
fun mobileIsDefault_mobileFalseAndCarrierMergedFalse_false() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.mobileIsDefault)
connectionsRepository.mobileIsDefault.value = false
connectionsRepository.hasCarrierMergedConnection.value = false
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
fun mobileIsDefault_mobileTrueAndCarrierMergedFalse_true() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.mobileIsDefault)
connectionsRepository.mobileIsDefault.value = true
connectionsRepository.hasCarrierMergedConnection.value = false
assertThat(latest).isTrue()
-
- job.cancel()
}
/** Regression test for b/272586234. */
@Test
fun mobileIsDefault_mobileFalseAndCarrierMergedTrue_true() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.mobileIsDefault)
connectionsRepository.mobileIsDefault.value = false
connectionsRepository.hasCarrierMergedConnection.value = true
assertThat(latest).isTrue()
-
- job.cancel()
}
@Test
fun mobileIsDefault_updatesWhenRepoUpdates() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.mobileIsDefault)
connectionsRepository.mobileIsDefault.value = true
assertThat(latest).isTrue()
@@ -762,8 +756,6 @@
connectionsRepository.hasCarrierMergedConnection.value = true
assertThat(latest).isTrue()
-
- job.cancel()
}
// The data switch tests are mostly testing the [forcingCellularValidation] flow, but that flow
@@ -772,95 +764,79 @@
@Test
fun dataSwitch_inSameGroup_validatedMatchesPreviousValue_expiresAfter2s() =
testScope.runTest {
- var latestConnectionFailed: Boolean? = null
- val job =
- underTest.isDefaultConnectionFailed
- .onEach { latestConnectionFailed = it }
- .launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
connectionsRepository.mobileIsDefault.value = true
connectionsRepository.defaultConnectionIsValidated.value = true
+ runCurrent()
// Trigger a data change in the same subscription group that's not yet validated
connectionsRepository.activeSubChangedInGroupEvent.emit(Unit)
connectionsRepository.defaultConnectionIsValidated.value = false
+ runCurrent()
// After 1s, the force validation bit is still present, so the connection is not marked
// as failed
advanceTimeBy(1000)
- assertThat(latestConnectionFailed).isFalse()
+ assertThat(latest).isFalse()
// After 2s, the force validation expires so the connection updates to failed
advanceTimeBy(1001)
- assertThat(latestConnectionFailed).isTrue()
-
- job.cancel()
+ assertThat(latest).isTrue()
}
@Test
fun dataSwitch_inSameGroup_notValidated_immediatelyMarkedAsFailed() =
testScope.runTest {
- var latestConnectionFailed: Boolean? = null
- val job =
- underTest.isDefaultConnectionFailed
- .onEach { latestConnectionFailed = it }
- .launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
connectionsRepository.mobileIsDefault.value = true
connectionsRepository.defaultConnectionIsValidated.value = false
+ runCurrent()
connectionsRepository.activeSubChangedInGroupEvent.emit(Unit)
- assertThat(latestConnectionFailed).isTrue()
-
- job.cancel()
+ assertThat(latest).isTrue()
}
@Test
fun dataSwitch_loseValidation_thenSwitchHappens_clearsForcedBit() =
testScope.runTest {
- var latestConnectionFailed: Boolean? = null
- val job =
- underTest.isDefaultConnectionFailed
- .onEach { latestConnectionFailed = it }
- .launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
// GIVEN the network starts validated
connectionsRepository.mobileIsDefault.value = true
connectionsRepository.defaultConnectionIsValidated.value = true
+ runCurrent()
// WHEN a data change happens in the same group
connectionsRepository.activeSubChangedInGroupEvent.emit(Unit)
// WHEN the validation bit is lost
connectionsRepository.defaultConnectionIsValidated.value = false
+ runCurrent()
// WHEN another data change happens in the same group
connectionsRepository.activeSubChangedInGroupEvent.emit(Unit)
// THEN the forced validation bit is still used...
- assertThat(latestConnectionFailed).isFalse()
+ assertThat(latest).isFalse()
advanceTimeBy(1000)
- assertThat(latestConnectionFailed).isFalse()
+ assertThat(latest).isFalse()
// ... but expires after 2s
advanceTimeBy(1001)
- assertThat(latestConnectionFailed).isTrue()
-
- job.cancel()
+ assertThat(latest).isTrue()
}
@Test
fun dataSwitch_whileAlreadyForcingValidation_resetsClock() =
testScope.runTest {
- var latestConnectionFailed: Boolean? = null
- val job =
- underTest.isDefaultConnectionFailed
- .onEach { latestConnectionFailed = it }
- .launchIn(this)
+ val latest by collectLastValue(underTest.isDefaultConnectionFailed)
connectionsRepository.mobileIsDefault.value = true
connectionsRepository.defaultConnectionIsValidated.value = true
+ runCurrent()
connectionsRepository.activeSubChangedInGroupEvent.emit(Unit)
@@ -869,44 +845,37 @@
// WHEN another change in same group event happens
connectionsRepository.activeSubChangedInGroupEvent.emit(Unit)
connectionsRepository.defaultConnectionIsValidated.value = false
+ runCurrent()
// THEN the forced validation remains for exactly 2 more seconds from now
// 1.500s from second event
advanceTimeBy(1500)
- assertThat(latestConnectionFailed).isFalse()
+ assertThat(latest).isFalse()
// 2.001s from the second event
advanceTimeBy(501)
- assertThat(latestConnectionFailed).isTrue()
-
- job.cancel()
+ assertThat(latest).isTrue()
}
@Test
fun isForceHidden_repoHasMobileHidden_true() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.isForceHidden.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isForceHidden)
connectivityRepository.setForceHiddenIcons(setOf(ConnectivitySlot.MOBILE))
assertThat(latest).isTrue()
-
- job.cancel()
}
@Test
fun isForceHidden_repoDoesNotHaveMobileHidden_false() =
testScope.runTest {
- var latest: Boolean? = null
- val job = underTest.isForceHidden.onEach { latest = it }.launchIn(this)
+ val latest by collectLastValue(underTest.isForceHidden)
connectivityRepository.setForceHiddenIcons(setOf(ConnectivitySlot.WIFI))
assertThat(latest).isFalse()
-
- job.cancel()
}
@Test
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index fe99ffd..a7a7f4e 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -2649,10 +2649,13 @@
userState.mComponentNameToServiceMap;
boolean isUnlockingOrUnlocked = mUmi.isUserUnlockingOrUnlocked(userState.mUserId);
+ // Store the list of installed services.
+ mTempComponentNameSet.clear();
for (int i = 0, count = userState.mInstalledServices.size(); i < count; i++) {
AccessibilityServiceInfo installedService = userState.mInstalledServices.get(i);
ComponentName componentName = ComponentName.unflattenFromString(
installedService.getId());
+ mTempComponentNameSet.add(componentName);
AccessibilityServiceConnection service = componentNameToServiceMap.get(componentName);
@@ -2712,6 +2715,25 @@
audioManager.setAccessibilityServiceUids(mTempIntArray);
}
mActivityTaskManagerService.setAccessibilityServiceUids(mTempIntArray);
+
+ // If any services have been removed, remove them from the enabled list and the touch
+ // exploration granted list.
+ boolean anyServiceRemoved =
+ userState.mEnabledServices.removeIf((comp) -> !mTempComponentNameSet.contains(comp))
+ || userState.mTouchExplorationGrantedServices.removeIf(
+ (comp) -> !mTempComponentNameSet.contains(comp));
+ if (anyServiceRemoved) {
+ // Update the enabled services setting.
+ persistComponentNamesToSettingLocked(
+ Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
+ userState.mEnabledServices,
+ userState.mUserId);
+ // Update the touch exploration granted services setting.
+ persistComponentNamesToSettingLocked(
+ Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
+ userState.mTouchExplorationGrantedServices,
+ userState.mUserId);
+ }
updateAccessibilityEnabledSettingLocked(userState);
}
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
index e1291e5..3ed32fc 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
@@ -33,8 +33,10 @@
import android.annotation.Nullable;
import android.app.ActivityManagerInternal;
import android.content.ComponentName;
+import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.graphics.Rect;
import android.metrics.LogMaker;
@@ -251,6 +253,31 @@
@Override // from PerUserSystemService
protected ServiceInfo newServiceInfoLocked(@NonNull ComponentName serviceComponent)
throws NameNotFoundException {
+ final List<ResolveInfo> resolveInfos =
+ getContext().getPackageManager().queryIntentServicesAsUser(
+ new Intent(AutofillService.SERVICE_INTERFACE),
+ // The MATCH_INSTANT flag is added because curret autofill CTS module is
+ // defined in one apk, which makes the test autofill service installed in a
+ // instant app when the CTS tests are running in instant app mode.
+ // TODO: Remove MATCH_INSTANT flag after completing refactoring the CTS module
+ // to make the test autofill service a separate apk.
+ PackageManager.GET_META_DATA | PackageManager.MATCH_INSTANT,
+ mUserId);
+ boolean serviceHasAutofillIntentFilter = false;
+ for (ResolveInfo resolveInfo : resolveInfos) {
+ final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+ if (serviceInfo.getComponentName().equals(serviceComponent)) {
+ serviceHasAutofillIntentFilter = true;
+ break;
+ }
+ }
+ if (!serviceHasAutofillIntentFilter) {
+ Slog.w(TAG,
+ "Autofill service from '" + serviceComponent.getPackageName() + "' does"
+ + "not have intent filter " + AutofillService.SERVICE_INTERFACE);
+ throw new SecurityException("Service does not declare intent filter "
+ + AutofillService.SERVICE_INTERFACE);
+ }
mInfo = new AutofillServiceInfo(getContext(), serviceComponent, mUserId);
return mInfo.getServiceInfo();
}
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index f1776f4..f1d3584 100644
--- a/services/core/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -1986,11 +1986,9 @@
// the status bar should be totally disabled, the calls below will
// have no effect until the device is unlocked.
if (mStatusBarManager != null) {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- if (mCarModeEnabled) {
- info.setNotificationTickerDisabled(true);
- }
- mStatusBarManager.requestDisabledComponent(info, "adjustStatusBarCarModeLocked");
+ mStatusBarManager.disable(mCarModeEnabled
+ ? StatusBarManager.DISABLE_NOTIFICATION_TICKER
+ : StatusBarManager.DISABLE_NONE);
}
if (mNotificationManager == null) {
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index 130a733..daa4a7a 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -3660,6 +3660,11 @@
// Strip auth token from result.
result.remove(AccountManager.KEY_AUTHTOKEN);
+ if (!checkKeyIntent(Binder.getCallingUid(), result)) {
+ onError(AccountManager.ERROR_CODE_INVALID_RESPONSE,
+ "invalid intent in bundle returned");
+ return;
+ }
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG,
@@ -5263,6 +5268,11 @@
} else {
if (mStripAuthTokenFromResult) {
result.remove(AccountManager.KEY_AUTHTOKEN);
+ if (!checkKeyIntent(Binder.getCallingUid(), result)) {
+ onError(AccountManager.ERROR_CODE_INVALID_RESPONSE,
+ "invalid intent in bundle returned");
+ return;
+ }
}
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, getClass().getSimpleName()
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index 31328ae..0a5ba0f 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -3313,7 +3313,13 @@
}
final int curSchedGroup = state.getCurrentSchedulingGroup();
- if (state.getSetSchedGroup() != curSchedGroup) {
+ if (app.getWaitingToKill() != null && app.mReceivers.numberOfCurReceivers() == 0
+ && ActivityManager.isProcStateBackground(state.getCurProcState())
+ && !state.hasStartedServices()) {
+ app.killLocked(app.getWaitingToKill(), ApplicationExitInfo.REASON_USER_REQUESTED,
+ ApplicationExitInfo.SUBREASON_REMOVE_TASK, true);
+ success = false;
+ } else if (state.getSetSchedGroup() != curSchedGroup) {
int oldSchedGroup = state.getSetSchedGroup();
state.setSetSchedGroup(curSchedGroup);
if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mService.mCurOomAdjUid == app.uid) {
@@ -3321,98 +3327,90 @@
+ " to " + curSchedGroup + ": " + state.getAdjType();
reportOomAdjMessageLocked(TAG_OOM_ADJ, msg);
}
- if (app.getWaitingToKill() != null && app.mReceivers.numberOfCurReceivers() == 0
- && ActivityManager.isProcStateBackground(state.getSetProcState())
- && !state.hasStartedServices()) {
- app.killLocked(app.getWaitingToKill(), ApplicationExitInfo.REASON_USER_REQUESTED,
- ApplicationExitInfo.SUBREASON_REMOVE_TASK, true);
- success = false;
- } else {
- int processGroup;
- switch (curSchedGroup) {
- case SCHED_GROUP_BACKGROUND:
- processGroup = THREAD_GROUP_BACKGROUND;
- break;
- case SCHED_GROUP_TOP_APP:
- case SCHED_GROUP_TOP_APP_BOUND:
- processGroup = THREAD_GROUP_TOP_APP;
- break;
- case SCHED_GROUP_RESTRICTED:
- processGroup = THREAD_GROUP_RESTRICTED;
- break;
- default:
- processGroup = THREAD_GROUP_DEFAULT;
- break;
- }
- mProcessGroupHandler.sendMessage(mProcessGroupHandler.obtainMessage(
- 0 /* unused */, app.getPid(), processGroup, app.processName));
- try {
- final int renderThreadTid = app.getRenderThreadTid();
- if (curSchedGroup == SCHED_GROUP_TOP_APP) {
- // do nothing if we already switched to RT
- if (oldSchedGroup != SCHED_GROUP_TOP_APP) {
- app.getWindowProcessController().onTopProcChanged();
- if (mService.mUseFifoUiScheduling) {
- // Switch UI pipeline for app to SCHED_FIFO
- state.setSavedPriority(Process.getThreadPriority(app.getPid()));
- mService.scheduleAsFifoPriority(app.getPid(), true);
- if (renderThreadTid != 0) {
- mService.scheduleAsFifoPriority(renderThreadTid,
- /* suppressLogs */true);
- if (DEBUG_OOM_ADJ) {
- Slog.d("UI_FIFO", "Set RenderThread (TID " +
- renderThreadTid + ") to FIFO");
- }
- } else {
- if (DEBUG_OOM_ADJ) {
- Slog.d("UI_FIFO", "Not setting RenderThread TID");
- }
- }
- } else {
- // Boost priority for top app UI and render threads
- setThreadPriority(app.getPid(), THREAD_PRIORITY_TOP_APP_BOOST);
- if (renderThreadTid != 0) {
- try {
- setThreadPriority(renderThreadTid,
- THREAD_PRIORITY_TOP_APP_BOOST);
- } catch (IllegalArgumentException e) {
- // thread died, ignore
- }
- }
- }
- }
- } else if (oldSchedGroup == SCHED_GROUP_TOP_APP
- && curSchedGroup != SCHED_GROUP_TOP_APP) {
+ int processGroup;
+ switch (curSchedGroup) {
+ case SCHED_GROUP_BACKGROUND:
+ processGroup = THREAD_GROUP_BACKGROUND;
+ break;
+ case SCHED_GROUP_TOP_APP:
+ case SCHED_GROUP_TOP_APP_BOUND:
+ processGroup = THREAD_GROUP_TOP_APP;
+ break;
+ case SCHED_GROUP_RESTRICTED:
+ processGroup = THREAD_GROUP_RESTRICTED;
+ break;
+ default:
+ processGroup = THREAD_GROUP_DEFAULT;
+ break;
+ }
+ mProcessGroupHandler.sendMessage(mProcessGroupHandler.obtainMessage(
+ 0 /* unused */, app.getPid(), processGroup, app.processName));
+ try {
+ final int renderThreadTid = app.getRenderThreadTid();
+ if (curSchedGroup == SCHED_GROUP_TOP_APP) {
+ // do nothing if we already switched to RT
+ if (oldSchedGroup != SCHED_GROUP_TOP_APP) {
app.getWindowProcessController().onTopProcChanged();
if (mService.mUseFifoUiScheduling) {
- try {
- // Reset UI pipeline to SCHED_OTHER
- setThreadScheduler(app.getPid(), SCHED_OTHER, 0);
- setThreadPriority(app.getPid(), state.getSavedPriority());
- if (renderThreadTid != 0) {
- setThreadScheduler(renderThreadTid,
- SCHED_OTHER, 0);
+ // Switch UI pipeline for app to SCHED_FIFO
+ state.setSavedPriority(Process.getThreadPriority(app.getPid()));
+ mService.scheduleAsFifoPriority(app.getPid(), true);
+ if (renderThreadTid != 0) {
+ mService.scheduleAsFifoPriority(renderThreadTid,
+ /* suppressLogs */true);
+ if (DEBUG_OOM_ADJ) {
+ Slog.d("UI_FIFO", "Set RenderThread (TID "
+ + renderThreadTid + ") to FIFO");
}
- } catch (IllegalArgumentException e) {
- Slog.w(TAG,
- "Failed to set scheduling policy, thread does not exist:\n"
- + e);
- } catch (SecurityException e) {
- Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e);
+ } else {
+ if (DEBUG_OOM_ADJ) {
+ Slog.d("UI_FIFO", "Not setting RenderThread TID");
+ }
}
} else {
- // Reset priority for top app UI and render threads
- setThreadPriority(app.getPid(), 0);
+ // Boost priority for top app UI and render threads
+ setThreadPriority(app.getPid(), THREAD_PRIORITY_TOP_APP_BOOST);
+ if (renderThreadTid != 0) {
+ try {
+ setThreadPriority(renderThreadTid,
+ THREAD_PRIORITY_TOP_APP_BOOST);
+ } catch (IllegalArgumentException e) {
+ // thread died, ignore
+ }
+ }
}
+ }
+ } else if (oldSchedGroup == SCHED_GROUP_TOP_APP
+ && curSchedGroup != SCHED_GROUP_TOP_APP) {
+ app.getWindowProcessController().onTopProcChanged();
+ if (mService.mUseFifoUiScheduling) {
+ try {
+ // Reset UI pipeline to SCHED_OTHER
+ setThreadScheduler(app.getPid(), SCHED_OTHER, 0);
+ setThreadPriority(app.getPid(), state.getSavedPriority());
+ if (renderThreadTid != 0) {
+ setThreadScheduler(renderThreadTid,
+ SCHED_OTHER, 0);
+ }
+ } catch (IllegalArgumentException e) {
+ Slog.w(TAG,
+ "Failed to set scheduling policy, thread does not exist:\n"
+ + e);
+ } catch (SecurityException e) {
+ Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e);
+ }
+ } else {
+ // Reset priority for top app UI and render threads
+ setThreadPriority(app.getPid(), 0);
+ }
- if (renderThreadTid != 0) {
- setThreadPriority(renderThreadTid, THREAD_PRIORITY_DISPLAY);
- }
+ if (renderThreadTid != 0) {
+ setThreadPriority(renderThreadTid, THREAD_PRIORITY_DISPLAY);
}
- } catch (Exception e) {
- if (DEBUG_ALL) {
- Slog.w(TAG, "Failed setting thread priority of " + app.getPid(), e);
- }
+ }
+ } catch (Exception e) {
+ if (DEBUG_ALL) {
+ Slog.w(TAG, "Failed setting thread priority of " + app.getPid(), e);
}
}
}
diff --git a/services/core/java/com/android/server/biometrics/BiometricDanglingReceiver.java b/services/core/java/com/android/server/biometrics/BiometricDanglingReceiver.java
index 3e8acee..7cf2d30 100644
--- a/services/core/java/com/android/server/biometrics/BiometricDanglingReceiver.java
+++ b/services/core/java/com/android/server/biometrics/BiometricDanglingReceiver.java
@@ -16,6 +16,7 @@
package com.android.server.biometrics;
import static android.content.Intent.ACTION_CLOSE_SYSTEM_DIALOGS;
+import static android.content.Intent.FLAG_RECEIVER_FOREGROUND;
import android.annotation.NonNull;
import android.content.BroadcastReceiver;
@@ -63,7 +64,7 @@
intentFilter.addAction(ACTION_FACE_RE_ENROLL_LAUNCH);
intentFilter.addAction(ACTION_FACE_RE_ENROLL_DISMISS);
}
- context.registerReceiver(this, intentFilter);
+ context.registerReceiver(this, intentFilter, Context.RECEIVER_NOT_EXPORTED);
}
@Override
@@ -84,7 +85,8 @@
}
private void launchBiometricEnrollActivity(Context context, String action) {
- context.sendBroadcast(new Intent(ACTION_CLOSE_SYSTEM_DIALOGS));
+ context.sendBroadcast(
+ new Intent(ACTION_CLOSE_SYSTEM_DIALOGS).setFlags(FLAG_RECEIVER_FOREGROUND));
final Intent intent = new Intent(action);
intent.setPackage(SETTINGS_PACKAGE);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
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 70913c3..cd1d799 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
@@ -675,6 +675,7 @@
// TODO: switch this back to SecurityException
Slog.wtf(TAG, "Not allowed to modify non-dynamic permission "
+ permName);
+ return;
}
mRegistry.removePermission(permName);
}
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 0b48a75..6e95cbc 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -20,9 +20,7 @@
import static android.Manifest.permission.INTERACT_ACROSS_USERS;
import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS;
-import static android.app.StatusBarManager.DISABLE2_MASK;
import static android.app.StatusBarManager.DISABLE2_NOTIFICATION_SHADE;
-import static android.app.StatusBarManager.DISABLE_MASK;
import static android.app.StatusBarManager.NAV_BAR_MODE_DEFAULT;
import static android.app.StatusBarManager.NAV_BAR_MODE_KIDS;
import static android.app.StatusBarManager.NavBarMode;
@@ -222,9 +220,8 @@
int what1;
int what2;
IBinder token;
- private String mReason;
- DisableRecord(int userId, IBinder token) {
+ public DisableRecord(int userId, IBinder token) {
this.userId = userId;
this.token = token;
try {
@@ -237,12 +234,12 @@
@Override
public void binderDied() {
Slog.i(TAG, "binder died for pkg=" + pkg);
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- disableForUser(info, token, pkg, userId, "Binder Died");
+ disableForUser(0, token, pkg, userId);
+ disable2ForUser(0, token, pkg, userId);
token.unlinkToDeath(this, 0);
}
- public void setFlags(int what, int which, String pkg, String reason) {
+ public void setFlags(int what, int which, String pkg) {
switch (which) {
case 1:
what1 = what;
@@ -256,7 +253,6 @@
break;
}
this.pkg = pkg;
- this.mReason = reason;
}
public int getFlags(int which) {
@@ -275,8 +271,8 @@
@Override
public String toString() {
- return String.format("userId=%d what1=0x%08X what2=0x%08X pkg=%s token=%s reason=%s",
- userId, what1, what2, pkg, token, mReason);
+ return String.format("userId=%d what1=0x%08X what2=0x%08X pkg=%s token=%s",
+ userId, what1, what2, pkg, token);
}
}
@@ -1173,59 +1169,57 @@
return mTracingEnabled;
}
- /**
- * @deprecated
- * Disable some features in the status bar.
- *
- * This method is deprecated and callers should use
- * {@link #disableForUser(StatusBarManager.DisableInfo, IBinder, String, int, String)}
- *
- * @hide
- */
- @Deprecated
+ // TODO(b/117478341): make it aware of multi-display if needed.
@Override
public void disable(int what, IBinder token, String pkg) {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(what & DISABLE_MASK,
- what & DISABLE2_MASK);
- disableForUser(info, token, pkg, mCurrentUserId, null);
- }
-
- /**
- * @deprecated
- * Disable some features in the status bar.
- *
- * This method is deprecated and callers should use
- * {@link #disableForUser(StatusBarManager.DisableInfo, IBinder, String, int, String)}
- *
- * @hide
- */
- @Deprecated
- @Override
- public void disable2(int what, IBinder token, String pkg) {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(what & DISABLE_MASK,
- what & DISABLE2_MASK);
- disableForUser(info, token, pkg, mCurrentUserId, null);
+ disableForUser(what, token, pkg, mCurrentUserId);
}
// TODO(b/117478341): make it aware of multi-display if needed.
@Override
- public void disableForUser(StatusBarManager.DisableInfo disableInfo, IBinder token, String pkg,
- int userId, String reason) {
+ public void disableForUser(int what, IBinder token, String pkg, int userId) {
enforceStatusBar();
+
synchronized (mLock) {
- Pair<Integer, Integer> flags = disableInfo.toFlags();
- disableLocked(DEFAULT_DISPLAY, userId, flags.first, token, pkg, 1, reason);
- disableLocked(DEFAULT_DISPLAY, userId, flags.second, token, pkg, 2, reason);
+ disableLocked(DEFAULT_DISPLAY, userId, what, token, pkg, 1);
+ }
+ }
+
+ // TODO(b/117478341): make it aware of multi-display if needed.
+ /**
+ * Disable additional status bar features. Pass the bitwise-or of the DISABLE2_* flags.
+ * To re-enable everything, pass {@link #DISABLE2_NONE}.
+ *
+ * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags.
+ */
+ @Override
+ public void disable2(int what, IBinder token, String pkg) {
+ disable2ForUser(what, token, pkg, mCurrentUserId);
+ }
+
+ // TODO(b/117478341): make it aware of multi-display if needed.
+ /**
+ * Disable additional status bar features for a given user. Pass the bitwise-or of the
+ * DISABLE2_* flags. To re-enable everything, pass {@link #DISABLE_NONE}.
+ *
+ * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags.
+ */
+ @Override
+ public void disable2ForUser(int what, IBinder token, String pkg, int userId) {
+ enforceStatusBar();
+
+ synchronized (mLock) {
+ disableLocked(DEFAULT_DISPLAY, userId, what, token, pkg, 2);
}
}
private void disableLocked(int displayId, int userId, int what, IBinder token, String pkg,
- int whichFlag, String reason) {
+ int whichFlag) {
// It's important that the the callback and the call to mBar get done
// in the same order when multiple threads are calling this function
// so they are paired correctly. The messages on the handler will be
// handled in the order they were enqueued, but will be outside the lock.
- manageDisableListLocked(userId, what, token, pkg, whichFlag, reason);
+ manageDisableListLocked(userId, what, token, pkg, whichFlag);
// Ensure state for the current user is applied, even if passed a non-current user.
final int net1 = gatherDisableActionsLocked(mCurrentUserId, 1);
@@ -1374,7 +1368,7 @@
// also allows calls from window manager which is in this process.
enforceStatusBarService();
- final int unknownFlags = flags & ~DISABLE_MASK;
+ final int unknownFlags = flags & ~StatusBarManager.DISABLE_MASK;
if (unknownFlags != 0) {
Slog.e(TAG, "Unknown disable flags: 0x" + Integer.toHexString(unknownFlags),
new RuntimeException());
@@ -1383,8 +1377,7 @@
if (SPEW) Slog.d(TAG, "setDisableFlags(0x" + Integer.toHexString(flags) + ")");
synchronized (mLock) {
- disableLocked(displayId, mCurrentUserId, flags, mSysUiVisToken, cause, 1,
- "setDisableFlags");
+ disableLocked(displayId, mCurrentUserId, flags, mSysUiVisToken, cause, 1);
}
}
@@ -2439,8 +2432,7 @@
// ================================================================================
// lock on mDisableRecords
- void manageDisableListLocked(int userId, int what, IBinder token, String pkg, int which,
- String reason) {
+ void manageDisableListLocked(int userId, int what, IBinder token, String pkg, int which) {
if (SPEW) {
Slog.d(TAG, "manageDisableList userId=" + userId
+ " what=0x" + Integer.toHexString(what) + " pkg=" + pkg);
@@ -2462,7 +2454,7 @@
// Update existing record
if (record != null) {
- record.setFlags(what, which, pkg, reason);
+ record.setFlags(what, which, pkg);
if (record.isEmpty()) {
mDisableRecords.remove(i);
record.token.unlinkToDeath(record, 0);
@@ -2472,7 +2464,7 @@
// Record doesn't exist, so we create a new one
record = new DisableRecord(userId, token);
- record.setFlags(what, which, pkg, reason);
+ record.setFlags(what, which, pkg);
mDisableRecords.add(record);
}
diff --git a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
index adb55b4..d6bf02f 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
@@ -16,6 +16,8 @@
import static android.app.StatusBarManager.DEFAULT_SETUP_DISABLE2_FLAGS;
import static android.app.StatusBarManager.DEFAULT_SETUP_DISABLE_FLAGS;
+import static android.app.StatusBarManager.DISABLE2_NONE;
+import static android.app.StatusBarManager.DISABLE_NONE;
import android.app.StatusBarManager.DisableInfo;
import android.content.ComponentName;
@@ -25,6 +27,7 @@
import android.os.RemoteException;
import android.os.ShellCommand;
import android.service.quicksettings.TileService;
+import android.util.Pair;
import java.io.PrintWriter;
@@ -141,17 +144,25 @@
String arg = getNextArgRequired();
String pkg = mContext.getPackageName();
boolean disable = Boolean.parseBoolean(arg);
- int userId = Binder.getCallingUserHandle().getIdentifier();
- DisableInfo info = disable ? new DisableInfo(DEFAULT_SETUP_DISABLE_FLAGS,
- DEFAULT_SETUP_DISABLE2_FLAGS) : new DisableInfo();
- mInterface.disableForUser(info, sToken, pkg, userId, "runDisableForSetup");
+
+ if (disable) {
+ mInterface.disable(DEFAULT_SETUP_DISABLE_FLAGS, sToken, pkg);
+ mInterface.disable2(DEFAULT_SETUP_DISABLE2_FLAGS, sToken, pkg);
+ } else {
+ mInterface.disable(DISABLE_NONE, sToken, pkg);
+ mInterface.disable2(DISABLE2_NONE, sToken, pkg);
+ }
+
return 0;
}
private int runSendDisableFlag() {
String pkg = mContext.getPackageName();
- int userId = Binder.getCallingUserHandle().getIdentifier();
+ int disable1 = DISABLE_NONE;
+ int disable2 = DISABLE2_NONE;
+
DisableInfo info = new DisableInfo();
+
String arg = getNextArg();
while (arg != null) {
switch (arg) {
@@ -159,7 +170,7 @@
info.setSearchDisabled(true);
break;
case "home":
- info.setNavigationHomeDisabled(true);
+ info.setNagivationHomeDisabled(true);
break;
case "recents":
info.setRecentsDisabled(true);
@@ -186,7 +197,10 @@
arg = getNextArg();
}
- mInterface.disableForUser(info, sToken, pkg, userId, "Shell Commands");
+ Pair<Integer, Integer> flagPair = info.toFlags();
+
+ mInterface.disable(flagPair.first, sToken, pkg);
+ mInterface.disable2(flagPair.second, sToken, pkg);
return 0;
}
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 130baff..8b927a6 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -10808,8 +10808,10 @@
final Rect filledContainerBounds = mIsInFixedOrientationOrAspectRatioLetterbox
? letterboxedContainerBounds
: task != null ? task.getBounds() : display.getBounds();
- final int filledContainerRotation = task != null
- ? task.getConfiguration().windowConfiguration.getRotation()
+ final boolean useActivityRotation = container.hasFixedRotationTransform()
+ && mIsInFixedOrientationOrAspectRatioLetterbox;
+ final int filledContainerRotation = useActivityRotation
+ ? container.getWindowConfiguration().getRotation()
: display.getConfiguration().windowConfiguration.getRotation();
final Point dimensions = getRotationZeroDimensions(
filledContainerBounds, filledContainerRotation);
diff --git a/services/core/java/com/android/server/wm/BackNavigationController.java b/services/core/java/com/android/server/wm/BackNavigationController.java
index e155126..cd7f73c 100644
--- a/services/core/java/com/android/server/wm/BackNavigationController.java
+++ b/services/core/java/com/android/server/wm/BackNavigationController.java
@@ -423,7 +423,6 @@
// Searching previous
final ActivityRecord prevActivity = currentTask.getActivity((below) -> !below.finishing,
currentActivity, false /*includeBoundary*/, true /*traverseTopToBottom*/);
-
final TaskFragment currTF = currentActivity.getTaskFragment();
if (currTF != null && currTF.asTask() == null) {
// The currentActivity is embedded, search for the candidate previous activities.
@@ -432,13 +431,34 @@
outPrevActivities.add(prevActivity);
return true;
}
- if (currTF.getAdjacentTaskFragment() != null) {
- // The two TFs are adjacent (visually displayed side-by-side), search if any
- // activity below the lowest one
- // If companion, those two TF will be closed together.
- if (currTF.getCompanionTaskFragment() != null) {
+ if (currTF.getAdjacentTaskFragment() == null) {
+ final TaskFragment nextTF = findNextTaskFragment(currentTask, currTF);
+ if (isSecondCompanionToFirst(currTF, nextTF)) {
+ // TF is isStacked, search bottom activity from companion TF.
+ //
+ // Sample hierarchy: search for underPrevious if any.
+ // Current TF
+ // Companion TF (bottomActivityInCompanion)
+ // Bottom Activity not inside companion TF (underPrevious)
+ // find bottom activity in Companion TF.
+ final ActivityRecord bottomActivityInCompanion = nextTF.getActivity(
+ (below) -> !below.finishing, false /* traverseTopToBottom */);
+ final ActivityRecord underPrevious = currentTask.getActivity(
+ (below) -> !below.finishing, bottomActivityInCompanion,
+ false /*includeBoundary*/, true /*traverseTopToBottom*/);
+ if (underPrevious != null) {
+ outPrevActivities.add(underPrevious);
+ addPreviousAdjacentActivityIfExist(underPrevious, outPrevActivities);
+ }
+ return true;
+ }
+ } else {
+ // If adjacent TF has companion to current TF, those two TF will be closed together.
+ final TaskFragment adjacentTF = currTF.getAdjacentTaskFragment();
+ if (isSecondCompanionToFirst(currTF, adjacentTF)) {
+ // The two TFs are adjacent (visually displayed side-by-side), search if any
+ // activity below the lowest one.
final WindowContainer commonParent = currTF.getParent();
- final TaskFragment adjacentTF = currTF.getAdjacentTaskFragment();
final TaskFragment lowerTF = commonParent.mChildren.indexOf(currTF)
< commonParent.mChildren.indexOf(adjacentTF)
? currTF : adjacentTF;
@@ -452,25 +472,6 @@
// Unable to predict if no companion, it can only close current activity and make
// prev Activity full screened.
return false;
- } else if (currTF.getCompanionTaskFragment() != null) {
- // TF is isStacked, search bottom activity from companion TF.
- //
- // Sample hierarchy: search for underPrevious if any.
- // Current TF
- // Companion TF (bottomActivityInCompanion)
- // Bottom Activity not inside companion TF (underPrevious)
- final TaskFragment companionTF = currTF.getCompanionTaskFragment();
- // find bottom activity in Companion TF.
- final ActivityRecord bottomActivityInCompanion = companionTF.getActivity(
- (below) -> !below.finishing, false /* traverseTopToBottom */);
- final ActivityRecord underPrevious = currentTask.getActivity(
- (below) -> !below.finishing, bottomActivityInCompanion,
- false /*includeBoundary*/, true /*traverseTopToBottom*/);
- if (underPrevious != null) {
- outPrevActivities.add(underPrevious);
- addPreviousAdjacentActivityIfExist(underPrevious, outPrevActivities);
- }
- return true;
}
}
@@ -485,6 +486,24 @@
return true;
}
+ private static TaskFragment findNextTaskFragment(@NonNull Task currentTask,
+ @NonNull TaskFragment topTF) {
+ final int topIndex = currentTask.mChildren.indexOf(topTF);
+ if (topIndex <= 0) {
+ return null;
+ }
+ final WindowContainer next = currentTask.mChildren.get(topIndex - 1);
+ return next.asTaskFragment();
+ }
+
+ /**
+ * Whether the second TF has set companion to first TF.
+ * When set, the second TF will be removed by organizer if the first TF is removed.
+ */
+ private static boolean isSecondCompanionToFirst(TaskFragment first, TaskFragment second) {
+ return second != null && second.getCompanionTaskFragment() == first;
+ }
+
private static void addPreviousAdjacentActivityIfExist(@NonNull ActivityRecord prevActivity,
@NonNull ArrayList<ActivityRecord> outPrevActivities) {
final TaskFragment prevTF = prevActivity.getTaskFragment();
diff --git a/services/core/java/com/android/server/wm/LetterboxConfiguration.java b/services/core/java/com/android/server/wm/LetterboxConfiguration.java
index ce1a72d..b5af806 100644
--- a/services/core/java/com/android/server/wm/LetterboxConfiguration.java
+++ b/services/core/java/com/android/server/wm/LetterboxConfiguration.java
@@ -19,6 +19,7 @@
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
+import android.annotation.DimenRes;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -266,10 +267,10 @@
private boolean mIsDisplayAspectRatioEnabledForFixedOrientationLetterbox;
// Supplier for the value in pixel to consider when detecting vertical thin letterboxing
- private final IntSupplier mThinLetterboxWidthFn;
+ private final DimenPxIntSupplier mThinLetterboxWidthPxSupplier;
// Supplier for the value in pixel to consider when detecting horizontal thin letterboxing
- private final IntSupplier mThinLetterboxHeightFn;
+ private final DimenPxIntSupplier mThinLetterboxHeightPxSupplier;
// Allows to enable letterboxing strategy for translucent activities ignoring flags.
private boolean mTranslucentLetterboxingOverrideEnabled;
@@ -307,6 +308,34 @@
// Flags dynamically updated with {@link android.provider.DeviceConfig}.
@NonNull private final SynchedDeviceConfig mDeviceConfig;
+ // Cached version of IntSupplier customised to evaluate new dimen in pixels
+ // when density changes
+ private static class DimenPxIntSupplier implements IntSupplier {
+
+ @NonNull
+ private final Context mContext;
+
+ private final int mResourceId;
+
+ private float mLastDensity = Float.MIN_VALUE;
+ private int mValue = 0;
+
+ private DimenPxIntSupplier(@NonNull Context context, @DimenRes int resourceId) {
+ mContext = context;
+ mResourceId = resourceId;
+ }
+
+ @Override
+ public int getAsInt() {
+ final float newDensity = mContext.getResources().getDisplayMetrics().density;
+ if (newDensity != mLastDensity) {
+ mLastDensity = newDensity;
+ mValue = mContext.getResources().getDimensionPixelSize(mResourceId);
+ }
+ return mValue;
+ }
+ }
+
LetterboxConfiguration(@NonNull final Context systemUiContext) {
this(systemUiContext, new LetterboxConfigurationPersister(
() -> readLetterboxHorizontalReachabilityPositionFromConfig(
@@ -364,9 +393,10 @@
R.bool.config_isWindowManagerCameraCompatSplitScreenAspectRatioEnabled);
mIsPolicyForIgnoringRequestedOrientationEnabled = mContext.getResources().getBoolean(
R.bool.config_letterboxIsPolicyForIgnoringRequestedOrientationEnabled);
- mThinLetterboxWidthFn = () -> mContext.getResources().getDimensionPixelSize(
+
+ mThinLetterboxWidthPxSupplier = new DimenPxIntSupplier(mContext,
R.dimen.config_letterboxThinLetterboxWidthDp);
- mThinLetterboxHeightFn = () -> mContext.getResources().getDimensionPixelSize(
+ mThinLetterboxHeightPxSupplier = new DimenPxIntSupplier(mContext,
R.dimen.config_letterboxThinLetterboxHeightDp);
mLetterboxConfigurationPersister = letterboxConfigurationPersister;
@@ -1144,7 +1174,7 @@
* is the maximum value for (W - w) / 2 to be considered for a thin letterboxed app.
*/
int getThinLetterboxWidthPx() {
- return mThinLetterboxWidthFn.getAsInt();
+ return mThinLetterboxWidthPxSupplier.getAsInt();
}
/**
@@ -1153,7 +1183,7 @@
* value for (H - h) / 2 to be considered for a thin letterboxed app.
*/
int getThinLetterboxHeightPx() {
- return mThinLetterboxHeightFn.getAsInt();
+ return mThinLetterboxHeightPxSupplier.getAsInt();
}
/**
diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java
index 086b3f0..eea8b6a 100644
--- a/services/core/java/com/android/server/wm/LetterboxUiController.java
+++ b/services/core/java/com/android/server/wm/LetterboxUiController.java
@@ -1377,7 +1377,8 @@
}
final boolean shouldShowLetterboxUi =
- (mActivityRecord.isInLetterboxAnimation() || isSurfaceVisible(mainWindow))
+ (mActivityRecord.isInLetterboxAnimation() || mActivityRecord.isVisible()
+ || mActivityRecord.isVisibleRequested())
&& mainWindow.areAppWindowBoundsLetterboxed()
// Check for FLAG_SHOW_WALLPAPER explicitly instead of using
// WindowContainer#showWallpaper because the later will return true when this
@@ -1389,12 +1390,6 @@
return shouldShowLetterboxUi;
}
- @VisibleForTesting
- boolean isSurfaceVisible(WindowState mainWindow) {
- return mainWindow.isOnScreen() && (mActivityRecord.isVisible()
- || mActivityRecord.isVisibleRequested());
- }
-
private Color getLetterboxBackgroundColor() {
final WindowState w = mActivityRecord.findMainWindow();
if (w == null || w.isLetterboxedForDisplayCutout()) {
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index c8b207a..b6760c5 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -364,6 +364,10 @@
* user wants to return to it. */
private WindowProcessController mRootProcess;
+ /** The TF host info are set once the task has ever added an organized task fragment. */
+ int mTaskFragmentHostUid;
+ String mTaskFragmentHostProcessName;
+
/** Takes on same value as first root activity */
boolean isPersistable = false;
int maxRecents;
@@ -1468,6 +1472,11 @@
// passed from Task constructor.
final TaskFragment childTaskFrag = child.asTaskFragment();
if (childTaskFrag != null && childTaskFrag.asTask() == null) {
+ if (childTaskFrag.mTaskFragmentOrganizerProcessName != null
+ && mTaskFragmentHostProcessName == null) {
+ mTaskFragmentHostUid = childTaskFrag.mTaskFragmentOrganizerUid;
+ mTaskFragmentHostProcessName = childTaskFrag.mTaskFragmentOrganizerProcessName;
+ }
childTaskFrag.setMinDimensions(mMinWidth, mMinHeight);
// The starting window should keep covering its task when a pure TaskFragment is added
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index 271e807..750e6f5 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -320,9 +320,9 @@
/** Organizer that organizing this TaskFragment. */
@Nullable
private ITaskFragmentOrganizer mTaskFragmentOrganizer;
- @VisibleForTesting
+
int mTaskFragmentOrganizerUid = INVALID_UID;
- private @Nullable String mTaskFragmentOrganizerProcessName;
+ @Nullable String mTaskFragmentOrganizerProcessName;
/** Client assigned unique token for this TaskFragment if this is created by an organizer. */
@Nullable
@@ -485,14 +485,16 @@
*/
@Nullable
private WindowProcessController getOrganizerProcessIfDifferent(@Nullable ActivityRecord r) {
- if ((r == null || mTaskFragmentOrganizerProcessName == null)
- || (mTaskFragmentOrganizerProcessName.equals(r.processName)
- && mTaskFragmentOrganizerUid == r.getUid())) {
- // No organizer or the process is the same.
+ final Task task = getTask();
+ if (r == null || task == null || task.mTaskFragmentHostProcessName == null) {
return null;
}
- return mAtmService.getProcessController(mTaskFragmentOrganizerProcessName,
- mTaskFragmentOrganizerUid);
+ if (task.mTaskFragmentHostProcessName.equals(r.processName)
+ && task.mTaskFragmentHostUid == r.getUid()) {
+ return null;
+ }
+ return mAtmService.getProcessController(task.mTaskFragmentHostProcessName,
+ task.mTaskFragmentHostUid);
}
void setAnimationParams(@NonNull TaskFragmentAnimationParams animationParams) {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 5cc6d40..ac65622 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -3397,7 +3397,6 @@
}
maybeMigratePoliciesPostUpgradeToDevicePolicyEngineLocked();
migratePoliciesToPolicyEngineLocked();
-
}
maybeStartSecurityLogMonitorOnActivityManagerReady();
break;
@@ -13179,27 +13178,47 @@
CallerIdentity caller, EnforcingAdmin admin, String key, boolean enabled,
boolean parent) {
synchronized (getLockObject()) {
+
+ int ownerType;
if (isDeviceOwner(caller)) {
- if (UserRestrictionsUtils.isGlobal(OWNER_TYPE_DEVICE_OWNER, key)) {
- setGlobalUserRestrictionInternal(admin, key, enabled);
- } else {
- setLocalUserRestrictionInternal(admin, key, enabled, caller.getUserId());
- }
+ ownerType = OWNER_TYPE_DEVICE_OWNER;
+ } else if (isProfileOwnerOfOrganizationOwnedDevice(caller)) {
+ ownerType = OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE;
} else if (isProfileOwner(caller)) {
- if (UserRestrictionsUtils.isGlobal(OWNER_TYPE_PROFILE_OWNER, key)
- || (parent && isProfileOwnerOfOrganizationOwnedDevice(caller)
- && UserRestrictionsUtils.isGlobal(
- OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE, key))) {
- setGlobalUserRestrictionInternal(admin, key, enabled);
- } else {
- int affectedUserId = parent
- ? getProfileParentId(caller.getUserId()) : caller.getUserId();
- setLocalUserRestrictionInternal(admin, key, enabled, affectedUserId);
- }
+ ownerType = OWNER_TYPE_PROFILE_OWNER;
} else {
throw new IllegalStateException("Non-DO/Non-PO cannot set restriction " + key
+ " while targetSdkVersion is less than UPSIDE_DOWN_CAKE");
}
+ setBackwardCompatibleUserRestrictionLocked(ownerType, admin, caller.getUserId(), key,
+ enabled, parent);
+ }
+ }
+
+ private void setBackwardCompatibleUserRestrictionLocked(
+ int ownerType, EnforcingAdmin admin, int userId, String key, boolean enabled,
+ boolean parent) {
+ if (ownerType == OWNER_TYPE_DEVICE_OWNER) {
+ if (UserRestrictionsUtils.isGlobal(OWNER_TYPE_DEVICE_OWNER, key)) {
+ setGlobalUserRestrictionInternal(admin, key, enabled);
+ } else {
+ setLocalUserRestrictionInternal(admin, key, enabled, userId);
+ }
+ } else if (ownerType == OWNER_TYPE_PROFILE_OWNER
+ || ownerType == OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE) {
+ if (UserRestrictionsUtils.isGlobal(OWNER_TYPE_PROFILE_OWNER, key)
+ || (parent && ownerType == OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE
+ && UserRestrictionsUtils.isGlobal(
+ OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE, key))) {
+ setGlobalUserRestrictionInternal(admin, key, enabled);
+ } else {
+ int affectedUserId = parent
+ ? getProfileParentId(userId) : userId;
+ setLocalUserRestrictionInternal(admin, key, enabled, affectedUserId);
+ }
+ } else {
+ throw new IllegalStateException("Non-DO/Non-PO cannot set restriction " + key
+ + " while targetSdkVersion is less than UPSIDE_DOWN_CAKE");
}
}
@@ -15140,10 +15159,8 @@
if (statusBarService != null) {
int flags1 = disabled ? STATUS_BAR_DISABLE_MASK : StatusBarManager.DISABLE_NONE;
int flags2 = disabled ? STATUS_BAR_DISABLE2_MASK : StatusBarManager.DISABLE2_NONE;
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(flags1,
- flags2);
- statusBarService.disableForUser(info, mToken, mContext.getPackageName(), userId,
- "setStatusBarDisabledInternal");
+ statusBarService.disableForUser(flags1, mToken, mContext.getPackageName(), userId);
+ statusBarService.disable2ForUser(flags2, mToken, mContext.getPackageName(), userId);
return true;
}
} catch (RemoteException e) {
@@ -23734,13 +23751,15 @@
Preconditions.checkCallAuthorization(
hasCallingOrSelfPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS));
return mInjector.binderWithCleanCallingIdentity(() -> {
- boolean canForceMigration = forceMigration && !hasNonTestOnlyActiveAdmins();
- if (!canForceMigration && !shouldMigrateV1ToDevicePolicyEngine()) {
- return false;
+ synchronized (getLockObject()) {
+ boolean canForceMigration = forceMigration && !hasNonTestOnlyActiveAdmins();
+ if (!canForceMigration && !shouldMigrateV1ToDevicePolicyEngine()) {
+ return false;
+ }
+ boolean migrated = migrateV1PoliciesToDevicePolicyEngine();
+ migrated &= migratePoliciesPostUpgradeToDevicePolicyEngineLocked();
+ return migrated;
}
- boolean migrated = migrateV1PoliciesToDevicePolicyEngine();
- migrated &= migratePoliciesPostUpgradeToDevicePolicyEngineLocked();
- return migrated;
});
}
@@ -23784,6 +23803,7 @@
try {
migrateScreenCapturePolicyLocked();
migrateLockTaskPolicyLocked();
+ migrateUserRestrictionsLocked();
return true;
} catch (Exception e) {
Slogf.e(LOG_TAG, e, "Error occurred during post upgrade migration to the device "
@@ -24053,6 +24073,42 @@
});
}
+ private void migrateUserRestrictionsLocked() {
+ Binder.withCleanCallingIdentity(() -> {
+ List<UserInfo> users = mUserManager.getUsers();
+ for (UserInfo userInfo : users) {
+ ActiveAdmin admin = getProfileOwnerOrDeviceOwnerLocked(userInfo.id);
+ if (admin == null) continue;
+ ComponentName adminComponent = admin.info.getComponent();
+ int userId = userInfo.id;
+ EnforcingAdmin enforcingAdmin = EnforcingAdmin.createEnterpriseEnforcingAdmin(
+ adminComponent,
+ userId,
+ admin);
+ int ownerType;
+ if (isDeviceOwner(admin)) {
+ ownerType = OWNER_TYPE_DEVICE_OWNER;
+ } else if (isProfileOwnerOfOrganizationOwnedDevice(adminComponent, userId)) {
+ ownerType = OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE;
+ } else if (isProfileOwner(adminComponent, userId)) {
+ ownerType = OWNER_TYPE_PROFILE_OWNER;
+ } else {
+ throw new IllegalStateException("Invalid DO/PO state");
+ }
+
+ for (final String restriction : admin.ensureUserRestrictions().keySet()) {
+ setBackwardCompatibleUserRestrictionLocked(ownerType, enforcingAdmin, userId,
+ restriction, /* enabled */ true, /* parent */ false);
+ }
+ for (final String restriction : admin.getParentActiveAdmin()
+ .ensureUserRestrictions().keySet()) {
+ setBackwardCompatibleUserRestrictionLocked(ownerType, enforcingAdmin, userId,
+ restriction, /* enabled */ true, /* parent */ true);
+ }
+ }
+ });
+ }
+
private List<PackageInfo> getInstalledPackagesOnUser(int userId) {
return mInjector.binderWithCleanCallingIdentity(() ->
mContext.getPackageManager().getInstalledPackagesAsUser(
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/BiometricDanglingReceiverTest.java b/services/tests/servicestests/src/com/android/server/biometrics/BiometricDanglingReceiverTest.java
index 0716a5c..3698d6f 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/BiometricDanglingReceiverTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/BiometricDanglingReceiverTest.java
@@ -26,6 +26,7 @@
import static org.mockito.Mockito.when;
import android.app.NotificationManager;
+import android.content.Context;
import android.content.Intent;
import android.hardware.biometrics.BiometricsProtoEnums;
import android.os.UserHandle;
@@ -75,13 +76,15 @@
@Test
public void testFingerprintRegisterReceiver() {
initBroadcastReceiver(BiometricsProtoEnums.MODALITY_FINGERPRINT);
- verify(mContext).registerReceiver(eq(mBiometricDanglingReceiver), any());
+ verify(mContext).registerReceiver(eq(mBiometricDanglingReceiver), any(),
+ eq(Context.RECEIVER_NOT_EXPORTED));
}
@Test
public void testFaceRegisterReceiver() {
initBroadcastReceiver(BiometricsProtoEnums.MODALITY_FACE);
- verify(mContext).registerReceiver(eq(mBiometricDanglingReceiver), any());
+ verify(mContext).registerReceiver(eq(mBiometricDanglingReceiver), any(),
+ eq(Context.RECEIVER_NOT_EXPORTED));
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java
index c29547f..9b2a880 100644
--- a/services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/BackNavigationControllerTests.java
@@ -291,13 +291,22 @@
assertTrue(predictable);
outPrevActivities.clear();
- // Stacked + companion => predict for previous task
+ // Stacked + top companion to bottom but bottom didn't => predict for previous activity
tf2.setCompanionTaskFragment(tf1);
predictable = BackNavigationController.getAnimatablePrevActivities(task, topAr,
outPrevActivities);
+ assertTrue(outPrevActivities.contains(prevAr));
+ assertTrue(predictable);
+ tf2.setCompanionTaskFragment(null);
+ outPrevActivities.clear();
+
+ // Stacked + next companion to top => predict for previous task
+ tf1.setCompanionTaskFragment(tf2);
+ predictable = BackNavigationController.getAnimatablePrevActivities(task, topAr,
+ outPrevActivities);
assertTrue(outPrevActivities.isEmpty());
assertTrue(predictable);
- tf2.setCompanionTaskFragment(null);
+ tf1.setCompanionTaskFragment(null);
// Adjacent + no companion => unable to predict
// TF1 | TF2
@@ -314,11 +323,13 @@
// Adjacent + companion => predict for previous task
tf1.setCompanionTaskFragment(tf2);
- tf2.setCompanionTaskFragment(tf1);
predictable = BackNavigationController.getAnimatablePrevActivities(task, topAr,
outPrevActivities);
assertTrue(outPrevActivities.isEmpty());
assertTrue(predictable);
+ tf1.setCompanionTaskFragment(null);
+
+ tf2.setCompanionTaskFragment(tf1);
predictable = BackNavigationController.getAnimatablePrevActivities(task, prevAr,
outPrevActivities);
assertTrue(outPrevActivities.isEmpty());
@@ -361,18 +372,27 @@
tf3.setAdjacentTaskFragment(null);
final TaskFragment tf4 = createTaskFragmentWithActivity(task);
- // Stacked + companion => predict for previous activity below companion.
+ // Stacked + next companion to top => predict for previous activity below companion.
// Tf4
// TF3
// TF2
// TF1
- tf4.setCompanionTaskFragment(tf3);
tf3.setCompanionTaskFragment(tf4);
topAr = tf4.getTopMostActivity();
predictable = BackNavigationController.getAnimatablePrevActivities(task, topAr,
outPrevActivities);
assertTrue(outPrevActivities.contains(tf2.getTopMostActivity()));
assertTrue(predictable);
+ outPrevActivities.clear();
+ tf3.setCompanionTaskFragment(null);
+
+ // Stacked + top companion to next but next one didn't => predict for previous activity.
+ tf4.setCompanionTaskFragment(tf3);
+ topAr = tf4.getTopMostActivity();
+ predictable = BackNavigationController.getAnimatablePrevActivities(task, topAr,
+ outPrevActivities);
+ assertTrue(outPrevActivities.contains(tf3.getTopMostActivity()));
+ assertTrue(predictable);
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationTest.java b/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationTest.java
index b90fa21..79e401c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationTest.java
@@ -18,15 +18,17 @@
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER;
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT;
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM;
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER;
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
-
import static com.android.server.wm.testing.Assert.assertThrows;
+import static junit.framework.Assert.assertEquals;
+
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
@@ -35,11 +37,13 @@
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.content.res.Resources;
import android.platform.test.annotations.Presubmit;
+import android.util.DisplayMetrics;
import androidx.test.filters.SmallTest;
-import com.android.server.wm.testing.Assert;
+import com.android.internal.R;
import org.junit.Before;
import org.junit.Test;
@@ -277,7 +281,7 @@
}
@Test
- public void test_lettterboxPositionWhenReachabilityEnabledIsSet() {
+ public void test_letterboxPositionWhenReachabilityEnabledIsSet() {
// Check that horizontal reachability is set with correct arguments
mLetterboxConfiguration.setPersistentLetterboxPositionForHorizontalReachability(
false /* forBookMode */, LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT);
@@ -344,4 +348,48 @@
mLetterboxConfiguration.setLetterboxTabletopModePositionMultiplier(0.5f);
mLetterboxConfiguration.setLetterboxTabletopModePositionMultiplier(1);
}
+
+ @Test
+ public void test_evaluateThinLetterboxWhenDensityChanges() {
+ final Resources rs = mock(Resources.class);
+ final DisplayMetrics dm = mock(DisplayMetrics.class);
+ final LetterboxConfigurationPersister lp = mock(LetterboxConfigurationPersister.class);
+ spyOn(mContext);
+ when(rs.getDisplayMetrics()).thenReturn(dm);
+ when(mContext.getResources()).thenReturn(rs);
+ when(rs.getDimensionPixelSize(R.dimen.config_letterboxThinLetterboxWidthDp))
+ .thenReturn(100);
+ when(rs.getDimensionPixelSize(R.dimen.config_letterboxThinLetterboxHeightDp))
+ .thenReturn(200);
+ final LetterboxConfiguration configuration = new LetterboxConfiguration(mContext, lp);
+
+ // Verify the values are the expected ones
+ dm.density = 100;
+ when(rs.getDimensionPixelSize(R.dimen.config_letterboxThinLetterboxWidthDp))
+ .thenReturn(100);
+ when(rs.getDimensionPixelSize(R.dimen.config_letterboxThinLetterboxHeightDp))
+ .thenReturn(200);
+ final int thinWidthPx = configuration.getThinLetterboxWidthPx();
+ final int thinHeightPx = configuration.getThinLetterboxHeightPx();
+ assertEquals(100, thinWidthPx);
+ assertEquals(200, thinHeightPx);
+
+ // We change the values in the resources but not the update condition (density) and the
+ // result should not change
+ when(rs.getDimensionPixelSize(R.dimen.config_letterboxThinLetterboxWidthDp))
+ .thenReturn(300);
+ when(rs.getDimensionPixelSize(R.dimen.config_letterboxThinLetterboxHeightDp))
+ .thenReturn(400);
+ final int thinWidthPx2 = configuration.getThinLetterboxWidthPx();
+ final int thinHeightPx2 = configuration.getThinLetterboxHeightPx();
+ assertEquals(100, thinWidthPx2);
+ assertEquals(200, thinHeightPx2);
+
+ // We update the condition (density) so the new resource values should be read
+ dm.density = 150;
+ final int thinWidthPx3 = configuration.getThinLetterboxWidthPx();
+ final int thinHeightPx3 = configuration.getThinLetterboxHeightPx();
+ assertEquals(300, thinWidthPx3);
+ assertEquals(400, thinHeightPx3);
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
index abce4f6..ed205a5 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
@@ -609,7 +609,8 @@
doReturn(false).when(mActivity).isInLetterboxAnimation();
assertEquals(expectedRadius, mController.getRoundedCornersRadius(mainWindow));
- doReturn(false).when(mainWindow).isOnScreen();
+ doReturn(false).when(mActivity).isVisibleRequested();
+ doReturn(false).when(mActivity).isVisible();
assertEquals(0, mController.getRoundedCornersRadius(mainWindow));
doReturn(true).when(mActivity).isInLetterboxAnimation();
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
index 36c1c8c..bf15bc8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -909,8 +909,7 @@
assertEquals(window, mActivity.findMainWindow());
spyOn(mActivity.mLetterboxUiController);
- doReturn(true).when(mActivity.mLetterboxUiController)
- .isSurfaceVisible(any());
+ doReturn(true).when(mActivity).isVisibleRequested();
assertTrue(mActivity.mLetterboxUiController.shouldShowLetterboxUi(
mActivity.findMainWindow()));
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
index 897a3da..1563610 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
@@ -485,6 +485,16 @@
// Flush EVENT_APPEARED.
mController.dispatchPendingEvents();
+ // Even if the activity is not launched in an organized TaskFragment, it is still considered
+ // as the remote activity to the organizer process. Because when the task becomes visible,
+ // the organizer process needs to be interactive (unfrozen) to receive TaskFragment events.
+ activity.setVisibleRequested(true);
+ activity.setState(ActivityRecord.State.RESUMED, "test");
+ assertTrue(organizerProc.hasVisibleActivities());
+ activity.setVisibleRequested(false);
+ activity.setState(ActivityRecord.State.STOPPED, "test");
+ assertFalse(organizerProc.hasVisibleActivities());
+
// Make sure the activity belongs to the same app, but it is in a different pid.
activity.info.applicationInfo.uid = uid;
doReturn(pid + 1).when(activity).getPid();
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 88acbab..25d8a3d 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -13112,39 +13112,41 @@
})
@RequiresFeature(PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS)
public @Nullable ServiceState getServiceState(@IncludeLocationData int includeLocationData) {
- return getServiceStateForSubscriber(getSubId(),
+ return getServiceStateForSlot(SubscriptionManager.getSlotIndex(getSubId()),
includeLocationData != INCLUDE_LOCATION_DATA_FINE,
includeLocationData == INCLUDE_LOCATION_DATA_NONE);
}
/**
- * Returns the service state information on specified subscription. Callers require
- * either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE to retrieve the information.
+ * Returns the service state information on specified SIM slot.
*
- * May return {@code null} when the subscription is inactive or when there was an error
+ * May return {@code null} when the {@code slotIndex} is invalid or when there was an error
* communicating with the phone process.
+ *
+ * @param slotIndex of phone whose service state is returned
* @param renounceFineLocationAccess Set this to true if the caller would not like to receive
* location related information which will be sent if the caller already possess
* {@link android.Manifest.permission#ACCESS_FINE_LOCATION} and do not renounce the permission
* @param renounceCoarseLocationAccess Set this to true if the caller would not like to
* receive location related information which will be sent if the caller already possess
* {@link Manifest.permission#ACCESS_COARSE_LOCATION} and do not renounce the permissions.
+ * @return Service state on specified SIM slot.
*/
- private ServiceState getServiceStateForSubscriber(int subId,
- boolean renounceFineLocationAccess,
+ private ServiceState getServiceStateForSlot(int slotIndex, boolean renounceFineLocationAccess,
boolean renounceCoarseLocationAccess) {
try {
ITelephony service = getITelephony();
if (service != null) {
- return service.getServiceStateForSubscriber(subId, renounceFineLocationAccess,
- renounceCoarseLocationAccess, getOpPackageName(), getAttributionTag());
+ return service.getServiceStateForSlot(slotIndex,
+ renounceFineLocationAccess, renounceCoarseLocationAccess,
+ getOpPackageName(), getAttributionTag());
}
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#getServiceStateForSubscriber", e);
+ Log.e(TAG, "Error calling ITelephony#getServiceStateForSlot", e);
} catch (NullPointerException e) {
AnomalyReporter.reportAnomaly(
UUID.fromString("e2bed88e-def9-476e-bd71-3e572a8de6d1"),
- "getServiceStateForSubscriber " + subId + " NPE");
+ "getServiceStateForSlot " + slotIndex + " NPE");
}
return null;
}
@@ -13159,7 +13161,35 @@
*/
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public ServiceState getServiceStateForSubscriber(int subId) {
- return getServiceStateForSubscriber(subId, false, false);
+ return getServiceStateForSlot(
+ SubscriptionManager.getSlotIndex(subId), false, false);
+ }
+
+ /**
+ * Returns the service state information on specified SIM slot.
+ *
+ * If you want continuous updates of service state info, register a {@link TelephonyCallback}
+ * that implements {@link TelephonyCallback.ServiceStateListener} through
+ * {@link #registerTelephonyCallback}.
+ *
+ * May return {@code null} when the {@code slotIndex} is invalid or when there was an error
+ * communicating with the phone process
+ *
+ * See {@link #getActiveModemCount()} to get the total number of slots
+ * that are active on the device.
+ *
+ * @param slotIndex of phone whose service state is returned
+ * @return ServiceState on specified SIM slot.
+ *
+ * @hide
+ */
+ @RequiresPermission(allOf = {
+ Manifest.permission.READ_PHONE_STATE,
+ Manifest.permission.ACCESS_COARSE_LOCATION
+ })
+ @RequiresFeature(PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS)
+ public @Nullable ServiceState getServiceStateForSlot(int slotIndex) {
+ return getServiceStateForSlot(slotIndex, false, false);
}
/**
diff --git a/telephony/java/android/telephony/satellite/SatelliteManager.java b/telephony/java/android/telephony/satellite/SatelliteManager.java
index 0bb5fd5..47f53f3 100644
--- a/telephony/java/android/telephony/satellite/SatelliteManager.java
+++ b/telephony/java/android/telephony/satellite/SatelliteManager.java
@@ -1015,13 +1015,27 @@
* @hide
*/
public static final int DATAGRAM_TYPE_KEEP_ALIVE = 3;
+ /**
+ * Datagram type indicating that the datagram to be sent or received is of type SOS message and
+ * is the last message to emergency service provider indicating still needs help.
+ * @hide
+ */
+ public static final int DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP = 4;
+ /**
+ * Datagram type indicating that the datagram to be sent or received is of type SOS message and
+ * is the last message to emergency service provider indicating no more help is needed.
+ * @hide
+ */
+ public static final int DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED = 5;
/** @hide */
@IntDef(prefix = "DATAGRAM_TYPE_", value = {
DATAGRAM_TYPE_UNKNOWN,
DATAGRAM_TYPE_SOS_MESSAGE,
DATAGRAM_TYPE_LOCATION_SHARING,
- DATAGRAM_TYPE_KEEP_ALIVE
+ DATAGRAM_TYPE_KEEP_ALIVE,
+ DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP,
+ DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED
})
@Retention(RetentionPolicy.SOURCE)
public @interface DatagramType {}
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index f591f40..ccc68bc 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1399,19 +1399,18 @@
oneway void requestModemActivityInfo(in ResultReceiver result);
/**
- * Get the service state on specified subscription
- * @param subId Subscription id
+ * Get the service state on specified SIM slot.
+ * @param slotIndex of phone whose service state is returned
* @param renounceFineLocationAccess Set this to true if the caller would not like to
* receive fine location related information
* @param renounceCoarseLocationAccess Set this to true if the caller would not like to
* receive coarse location related information
* @param callingPackage The package making the call
* @param callingFeatureId The feature in the package
- * @return Service state on specified subscription.
+ * @return Service state on specified SIM slot.
*/
- ServiceState getServiceStateForSubscriber(int subId, boolean renounceFineLocationAccess,
- boolean renounceCoarseLocationAccess,
- String callingPackage, String callingFeatureId);
+ ServiceState getServiceStateForSlot(int slotIndex, boolean renounceFineLocationAccess,
+ boolean renounceCoarseLocationAccess, String callingPackage, String callingFeatureId);
/**
* Returns the URI for the per-account voicemail ringtone set in Phone settings.
diff --git a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
index 3ab8d37..6bcfebc 100644
--- a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
+++ b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
@@ -176,25 +176,19 @@
},
new Test("Disable Alerts") {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setNotificationPeekingDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ALERTS);
}
},
new Test("Disable Ticker") {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setNotificationTickerDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_TICKER);
}
},
new Test("Disable Expand in 3 sec.") {
public void run() {
mHandler.postDelayed(new Runnable() {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setStatusBarExpansionDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
}
}, 3000);
}
@@ -203,9 +197,7 @@
public void run() {
mHandler.postDelayed(new Runnable() {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setNotificationIconsDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ICONS);
}
}, 3000);
}
@@ -214,73 +206,56 @@
public void run() {
mHandler.postDelayed(new Runnable() {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setStatusBarExpansionDisabled(true);
- info.setNotificationIconsDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND
+ | StatusBarManager.DISABLE_NOTIFICATION_ICONS);
}
}, 3000);
}
},
new Test("Disable Home (StatusBarManager)") {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setNavigationHomeDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_HOME);
}
},
new Test("Disable Back (StatusBarManager)") {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setBackDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_BACK);
}
},
new Test("Disable Recent (StatusBarManager)") {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setRecentsDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_RECENT);
}
},
new Test("Disable Clock") {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setClockDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_CLOCK);
}
},
new Test("Disable System Info") {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setSystemIconsDisabled(true);
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_SYSTEM_INFO);
}
},
new Test("Disable everything in 3 sec") {
public void run() {
mHandler.postDelayed(new Runnable() {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setDisableAll();
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(~StatusBarManager.DISABLE_NONE);
}
}, 3000);
}
},
new Test("Enable everything") {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
}
},
new Test("Enable everything in 3 sec.") {
public void run() {
mHandler.postDelayed(new Runnable() {
public void run() {
- StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
- info.setEnableAll();
- mStatusBarManager.requestDisabledComponent(info, "test");
+ mStatusBarManager.disable(0);
}
}, 3000);
}