summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/ActivityTransitionState.java2
-rw-r--r--core/java/android/app/AlarmManager.java22
-rw-r--r--core/java/android/app/EnterTransitionCoordinator.java1
-rw-r--r--core/java/android/app/Notification.java33
-rw-r--r--core/java/android/app/ResourcesManager.java28
-rw-r--r--core/java/android/app/job/JobInfo.java24
-rw-r--r--core/java/android/content/pm/IPackageManager.aidl5
-rw-r--r--core/java/android/content/pm/PackageItemInfo.java15
-rw-r--r--core/java/android/content/res/Configuration.java2
-rw-r--r--core/java/android/content/res/ResourcesKey.java20
-rwxr-xr-xcore/java/android/provider/Settings.java30
-rw-r--r--core/java/android/util/KeyValueListParser.java18
-rw-r--r--core/java/android/util/jar/StrictJarVerifier.java33
-rw-r--r--core/java/android/view/NotificationHeaderView.java16
-rw-r--r--core/java/android/widget/AbsListView.java38
-rw-r--r--core/java/com/android/internal/app/WindowDecorActionBar.java44
-rw-r--r--core/java/com/android/internal/os/InstallerConnection.java17
-rw-r--r--core/java/com/android/internal/policy/DecorView.java130
-rw-r--r--core/java/com/android/internal/policy/PhoneWindow.java7
-rw-r--r--core/res/res/layout/app_error_dialog.xml2
-rw-r--r--core/res/res/values-af/strings.xml8
-rw-r--r--core/res/res/values-am/strings.xml8
-rw-r--r--core/res/res/values-ar/strings.xml8
-rw-r--r--core/res/res/values-az-rAZ/strings.xml42
-rw-r--r--core/res/res/values-b+sr+Latn/strings.xml8
-rw-r--r--core/res/res/values-be-rBY/strings.xml8
-rw-r--r--core/res/res/values-bg/strings.xml8
-rw-r--r--core/res/res/values-bn-rBD/strings.xml8
-rw-r--r--core/res/res/values-bs-rBA/strings.xml8
-rw-r--r--core/res/res/values-ca/strings.xml10
-rw-r--r--core/res/res/values-cs/strings.xml8
-rw-r--r--core/res/res/values-da/strings.xml8
-rw-r--r--core/res/res/values-de/strings.xml48
-rw-r--r--core/res/res/values-el/strings.xml10
-rw-r--r--core/res/res/values-en-rAU/strings.xml12
-rw-r--r--core/res/res/values-en-rGB/strings.xml12
-rw-r--r--core/res/res/values-en-rIN/strings.xml12
-rw-r--r--core/res/res/values-es-rUS/strings.xml48
-rw-r--r--core/res/res/values-es/strings.xml2
-rw-r--r--core/res/res/values-et-rEE/strings.xml2
-rw-r--r--core/res/res/values-eu-rES/strings.xml8
-rw-r--r--core/res/res/values-fa/strings.xml26
-rw-r--r--core/res/res/values-fi/strings.xml8
-rw-r--r--core/res/res/values-fr-rCA/strings.xml8
-rw-r--r--core/res/res/values-fr/strings.xml12
-rw-r--r--core/res/res/values-gl-rES/strings.xml8
-rw-r--r--core/res/res/values-gu-rIN/strings.xml10
-rw-r--r--core/res/res/values-hi/strings.xml8
-rw-r--r--core/res/res/values-hr/strings.xml8
-rw-r--r--core/res/res/values-hu/strings.xml8
-rw-r--r--core/res/res/values-hy-rAM/strings.xml2
-rw-r--r--core/res/res/values-in/strings.xml8
-rw-r--r--core/res/res/values-is-rIS/strings.xml48
-rw-r--r--core/res/res/values-it/strings.xml8
-rw-r--r--core/res/res/values-iw/strings.xml8
-rw-r--r--core/res/res/values-ja/strings.xml8
-rw-r--r--core/res/res/values-ka-rGE/strings.xml8
-rw-r--r--core/res/res/values-kk-rKZ/strings.xml8
-rw-r--r--core/res/res/values-km-rKH/strings.xml48
-rw-r--r--core/res/res/values-kn-rIN/strings.xml66
-rw-r--r--core/res/res/values-ko/strings.xml2
-rw-r--r--core/res/res/values-ky-rKG/strings.xml2
-rw-r--r--core/res/res/values-lo-rLA/strings.xml8
-rw-r--r--core/res/res/values-lt/strings.xml8
-rw-r--r--core/res/res/values-lv/strings.xml6
-rw-r--r--core/res/res/values-mk-rMK/strings.xml2
-rw-r--r--core/res/res/values-ml-rIN/strings.xml10
-rw-r--r--core/res/res/values-mn-rMN/strings.xml24
-rw-r--r--core/res/res/values-mr-rIN/strings.xml8
-rw-r--r--core/res/res/values-ms-rMY/strings.xml48
-rw-r--r--core/res/res/values-my-rMM/strings.xml18
-rw-r--r--core/res/res/values-nb/strings.xml10
-rw-r--r--core/res/res/values-ne-rNP/strings.xml10
-rw-r--r--core/res/res/values-nl/strings.xml2
-rw-r--r--core/res/res/values-pa-rIN/strings.xml8
-rw-r--r--core/res/res/values-pl/strings.xml10
-rw-r--r--core/res/res/values-pt-rBR/strings.xml48
-rw-r--r--core/res/res/values-pt-rPT/strings.xml8
-rw-r--r--core/res/res/values-pt/strings.xml48
-rw-r--r--core/res/res/values-ro/strings.xml58
-rw-r--r--core/res/res/values-ru/strings.xml8
-rw-r--r--core/res/res/values-si-rLK/strings.xml2
-rw-r--r--core/res/res/values-sk/strings.xml10
-rw-r--r--core/res/res/values-sl/strings.xml8
-rw-r--r--core/res/res/values-sq-rAL/strings.xml2
-rw-r--r--core/res/res/values-sr/strings.xml8
-rw-r--r--core/res/res/values-sv/strings.xml8
-rw-r--r--core/res/res/values-sw/strings.xml10
-rw-r--r--core/res/res/values-ta-rIN/strings.xml8
-rw-r--r--core/res/res/values-te-rIN/strings.xml12
-rw-r--r--core/res/res/values-th/strings.xml8
-rw-r--r--core/res/res/values-tl/strings.xml8
-rw-r--r--core/res/res/values-tr/strings.xml42
-rw-r--r--core/res/res/values-uk/strings.xml8
-rw-r--r--core/res/res/values-ur-rPK/strings.xml48
-rw-r--r--core/res/res/values-uz-rUZ/strings.xml12
-rw-r--r--core/res/res/values-vi/strings.xml48
-rw-r--r--core/res/res/values-zh-rCN/strings.xml48
-rw-r--r--core/res/res/values-zh-rHK/strings.xml8
-rw-r--r--core/res/res/values-zh-rTW/strings.xml48
-rw-r--r--core/res/res/values-zu/strings.xml8
-rw-r--r--core/res/res/values/strings.xml6
-rw-r--r--core/res/res/values/symbols.xml2
-rw-r--r--core/res/res/values/themes.xml1
-rw-r--r--data/etc/platform.xml2
-rw-r--r--docs/html/guide/topics/manifest/manifest-intro.jd366
-rw-r--r--docs/html/images/training/tv/playback/guided-step-buttonaction-2x.pngbin0 -> 77366 bytes
-rw-r--r--docs/html/images/training/tv/playback/guided-step-buttonaction.pngbin0 -> 28620 bytes
-rw-r--r--docs/html/images/training/tv/playback/guided-step-subaction-2x.pngbin0 -> 51460 bytes
-rw-r--r--docs/html/images/training/tv/playback/guided-step-subaction.pngbin0 -> 19196 bytes
-rw-r--r--docs/html/preview/api-overview.jd8
-rw-r--r--docs/html/preview/features/notification-updates.jd6
-rw-r--r--docs/html/training/tv/playback/guided-step.jd175
-rw-r--r--docs/html/wear/preview/api-overview.jd2
-rw-r--r--docs/html/wear/preview/features/notifications.jd53
-rw-r--r--docs/html/wear/preview/images/comparison_diagram.pngbin92897 -> 106315 bytes
-rw-r--r--docs/html/wear/preview/images/messaging_style.pngbin106610 -> 49548 bytes
-rw-r--r--docs/html/wear/preview/images/messaging_style_diagram.pngbin70951 -> 0 bytes
-rw-r--r--libs/hwui/BakedOpDispatcher.cpp34
-rw-r--r--libs/hwui/tests/unit/BakedOpDispatcherTests.cpp17
-rw-r--r--media/java/android/media/MediaCodecInfo.java10
-rw-r--r--media/java/android/media/MediaCodecList.java6
-rw-r--r--media/java/android/media/MediaPlayer.java28
-rw-r--r--media/java/android/media/tv/TvContract.java186
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java27
-rw-r--r--packages/Keyguard/src/com/android/keyguard/EmergencyButton.java10
-rw-r--r--packages/PrintSpooler/res/layout/print_activity_controls.xml2
-rw-r--r--packages/SettingsLib/res/values-be-rBY/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-da/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-hr/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-hu/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-kn-rIN/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-uz-rUZ/strings.xml2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java4
-rw-r--r--packages/SystemUI/res/layout/keyguard_status_bar.xml6
-rw-r--r--packages/SystemUI/res/layout/zen_mode_button.xml29
-rw-r--r--packages/SystemUI/res/layout/zen_mode_condition.xml14
-rw-r--r--packages/SystemUI/res/layout/zen_mode_panel.xml15
-rw-r--r--packages/SystemUI/res/values-af/strings.xml1
-rw-r--r--packages/SystemUI/res/values-am/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml1
-rw-r--r--packages/SystemUI/res/values-az-rAZ/strings.xml1
-rw-r--r--packages/SystemUI/res/values-b+sr+Latn/strings.xml1
-rw-r--r--packages/SystemUI/res/values-be-rBY/strings.xml1
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml1
-rw-r--r--packages/SystemUI/res/values-bn-rBD/strings.xml3
-rw-r--r--packages/SystemUI/res/values-bs-rBA/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml1
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml1
-rw-r--r--packages/SystemUI/res/values-da/strings.xml1
-rw-r--r--packages/SystemUI/res/values-de/strings.xml3
-rw-r--r--packages/SystemUI/res/values-el/strings.xml1
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml7
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml7
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml7
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml1
-rw-r--r--packages/SystemUI/res/values-es/strings.xml1
-rw-r--r--packages/SystemUI/res/values-et-rEE/strings.xml1
-rw-r--r--packages/SystemUI/res/values-eu-rES/strings.xml1
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml17
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml1
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml1
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml1
-rw-r--r--packages/SystemUI/res/values-gl-rES/strings.xml1
-rw-r--r--packages/SystemUI/res/values-gu-rIN/strings.xml1
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml1
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml1
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml1
-rw-r--r--packages/SystemUI/res/values-hy-rAM/strings.xml1
-rw-r--r--packages/SystemUI/res/values-in/strings.xml5
-rw-r--r--packages/SystemUI/res/values-is-rIS/strings.xml1
-rw-r--r--packages/SystemUI/res/values-it/strings.xml1
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ka-rGE/strings.xml1
-rw-r--r--packages/SystemUI/res/values-kk-rKZ/strings.xml1
-rw-r--r--packages/SystemUI/res/values-km-rKH/strings.xml1
-rw-r--r--packages/SystemUI/res/values-kn-rIN/strings.xml11
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ky-rKG/strings.xml1
-rw-r--r--packages/SystemUI/res/values-lo-rLA/strings.xml1
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml1
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml1
-rw-r--r--packages/SystemUI/res/values-mk-rMK/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ml-rIN/strings.xml3
-rw-r--r--packages/SystemUI/res/values-mn-rMN/strings.xml1
-rw-r--r--packages/SystemUI/res/values-mr-rIN/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ms-rMY/strings.xml1
-rw-r--r--packages/SystemUI/res/values-my-rMM/strings.xml13
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ne-rNP/strings.xml1
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml1
-rw-r--r--packages/SystemUI/res/values-pa-rIN/strings.xml1
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml1
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml1
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml1
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml1
-rw-r--r--packages/SystemUI/res/values-si-rLK/strings.xml1
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml1
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml1
-rw-r--r--packages/SystemUI/res/values-sq-rAL/strings.xml1
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml1
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml1
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ta-rIN/strings.xml1
-rw-r--r--packages/SystemUI/res/values-te-rIN/strings.xml1
-rw-r--r--packages/SystemUI/res/values-th/strings.xml1
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml1
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml1
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml1
-rw-r--r--packages/SystemUI/res/values-ur-rPK/strings.xml1
-rw-r--r--packages/SystemUI/res/values-uz-rUZ/strings.xml5
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml1
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml1
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml1
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml1
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml1
-rw-r--r--packages/SystemUI/res/values/dimens.xml3
-rw-r--r--packages/SystemUI/res/values/strings.xml6
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java51
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSContainer.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSIconView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanel.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSTile.java28
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/TileLayout.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java21
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java27
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridGroupManager.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java57
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java23
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java62
-rw-r--r--services/core/java/com/android/server/AttributeCache.java56
-rw-r--r--services/core/java/com/android/server/VibratorService.java9
-rwxr-xr-xservices/core/java/com/android/server/am/ActiveServices.java4
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java8
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java2
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java4
-rw-r--r--services/core/java/com/android/server/am/TaskRecord.java25
-rw-r--r--services/core/java/com/android/server/job/JobPackageTracker.java20
-rw-r--r--services/core/java/com/android/server/job/JobSchedulerService.java367
-rw-r--r--services/core/java/com/android/server/job/JobServiceContext.java5
-rw-r--r--services/core/java/com/android/server/job/JobStore.java12
-rw-r--r--services/core/java/com/android/server/job/controllers/AppIdleController.java21
-rw-r--r--services/core/java/com/android/server/job/controllers/BatteryController.java29
-rw-r--r--services/core/java/com/android/server/job/controllers/ConnectivityController.java16
-rw-r--r--services/core/java/com/android/server/job/controllers/ContentObserverController.java23
-rw-r--r--services/core/java/com/android/server/job/controllers/DeviceIdleJobsController.java9
-rw-r--r--services/core/java/com/android/server/job/controllers/IdleController.java13
-rw-r--r--services/core/java/com/android/server/job/controllers/JobStatus.java26
-rw-r--r--services/core/java/com/android/server/job/controllers/TimeController.java80
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java3
-rw-r--r--services/core/java/com/android/server/pm/Installer.java5
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java65
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerShellCommand.java8
-rw-r--r--services/core/java/com/android/server/pm/Settings.java26
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java10
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java2
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java10
270 files changed, 2904 insertions, 1314 deletions
diff --git a/core/java/android/app/ActivityTransitionState.java b/core/java/android/app/ActivityTransitionState.java
index 4a1aff74ddf6..02eb4d3ded1c 100644
--- a/core/java/android/app/ActivityTransitionState.java
+++ b/core/java/android/app/ActivityTransitionState.java
@@ -284,7 +284,7 @@ class ActivityTransitionState {
}
public boolean startExitBackTransition(final Activity activity) {
- if (mEnteringNames == null) {
+ if (mEnteringNames == null || mCalledExitCoordinator != null) {
return false;
} else {
if (!mHasExited) {
diff --git a/core/java/android/app/AlarmManager.java b/core/java/android/app/AlarmManager.java
index 02dcc5c7e3bd..c561a1908b21 100644
--- a/core/java/android/app/AlarmManager.java
+++ b/core/java/android/app/AlarmManager.java
@@ -28,12 +28,12 @@ import android.os.RemoteException;
import android.os.UserHandle;
import android.os.WorkSource;
import android.text.TextUtils;
+import android.util.ArrayMap;
import android.util.Log;
import libcore.util.ZoneInfoDB;
import java.io.IOException;
-import java.util.WeakHashMap;
/**
* This class provides access to the system alarm services. These allow you
@@ -244,7 +244,7 @@ public class AlarmManager {
// Tracking of the OnAlarmListener -> wrapper mapping, for cancel() support.
// Access is synchronized on the AlarmManager class object.
- private static WeakHashMap<OnAlarmListener, ListenerWrapper> sWrappers;
+ private static ArrayMap<OnAlarmListener, ListenerWrapper> sWrappers;
/**
* package private on purpose
@@ -606,6 +606,22 @@ public class AlarmManager {
*
* @hide
*/
+ public void set(int type, long triggerAtMillis, long windowMillis, long intervalMillis,
+ String tag, OnAlarmListener listener, Handler targetHandler, WorkSource workSource) {
+ setImpl(type, triggerAtMillis, windowMillis, intervalMillis, 0, null, listener, tag,
+ targetHandler, workSource, null);
+ }
+
+ /**
+ * Direct callback version of {@link #set(int, long, long, long, PendingIntent, WorkSource)}.
+ * Note that repeating alarms must use the PendingIntent variant, not an OnAlarmListener.
+ * <p>
+ * The OnAlarmListener's {@link OnAlarmListener#onAlarm() onAlarm()} method will be
+ * invoked via the specified target Handler, or on the application's main looper
+ * if {@code null} is passed as the {@code targetHandler} parameter.
+ *
+ * @hide
+ */
@SystemApi
public void set(int type, long triggerAtMillis, long windowMillis, long intervalMillis,
OnAlarmListener listener, Handler targetHandler, WorkSource workSource) {
@@ -631,7 +647,7 @@ public class AlarmManager {
if (listener != null) {
synchronized (AlarmManager.class) {
if (sWrappers == null) {
- sWrappers = new WeakHashMap<OnAlarmListener, ListenerWrapper>();
+ sWrappers = new ArrayMap<OnAlarmListener, ListenerWrapper>();
}
recipientWrapper = sWrappers.get(listener);
diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java
index a5995846014e..8bf1e9a97e48 100644
--- a/core/java/android/app/EnterTransitionCoordinator.java
+++ b/core/java/android/app/EnterTransitionCoordinator.java
@@ -150,6 +150,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
}
};
decor.getViewTreeObserver().addOnPreDrawListener(mViewsReadyListener);
+ decor.invalidate();
}
}
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index e108dd6e4966..83a20668b3b4 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -4479,6 +4479,35 @@ public class Notification implements Parcelable
if (!mMessages.isEmpty()) { extras.putParcelableArray(EXTRA_MESSAGES,
Message.getBundleArrayForMessages(mMessages));
}
+
+ fixTitleAndTextExtras(extras);
+ }
+
+ private void fixTitleAndTextExtras(Bundle extras) {
+ Message m = findLatestIncomingMessage();
+ CharSequence text = (m == null) ? null : m.mText;
+ CharSequence sender = m == null ? null
+ : TextUtils.isEmpty(m.mSender) ? mUserDisplayName : m.mSender;
+ CharSequence title;
+ if (!TextUtils.isEmpty(mConversationTitle)) {
+ if (!TextUtils.isEmpty(sender)) {
+ BidiFormatter bidi = BidiFormatter.getInstance();
+ title = mBuilder.mContext.getString(
+ com.android.internal.R.string.notification_messaging_title_template,
+ bidi.unicodeWrap(mConversationTitle), bidi.unicodeWrap(m.mSender));
+ } else {
+ title = mConversationTitle;
+ }
+ } else {
+ title = sender;
+ }
+
+ if (title != null) {
+ extras.putCharSequence(EXTRA_TITLE, title);
+ }
+ if (text != null) {
+ extras.putCharSequence(EXTRA_TEXT, text);
+ }
}
/**
@@ -4524,6 +4553,10 @@ public class Notification implements Parcelable
return m;
}
}
+ if (!mMessages.isEmpty()) {
+ // No incoming messages, fall back to outgoing message
+ return mMessages.get(mMessages.size() - 1);
+ }
return null;
}
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java
index 25a8b66a42aa..31d254dc5b2b 100644
--- a/core/java/android/app/ResourcesManager.java
+++ b/core/java/android/app/ResourcesManager.java
@@ -29,7 +29,6 @@ import android.content.res.ResourcesImpl;
import android.content.res.ResourcesKey;
import android.hardware.display.DisplayManagerGlobal;
import android.os.IBinder;
-import android.os.LocaleList;
import android.os.Trace;
import android.util.ArrayMap;
import android.util.DisplayMetrics;
@@ -38,13 +37,12 @@ import android.util.Pair;
import android.util.Slog;
import android.view.Display;
import android.view.DisplayAdjustments;
+
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
import java.util.Objects;
import java.util.WeakHashMap;
import java.util.function.Predicate;
@@ -120,6 +118,30 @@ public class ResourcesManager {
}
}
+ /**
+ * Invalidate and destroy any resources that reference content under the
+ * given filesystem path. Typically used when unmounting a storage device to
+ * try as hard as possible to release any open FDs.
+ */
+ public void invalidatePath(String path) {
+ synchronized (this) {
+ int count = 0;
+ for (int i = 0; i < mResourceImpls.size();) {
+ final ResourcesKey key = mResourceImpls.keyAt(i);
+ if (key.isPathReferenced(path)) {
+ final ResourcesImpl res = mResourceImpls.removeAt(i).get();
+ if (res != null) {
+ res.flushLayoutCache();
+ }
+ count++;
+ } else {
+ i++;
+ }
+ }
+ Log.i(TAG, "Invalidated " + count + " asset managers that referenced " + path);
+ }
+ }
+
public Configuration getConfiguration() {
synchronized (this) {
return mResConfiguration;
diff --git a/core/java/android/app/job/JobInfo.java b/core/java/android/app/job/JobInfo.java
index 61790ea92ed9..c4ca82e59b99 100644
--- a/core/java/android/app/job/JobInfo.java
+++ b/core/java/android/app/job/JobInfo.java
@@ -192,7 +192,8 @@ public class JobInfo implements Parcelable {
private final int flags;
/**
- * Unique job id associated with this class. This is assigned to your job by the scheduler.
+ * Unique job id associated with this application (uid). This is the same job ID
+ * you supplied in the {@link Builder} constructor.
*/
public int getId() {
return jobId;
@@ -524,9 +525,9 @@ public class JobInfo implements Parcelable {
/** Builder class for constructing {@link JobInfo} objects. */
public static final class Builder {
- private int mJobId;
+ private final int mJobId;
+ private final ComponentName mJobService;
private PersistableBundle mExtras = PersistableBundle.EMPTY;
- private ComponentName mJobService;
private int mPriority = PRIORITY_DEFAULT;
private int mFlags;
// Requirements.
@@ -553,11 +554,15 @@ public class JobInfo implements Parcelable {
private boolean mBackoffPolicySet = false;
/**
+ * Initialize a new Builder to construct a {@link JobInfo}.
+ *
* @param jobId Application-provided id for this job. Subsequent calls to cancel, or
- * jobs created with the same jobId, will update the pre-existing job with
- * the same id.
+ * jobs created with the same jobId, will update the pre-existing job with
+ * the same id. This ID must be unique across all clients of the same uid
+ * (not just the same package). You will want to make sure this is a stable
+ * id across app updates, so probably not based on a resource ID.
* @param jobService The endpoint that you implement that will receive the callback from the
- * JobScheduler.
+ * JobScheduler.
*/
public Builder(int jobId, ComponentName jobService) {
mJobService = jobService;
@@ -635,6 +640,13 @@ public class JobInfo implements Parcelable {
* <p>Because because setting this property is not compatible with periodic or
* persisted jobs, doing so will throw an {@link java.lang.IllegalArgumentException} when
* {@link android.app.job.JobInfo.Builder#build()} is called.</p>
+ *
+ * <p>The following example shows how this feature can be used to monitor for changes
+ * in the photos on a device.</p>
+ *
+ * {@sample development/samples/ApiDemos/src/com/example/android/apis/content/PhotosContentJob.java
+ * job}
+ *
* @param uri The content: URI to monitor.
*/
public Builder addTriggerContentUri(@NonNull TriggerContentUri uri) {
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 4bbbdee797e9..11f0eb626964 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -482,6 +482,11 @@ interface IPackageManager {
boolean performDexOptMode(String packageName, boolean checkProfiles,
String targetCompilerFilter, boolean force);
+ /**
+ * Ask the package manager to dump profiles associated with a package.
+ */
+ void dumpProfiles(String packageName);
+
void forceDexOpt(String packageName);
/**
diff --git a/core/java/android/content/pm/PackageItemInfo.java b/core/java/android/content/pm/PackageItemInfo.java
index edd888b33b1e..30da03cc773b 100644
--- a/core/java/android/content/pm/PackageItemInfo.java
+++ b/core/java/android/content/pm/PackageItemInfo.java
@@ -25,6 +25,7 @@ import android.os.Bundle;
import android.os.Parcel;
import android.os.UserHandle;
import android.text.BidiFormatter;
+import android.text.Html;
import android.text.TextPaint;
import android.text.TextUtils;
import android.util.Printer;
@@ -164,12 +165,13 @@ public class PackageItemInfo {
@SystemApi
public @NonNull CharSequence loadSafeLabel(@NonNull PackageManager pm) {
// loadLabel() always returns non-null
- CharSequence label = loadLabel(pm);
+ String label = loadLabel(pm).toString();
+ // strip HTML tags to avoid <br> and other tags overwriting original message
+ String labelStr = Html.fromHtml(label).toString();
// If the label contains new line characters it may push the UI
// down to hide a part of it. Labels shouldn't have new line
// characters, so just truncate at the first time one is seen.
- String labelStr = label.toString();
final int labelLength = labelStr.length();
int offset = 0;
while (offset < labelLength) {
@@ -181,13 +183,18 @@ public class PackageItemInfo {
labelStr = labelStr.substring(0, offset);
break;
}
+ // replace all non-break space to " " in order to be trimmed
+ if (type == Character.SPACE_SEPARATOR) {
+ labelStr = labelStr.substring(0, offset) + " " + labelStr.substring(offset +
+ Character.charCount(codePoint));
+ }
offset += Character.charCount(codePoint);
}
+ labelStr = labelStr.trim();
if (labelStr.isEmpty()) {
- return labelStr;
+ return packageName;
}
-
TextPaint paint = new TextPaint();
paint.setTextSize(42);
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java
index f6445e6cd090..6f43d99ecb95 100644
--- a/core/java/android/content/res/Configuration.java
+++ b/core/java/android/content/res/Configuration.java
@@ -207,7 +207,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
public static final int SCREENLAYOUT_COMPAT_NEEDED = 0x10000000;
/**
- * Bit mask of overall layout of the screen. Currently there are two
+ * Bit mask of overall layout of the screen. Currently there are four
* fields:
* <p>The {@link #SCREENLAYOUT_SIZE_MASK} bits define the overall size
* of the screen. They may be one of
diff --git a/core/java/android/content/res/ResourcesKey.java b/core/java/android/content/res/ResourcesKey.java
index e89449283c5e..64b6bf1b6dcd 100644
--- a/core/java/android/content/res/ResourcesKey.java
+++ b/core/java/android/content/res/ResourcesKey.java
@@ -77,6 +77,26 @@ public final class ResourcesKey {
return !Configuration.EMPTY.equals(mOverrideConfiguration);
}
+ public boolean isPathReferenced(String path) {
+ if (mResDir != null && mResDir.startsWith(path)) {
+ return true;
+ } else {
+ return anyStartsWith(mSplitResDirs, path) || anyStartsWith(mOverlayDirs, path)
+ || anyStartsWith(mLibDirs, path);
+ }
+ }
+
+ private static boolean anyStartsWith(String[] list, String prefix) {
+ if (list != null) {
+ for (String s : list) {
+ if (s != null && s.startsWith(prefix)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
@Override
public int hashCode() {
return mHash;
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index f867fb024686..e408cca4e330 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -8018,6 +8018,36 @@ public final class Settings {
public static final String ALARM_MANAGER_CONSTANTS = "alarm_manager_constants";
/**
+ * Job scheduler specific settings.
+ * This is encoded as a key=value list, separated by commas. Ex:
+ *
+ * "min_ready_jobs_count=2,moderate_use_factor=.5"
+ *
+ * The following keys are supported:
+ *
+ * <pre>
+ * min_idle_count (int)
+ * min_charging_count (int)
+ * min_connectivity_count (int)
+ * min_content_count (int)
+ * min_ready_jobs_count (int)
+ * heavy_use_factor (float)
+ * moderate_use_factor (float)
+ * fg_job_count (int)
+ * bg_normal_job_count (int)
+ * bg_moderate_job_count (int)
+ * bg_low_job_count (int)
+ * bg_critical_job_count (int)
+ * </pre>
+ *
+ * <p>
+ * Type: string
+ * @hide
+ * @see com.android.server.job.JobSchedulerService.Constants
+ */
+ public static final String JOB_SCHEDULER_CONSTANTS = "job_scheduler_constants";
+
+ /**
* ShortcutManager specific settings.
* This is encoded as a key=value list, separated by commas. Ex:
*
diff --git a/core/java/android/util/KeyValueListParser.java b/core/java/android/util/KeyValueListParser.java
index 4abdde00e6c6..e4c025dece49 100644
--- a/core/java/android/util/KeyValueListParser.java
+++ b/core/java/android/util/KeyValueListParser.java
@@ -63,6 +63,24 @@ public class KeyValueListParser {
}
/**
+ * Get the value for key as an int.
+ * @param key The key to lookup.
+ * @param def The value to return if the key was not found, or the value was not a long.
+ * @return the int value associated with the key.
+ */
+ public int getInt(String key, int def) {
+ String value = mValues.get(key);
+ if (value != null) {
+ try {
+ return Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ // fallthrough
+ }
+ }
+ return def;
+ }
+
+ /**
* Get the value for key as a long.
* @param key The key to lookup.
* @param def The value to return if the key was not found, or the value was not a long.
diff --git a/core/java/android/util/jar/StrictJarVerifier.java b/core/java/android/util/jar/StrictJarVerifier.java
index 6da50ba85b37..cb71ecc1da8b 100644
--- a/core/java/android/util/jar/StrictJarVerifier.java
+++ b/core/java/android/util/jar/StrictJarVerifier.java
@@ -30,6 +30,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -41,6 +42,7 @@ import android.util.apk.ApkSignatureSchemeV2Verifier;
import libcore.io.Base64;
import sun.security.jca.Providers;
import sun.security.pkcs.PKCS7;
+import sun.security.pkcs.SignerInfo;
/**
* Non-public class used by {@link JarFile} and {@link JarInputStream} to manage
@@ -308,18 +310,29 @@ class StrictJarVerifier {
obj = Providers.startJarVerification();
PKCS7 block = new PKCS7(blockBytes);
- if (block.verify(sfBytes) == null) {
- throw new GeneralSecurityException("Failed to verify signature");
+ SignerInfo[] verifiedSignerInfos = block.verify(sfBytes);
+ if ((verifiedSignerInfos == null) || (verifiedSignerInfos.length == 0)) {
+ throw new GeneralSecurityException(
+ "Failed to verify signature: no verified SignerInfos");
}
- X509Certificate[] blockCerts = block.getCertificates();
- Certificate[] signerCertChain = null;
- if (blockCerts != null) {
- signerCertChain = new Certificate[blockCerts.length];
- for (int i = 0; i < blockCerts.length; ++i) {
- signerCertChain[i] = blockCerts[i];
- }
+ // Ignore any SignerInfo other than the first one, to be compatible with older Android
+ // platforms which have been doing this for years. See
+ // libcore/luni/src/main/java/org/apache/harmony/security/utils/JarUtils.java
+ // verifySignature method of older platforms.
+ SignerInfo verifiedSignerInfo = verifiedSignerInfos[0];
+ List<X509Certificate> verifiedSignerCertChain =
+ verifiedSignerInfo.getCertificateChain(block);
+ if (verifiedSignerCertChain == null) {
+ // Should never happen
+ throw new GeneralSecurityException(
+ "Failed to find verified SignerInfo certificate chain");
+ } else if (verifiedSignerCertChain.isEmpty()) {
+ // Should never happen
+ throw new GeneralSecurityException(
+ "Verified SignerInfo certificate chain is emtpy");
}
- return signerCertChain;
+ return verifiedSignerCertChain.toArray(
+ new X509Certificate[verifiedSignerCertChain.size()]);
} catch (IOException e) {
throw new GeneralSecurityException("IO exception verifying jar cert", e);
} finally {
diff --git a/core/java/android/view/NotificationHeaderView.java b/core/java/android/view/NotificationHeaderView.java
index 6e6baeadd45d..3069e5ade582 100644
--- a/core/java/android/view/NotificationHeaderView.java
+++ b/core/java/android/view/NotificationHeaderView.java
@@ -21,9 +21,9 @@ import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Outline;
import android.graphics.Rect;
-import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
+import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.ImageView;
import android.widget.RemoteViews;
@@ -230,6 +230,7 @@ public class NotificationHeaderView extends ViewGroup {
public void setOnClickListener(@Nullable OnClickListener l) {
mExpandClickListener = l;
setOnTouchListener(mExpandClickListener != null ? mTouchListener : null);
+ setFocusable(l != null);
updateTouchListener();
}
@@ -379,6 +380,19 @@ public class NotificationHeaderView extends ViewGroup {
return this;
}
+ @Override
+ public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(info);
+ if (mExpandClickListener != null) {
+ AccessibilityNodeInfo.AccessibilityAction expand
+ = new AccessibilityNodeInfo.AccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLICK,
+ getContext().getString(
+ com.android.internal.R.string.expand_action_accessibility));
+ info.addAction(expand);
+ }
+ }
+
public ImageView getExpandButton() {
return mExpandButton;
}
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 28ade80a260e..b331be72b4cf 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -2675,19 +2675,49 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
return (mGroupFlags & CLIP_TO_PADDING_MASK) == CLIP_TO_PADDING_MASK ? 0 : mPaddingBottom;
}
+ /**
+ * @hide
+ */
@Override
- protected void onSizeChanged(int w, int h, int oldw, int oldh) {
- if (getChildCount() > 0) {
- mDataChanged = true;
- rememberSyncState();
+ protected void internalSetPadding(int left, int top, int right, int bottom) {
+ super.internalSetPadding(left, top, right, bottom);
+ if (isLayoutRequested()) {
+ handleBoundsChange();
}
+ }
+ @Override
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ handleBoundsChange();
if (mFastScroll != null) {
mFastScroll.onSizeChanged(w, h, oldw, oldh);
}
}
/**
+ * Called when bounds of the AbsListView are changed. AbsListView marks data set as changed
+ * and force layouts all children that don't have exact measure specs.
+ * <p>
+ * This invalidation is necessary, otherwise, AbsListView may think the children are valid and
+ * fail to relayout them properly to accommodate for new bounds.
+ */
+ void handleBoundsChange() {
+ final int childCount = getChildCount();
+ if (childCount > 0) {
+ mDataChanged = true;
+ rememberSyncState();
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ final ViewGroup.LayoutParams lp = child.getLayoutParams();
+ // force layout child unless it has exact specs
+ if (lp == null || lp.width < 1 || lp.height < 1) {
+ child.forceLayout();
+ }
+ }
+ }
+ }
+
+ /**
* @return True if the current touch mode requires that we draw the selector in the pressed
* state.
*/
diff --git a/core/java/com/android/internal/app/WindowDecorActionBar.java b/core/java/com/android/internal/app/WindowDecorActionBar.java
index a09dbe553c7c..1376d0ad5cdc 100644
--- a/core/java/com/android/internal/app/WindowDecorActionBar.java
+++ b/core/java/com/android/internal/app/WindowDecorActionBar.java
@@ -873,24 +873,40 @@ public class WindowDecorActionBar extends ActionBar implements
hideForActionMode();
}
- Animator fadeIn, fadeOut;
- if (toActionMode) {
- fadeOut = mDecorToolbar.setupAnimatorToVisibility(View.GONE,
- FADE_OUT_DURATION_MS);
- fadeIn = mContextView.setupAnimatorToVisibility(View.VISIBLE,
- FADE_IN_DURATION_MS);
+ if (shouldAnimateContextView()) {
+ Animator fadeIn, fadeOut;
+ if (toActionMode) {
+ fadeOut = mDecorToolbar.setupAnimatorToVisibility(View.GONE,
+ FADE_OUT_DURATION_MS);
+ fadeIn = mContextView.setupAnimatorToVisibility(View.VISIBLE,
+ FADE_IN_DURATION_MS);
+ } else {
+ fadeIn = mDecorToolbar.setupAnimatorToVisibility(View.VISIBLE,
+ FADE_IN_DURATION_MS);
+ fadeOut = mContextView.setupAnimatorToVisibility(View.GONE,
+ FADE_OUT_DURATION_MS);
+ }
+ AnimatorSet set = new AnimatorSet();
+ set.playSequentially(fadeOut, fadeIn);
+ set.start();
} else {
- fadeIn = mDecorToolbar.setupAnimatorToVisibility(View.VISIBLE,
- FADE_IN_DURATION_MS);
- fadeOut = mContextView.setupAnimatorToVisibility(View.GONE,
- FADE_OUT_DURATION_MS);
- }
- AnimatorSet set = new AnimatorSet();
- set.playSequentially(fadeOut, fadeIn);
- set.start();
+ if (toActionMode) {
+ mDecorToolbar.setVisibility(View.GONE);
+ mContextView.setVisibility(View.VISIBLE);
+ } else {
+ mDecorToolbar.setVisibility(View.VISIBLE);
+ mContextView.setVisibility(View.GONE);
+ }
+ }
// mTabScrollView's visibility is not affected by action mode.
}
+ private boolean shouldAnimateContextView() {
+ // We only to animate the action mode in if the container view has already been laid out.
+ // If it hasn't been laid out, it hasn't been drawn to screen yet.
+ return mContainerView.isLaidOut();
+ }
+
public Context getThemedContext() {
if (mThemedContext == null) {
TypedValue outValue = new TypedValue();
diff --git a/core/java/com/android/internal/os/InstallerConnection.java b/core/java/com/android/internal/os/InstallerConnection.java
index a7a3cb59f90d..419c3d85599d 100644
--- a/core/java/com/android/internal/os/InstallerConnection.java
+++ b/core/java/com/android/internal/os/InstallerConnection.java
@@ -157,9 +157,7 @@ public class InstallerConnection {
sharedLibraries);
}
- public boolean mergeProfiles(int uid, String pkgName) throws InstallerException {
- final String[] res = execute("merge_profiles", uid, pkgName);
-
+ private boolean safeParseBooleanResult(String[] res) throws InstallerException {
if ((res == null) || (res.length != 2)) {
throw new InstallerException("Invalid size result: " + Arrays.toString(res));
}
@@ -172,6 +170,19 @@ public class InstallerConnection {
return Boolean.parseBoolean(res[1]);
}
+ public boolean mergeProfiles(int uid, String pkgName) throws InstallerException {
+ final String[] res = execute("merge_profiles", uid, pkgName);
+
+ return safeParseBooleanResult(res);
+ }
+
+ public boolean dumpProfiles(String gid, String packageName, String codePaths)
+ throws InstallerException {
+ final String[] res = execute("dump_profiles", gid, packageName, codePaths);
+
+ return safeParseBooleanResult(res);
+ }
+
private boolean connect() {
if (mSocket != null) {
return true;
diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java
index f5966362fdb2..7e38d9bc742d 100644
--- a/core/java/com/android/internal/policy/DecorView.java
+++ b/core/java/com/android/internal/policy/DecorView.java
@@ -32,6 +32,7 @@ import com.android.internal.widget.FloatingToolbar;
import java.util.List;
import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.app.ActivityManager;
import android.content.Context;
@@ -45,6 +46,7 @@ import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.Shader;
+import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.RemoteException;
import android.util.DisplayMetrics;
@@ -907,10 +909,12 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
if (getBackground() != drawable) {
setBackgroundDrawable(drawable);
if (drawable != null) {
- mResizingBackgroundDrawable = drawable;
+ mResizingBackgroundDrawable = enforceNonTranslucentBackground(drawable,
+ mWindow.isTranslucent() || mWindow.isShowingWallpaper());
} else {
mResizingBackgroundDrawable = getResizingBackgroundDrawable(
- getContext(), 0, mWindow.mBackgroundFallbackResource);
+ getContext(), 0, mWindow.mBackgroundFallbackResource,
+ mWindow.isTranslucent() || mWindow.isShowingWallpaper());
}
if (mResizingBackgroundDrawable != null) {
mResizingBackgroundDrawable.getPadding(mBackgroundPadding);
@@ -1585,31 +1589,27 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
mPrimaryActionModeView.getApplicationWindowToken(),
Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
endOnGoingFadeAnimation();
- mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA,
- 0f, 1f);
- mFadeAnim.addListener(new Animator.AnimatorListener() {
- @Override
- public void onAnimationStart(Animator animation) {
- mPrimaryActionModeView.setVisibility(VISIBLE);
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- mPrimaryActionModeView.setAlpha(1f);
- mFadeAnim = null;
- }
-
- @Override
- public void onAnimationCancel(Animator animation) {
-
- }
- @Override
- public void onAnimationRepeat(Animator animation) {
+ if (shouldAnimatePrimaryActionModeView()) {
+ mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA,
+ 0f, 1f);
+ mFadeAnim.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ mPrimaryActionModeView.setVisibility(VISIBLE);
+ }
- }
- });
- mFadeAnim.start();
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mPrimaryActionModeView.setAlpha(1f);
+ mFadeAnim = null;
+ }
+ });
+ mFadeAnim.start();
+ } else {
+ mPrimaryActionModeView.setAlpha(1f);
+ mPrimaryActionModeView.setVisibility(VISIBLE);
+ }
}
};
} else {
@@ -1643,35 +1643,36 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
if (mPrimaryActionModePopup != null) {
post(mShowPrimaryActionModePopup);
} else {
- mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 0f, 1f);
- mFadeAnim.addListener(new Animator.AnimatorListener() {
- @Override
- public void onAnimationStart(Animator animation) {
- mPrimaryActionModeView.setVisibility(View.VISIBLE);
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- mPrimaryActionModeView.setAlpha(1f);
- mFadeAnim = null;
- }
-
- @Override
- public void onAnimationCancel(Animator animation) {
-
- }
-
- @Override
- public void onAnimationRepeat(Animator animation) {
+ if (shouldAnimatePrimaryActionModeView()) {
+ mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 0f, 1f);
+ mFadeAnim.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ mPrimaryActionModeView.setVisibility(View.VISIBLE);
+ }
- }
- });
- mFadeAnim.start();
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mPrimaryActionModeView.setAlpha(1f);
+ mFadeAnim = null;
+ }
+ });
+ mFadeAnim.start();
+ } else {
+ mPrimaryActionModeView.setAlpha(1f);
+ mPrimaryActionModeView.setVisibility(View.VISIBLE);
+ }
}
mPrimaryActionModeView.sendAccessibilityEvent(
AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
}
+ boolean shouldAnimatePrimaryActionModeView() {
+ // We only to animate the action mode in if the decor has already been laid out.
+ // If it hasn't been laid out, it hasn't been drawn to screen yet.
+ return isLaidOut();
+ }
+
private ActionMode createFloatingActionMode(
View originatingView, ActionMode.Callback2 callback) {
if (mFloatingActionMode != null) {
@@ -1785,7 +1786,8 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
private void loadBackgroundDrawablesIfNeeded() {
if (mResizingBackgroundDrawable == null) {
mResizingBackgroundDrawable = getResizingBackgroundDrawable(getContext(),
- mWindow.mBackgroundResource, mWindow.mBackgroundFallbackResource);
+ mWindow.mBackgroundResource, mWindow.mBackgroundFallbackResource,
+ mWindow.isTranslucent() || mWindow.isShowingWallpaper());
if (mResizingBackgroundDrawable == null) {
// We shouldn't really get here as the background fallback should be always
// available since it is defaulted by the system.
@@ -1893,21 +1895,41 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
* user is resizing the window of an activity in multi-window mode.
*/
public static Drawable getResizingBackgroundDrawable(Context context, int backgroundRes,
- int backgroundFallbackRes) {
+ int backgroundFallbackRes, boolean windowTranslucent) {
if (backgroundRes != 0) {
final Drawable drawable = context.getDrawable(backgroundRes);
if (drawable != null) {
- return drawable;
+ return enforceNonTranslucentBackground(drawable, windowTranslucent);
}
}
if (backgroundFallbackRes != 0) {
final Drawable fallbackDrawable = context.getDrawable(backgroundFallbackRes);
if (fallbackDrawable != null) {
- return fallbackDrawable;
+ return enforceNonTranslucentBackground(fallbackDrawable, windowTranslucent);
}
}
- return null;
+ return new ColorDrawable(Color.BLACK);
+ }
+
+ /**
+ * Enforces a drawable to be non-translucent to act as a background if needed, i.e. if the
+ * window is not translucent.
+ */
+ private static Drawable enforceNonTranslucentBackground(Drawable drawable,
+ boolean windowTranslucent) {
+ if (!windowTranslucent && drawable instanceof ColorDrawable) {
+ ColorDrawable colorDrawable = (ColorDrawable) drawable;
+ int color = colorDrawable.getColor();
+ if (Color.alpha(color) != 255) {
+ ColorDrawable copy = (ColorDrawable) colorDrawable.getConstantState().newDrawable()
+ .mutate();
+ copy.setColor(
+ Color.argb(255, Color.red(color), Color.green(color), Color.blue(color)));
+ return copy;
+ }
+ }
+ return drawable;
}
/**
@@ -2037,7 +2059,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
private void drawResizingShadowIfNeeded(DisplayListCanvas canvas) {
if (mResizeMode != RESIZE_MODE_DOCKED_DIVIDER || mWindow.mIsFloating
|| mWindow.isTranslucent()
- || (mWindow.getAttributes().flags & FLAG_SHOW_WALLPAPER) != 0) {
+ || mWindow.isShowingWallpaper()) {
return;
}
canvas.save();
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 4f15ece8e04e..9ad750d3a599 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -509,6 +509,13 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
}
/**
+ * @return Whether the window is currently showing the wallpaper.
+ */
+ boolean isShowingWallpaper() {
+ return (getAttributes().flags & FLAG_SHOW_WALLPAPER) != 0;
+ }
+
+ /**
* Return a LayoutInflater instance that can be used to inflate XML view layout
* resources for use in this Window.
*
diff --git a/core/res/res/layout/app_error_dialog.xml b/core/res/res/layout/app_error_dialog.xml
index 9a5bbd4cfdd1..d78ce59872ff 100644
--- a/core/res/res/layout/app_error_dialog.xml
+++ b/core/res/res/layout/app_error_dialog.xml
@@ -38,7 +38,7 @@
android:id="@+id/aerr_close"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="@string/aerr_close"
+ android:text="@string/aerr_close_app"
android:drawableStart="@drawable/ic_close"
style="@style/aerr_list_item"
/>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index a7521b5577f4..95f645bd4bd5 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> het gestop"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> stop aanhoudend"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> stop aanhoudend"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Maak program weer oop"</string>
<string name="aerr_report" msgid="5371800241488400617">"Stuur terugvoer"</string>
<string name="aerr_close" msgid="2991640326563991340">"Maak toe"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Demp totdat toestel herbegin"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS-versoek is gewysig tot USSD-versoek."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS-versoek is gewysig tot nuwe SS-versoek."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Werkprofiel"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Uitvou-knoppie"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android-USB-randpoort"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 191fc31a5013..3bb6916f3bec 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> ቆሟል"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> አሁንም እያቆመ ነው"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> አሁንም እያቆመ ነው"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"መተግበሪያውን እንደገና ክፈት"</string>
<string name="aerr_report" msgid="5371800241488400617">"ግብረመልስ ይላኩ"</string>
<string name="aerr_close" msgid="2991640326563991340">"ዝጋ"</string>
<string name="aerr_mute" msgid="1974781923723235953">"መሣሪያ ዳግም እስኪጀመር ድረስ ድምጽ ያጥፉ"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS ጥያቄ ወደ USSD ጥያቄ ተሻሽሎዋል።"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS ጥያቄ ወደ አዲስ SS ጥያቄ ተሻሽሎዋል።"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"የስራ መገለጫ"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"የዘርጋ አዝራር"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"የAndroid USB Peripheral ወደብ"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index f1da1a54e211..5cef43e8e46d 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1086,8 +1086,7 @@
<string name="aerr_process" msgid="6201597323218674729">"توقفت <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"يستمر التطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> في التوقف."</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"تستمر عملية <xliff:g id="PROCESS">%1$s</xliff:g> في التوقف."</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"فتح التطبيق مرة أخرى"</string>
<string name="aerr_report" msgid="5371800241488400617">"إرسال تعليقات"</string>
<string name="aerr_close" msgid="2991640326563991340">"إغلاق"</string>
<string name="aerr_mute" msgid="1974781923723235953">"التعطيل حتى إعادة تشغيل الجهاز"</string>
@@ -1750,9 +1749,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"‏يتم تعديل طلب SS إلى طلب USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"‏يتم تعديل طلب SS إلى طلب SS الجديد."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"الملف الشخصي للعمل"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"زر \"توسيع\""</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"‏منفذ الأجهزة الطرفية المزودة بكابل USB ونظام التشغيل Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml
index 1bd7ef012325..452d4f8a8742 100644
--- a/core/res/res/values-az-rAZ/strings.xml
+++ b/core/res/res/values-az-rAZ/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ildə</item>
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ildə</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dəqiqə əvvəl</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dəqiqə əvvəl</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> saat əvvəl</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> saat əvvəl</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> gün əvvəl</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> gün əvvəl</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> il əvvəl</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> il əvvəl</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dəqiqəyə</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dəqiqəyə</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> saata</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> saata</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> günə</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> günə</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ilə</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ilə</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video problemi"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Bu video bu cihaza strim olunmaq üçün uyğun deyil."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Bu video oxumur"</string>
@@ -1588,7 +1612,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"İş profili"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB Peripheral Port"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 80bfd85f23b1..0c6ebc78157e 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -1017,8 +1017,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> je zaustavljen"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> se stalno zaustavlja"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> se stalno zaustavlja"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Ponovo otvori aplikaciju"</string>
<string name="aerr_report" msgid="5371800241488400617">"Pošaljite povratne informacije"</string>
<string name="aerr_close" msgid="2991640326563991340">"Zatvori"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignoriši dok se uređaj ne pokrene ponovo"</string>
@@ -1645,9 +1644,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS zahtev je promenjen u USSD zahtev."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS zahtev je promenjen u novi SS zahtev."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profil za Work"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Dugme Proširi"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB port za periferijske uređaje"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-be-rBY/strings.xml b/core/res/res/values-be-rBY/strings.xml
index e1821d90d826..68e5a1630170 100644
--- a/core/res/res/values-be-rBY/strings.xml
+++ b/core/res/res/values-be-rBY/strings.xml
@@ -1040,8 +1040,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Працэс <xliff:g id="PROCESS">%1$s</xliff:g> спыніўся"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> шматразова спыняе працу"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> шматразова спыняе працу"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Адкрыць праграму зноў"</string>
<string name="aerr_report" msgid="5371800241488400617">"Адправіць водгук"</string>
<string name="aerr_close" msgid="2991640326563991340">"Закрыць"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Адключыць гук да перазагрузкі прылады"</string>
@@ -1680,9 +1679,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Запыт SS зменены на запыт USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Запыт SS зменены на новы запыт SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Працоўны профіль"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Кнопка \"Разгарнуць\""</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Перыферыйны USB-порт Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 45be744fbcd1..5a8a259b4815 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> спря"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> спира многократно"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> спира многократно"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Повторно отваряне на приложението"</string>
<string name="aerr_report" msgid="5371800241488400617">"Изпращане на отзиви"</string>
<string name="aerr_close" msgid="2991640326563991340">"Затваряне"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Спиране, докато устройството се рестартира"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS заявката е променена на USSD заявка."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS заявката е променена на нова SS заявка."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Служебен потребителски профил"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Бутон за разгъване"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Периферен USB порт под Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml
index 6394a962066c..8d0e46a752e4 100644
--- a/core/res/res/values-bn-rBD/strings.xml
+++ b/core/res/res/values-bn-rBD/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> বন্ধ হয়েছে"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> বারবার বন্ধ হচ্ছে"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> বারবার বন্ধ হচ্ছে"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"অ্যাপ্লিকেশানটিকে আবার খুলুন"</string>
<string name="aerr_report" msgid="5371800241488400617">"প্রতিক্রিয়া পাঠান"</string>
<string name="aerr_close" msgid="2991640326563991340">"বন্ধ করুন"</string>
<string name="aerr_mute" msgid="1974781923723235953">"ডিভাইসটি পুনরায় আরম্ভ না হওয়া পর্যন্ত নিঃশব্দ করুন"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS অনুরোধটিকে নতুন USSD অনুরোধে রুপান্তরিত করা হয়েছে৷"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS অনুরোধটিকে নতুন SS অনুরোধে রুপান্তরিত করা হয়েছে৷"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"কর্মস্থলের প্রোফাইল"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"প্রসারিত করার বোতাম"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB পেরিফেরাল পোর্ট"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-bs-rBA/strings.xml b/core/res/res/values-bs-rBA/strings.xml
index 6316ac381156..b12804d2d9b9 100644
--- a/core/res/res/values-bs-rBA/strings.xml
+++ b/core/res/res/values-bs-rBA/strings.xml
@@ -1019,8 +1019,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> je zaustavljen"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> se stalno zaustavlja"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> se stalno zaustavlja"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Ponovo otvori aplikaciju"</string>
<string name="aerr_report" msgid="5371800241488400617">"Pošalji povratne informacije"</string>
<string name="aerr_close" msgid="2991640326563991340">"Zatvori"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Isključiti zvuk dok se uređaj ponovo ne pokrene"</string>
@@ -1650,9 +1649,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS zahtjev je izmijenjen u USSD zahtjev."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS zahtjev je izmijenjen u novi SS zahtjev."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profil za posao"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Dugme za proširivanje"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB ulaz za periferijske uređaje"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index d17c43af0876..b0694c63c625 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -405,7 +405,7 @@
<string name="permlab_changeNetworkState" msgid="958884291454327309">"canviar la connectivitat de xarxa"</string>
<string name="permdesc_changeNetworkState" msgid="6789123912476416214">"Permet que l\'aplicació pugui canviar l\'estat de connectivitat de la xarxa."</string>
<string name="permlab_changeTetherState" msgid="5952584964373017960">"Canvia la connectivitat de compartició de xarxa"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permet que l\'aplicació canviï l\'estat de la connectivitat de la xarxa d\'ancoratge."</string>
+ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permet que l\'aplicació canviï l\'estat de la connectivitat de la xarxa compartida."</string>
<string name="permlab_accessWifiState" msgid="5202012949247040011">"veure connexions Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="5002798077387803726">"Permet que l\'aplicació visualitzi informació sobre les xarxes Wi-Fi, com ara si la Wi-Fi està activada i el nom dels dispositius Wi-Fi connectats."</string>
<string name="permlab_changeWifiState" msgid="6550641188749128035">"connectar-se a xarxes Wi-Fi i desconnectar-se"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> s\'ha aturat"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"L\'aplicació <xliff:g id="APPLICATION">%1$s</xliff:g> s\'atura contínuament"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"El procés <xliff:g id="PROCESS">%1$s</xliff:g> s\'atura contínuament"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Torna a obrir l\'aplicació"</string>
<string name="aerr_report" msgid="5371800241488400617">"Envia suggeriments"</string>
<string name="aerr_close" msgid="2991640326563991340">"Tanca"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Silencia fins que es reiniciï el dispositiu"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"La sol·licitud SS s\'ha transformat en una sol·licitud USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"La sol·licitud SS s\'ha transformat en una sol·licitud SS nova."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Perfil professional"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Botó Desplega"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port perifèric USB d\'Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index efd227105fac..84b79c91a2f4 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -1040,8 +1040,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> přestal fungovat"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"Aplikace <xliff:g id="APPLICATION">%1$s</xliff:g> pravidelně přestává fungovat"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Aplikace <xliff:g id="PROCESS">%1$s</xliff:g> pravidelně přestává fungovat"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Znovu spustit aplikaci"</string>
<string name="aerr_report" msgid="5371800241488400617">"Odeslat zpětnou vazbu"</string>
<string name="aerr_close" msgid="2991640326563991340">"Zavřít"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignorovat do restartu zařízení"</string>
@@ -1680,9 +1679,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Požadavek SS byl změněn na požadavek USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Požadavek SS byl změněn na nový požadavek SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Pracovní profil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Tlačítko rozbalení"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port USB pro periferní zařízení – Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 5602c0ff6c99..29d3d1c47153 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> er stoppet"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> bliver ved med at stoppe"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> bliver ved med at stoppe"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Åbn appen igen"</string>
<string name="aerr_report" msgid="5371800241488400617">"Send feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Luk"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignorer, indtil enheden genstarter"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS-anmodningen er ændret til en USSD-anmodning."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS-anmodningen er ændret til en ny SS-anmodning."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Arbejdsprofil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Udvid-knap"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"USB-port til eksterne Android-enheder"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index b981f44b7d32..3ae6d0c748b0 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g> a</item>
<item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g> a</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other">vor <xliff:g id="COUNT_1">%d</xliff:g> Minuten</item>
+ <item quantity="one">vor <xliff:g id="COUNT_0">%d</xliff:g> Minute</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other">vor <xliff:g id="COUNT_1">%d</xliff:g> Stunden</item>
+ <item quantity="one">vor <xliff:g id="COUNT_0">%d</xliff:g> Stunde</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other">vor <xliff:g id="COUNT_1">%d</xliff:g> Tagen</item>
+ <item quantity="one">vor <xliff:g id="COUNT_0">%d</xliff:g> Tag</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other">vor <xliff:g id="COUNT_1">%d</xliff:g> Jahren</item>
+ <item quantity="one">vor <xliff:g id="COUNT_0">%d</xliff:g> Jahr</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g> Minuten</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g> Minute</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g> Stunden</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g> Stunde</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g> Tagen</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g> Tag</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g> Jahren</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g> Jahr</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Videoprobleme"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Dieses Video ist nicht für Streaming auf diesem Gerät gültig."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Video kann nicht wiedergegeben werden."</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> wurde beendet"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> wird wiederholt beendet"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> wird wiederholt beendet"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"App wieder öffnen"</string>
<string name="aerr_report" msgid="5371800241488400617">"Feedback geben"</string>
<string name="aerr_close" msgid="2991640326563991340">"Schließen"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Bis zum Neustart des Geräts ausblenden"</string>
@@ -1586,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS-Anfrage wird in USSD-Anfrage geändert."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS-Anfrage wird in neue SS-Anfrage geändert."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Arbeitsprofil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Schaltfläche \"Maximieren\""</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"USB-Port für Android-Peripheriegeräte"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 122ab382cc77..015c93b75698 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -600,7 +600,7 @@
<string name="phoneTypeCompanyMain" msgid="540434356461478916">"Κύρια εταιρική"</string>
<string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
<string name="phoneTypeMain" msgid="6766137010628326916">"Κύριος"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Άλλο fax"</string>
+ <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Άλλο φαξ"</string>
<string name="phoneTypeRadio" msgid="4093738079908667513">"Πομπός"</string>
<string name="phoneTypeTelex" msgid="3367879952476250512">"Τέλεξ"</string>
<string name="phoneTypeTtyTdd" msgid="8606514378585000044">"Τηλέφωνο TTY/TDD"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Η διαδικασία <xliff:g id="PROCESS">%1$s</xliff:g> έχει διακοπεί"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"Η εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> διακόπτεται επανειλημμένα"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Η διαδικασία <xliff:g id="PROCESS">%1$s</xliff:g> διακόπτεται επανειλημμένα"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Ανοίξτε ξανά την εφαρμογή"</string>
<string name="aerr_report" msgid="5371800241488400617">"Αποστολή σχολίων"</string>
<string name="aerr_close" msgid="2991640326563991340">"Κλείσιμο"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Σίγαση μέχρι την επανεκκίνηση της συσκευής"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Το αίτημα SS τροποποιήθηκε σε αίτημα USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Το αίτημα SS τροποποιήθηκε σε νέο αίτημα SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Προφίλ εργασίας"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Κουμπί ανάπτυξης"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Περιφερειακή θύρα USB Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index f733bb1ce819..6d14b10ea282 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -239,7 +239,7 @@
<string name="notification_hidden_text" msgid="1135169301897151909">"Contents hidden"</string>
<string name="notification_hidden_by_policy_text" msgid="9004631276932584600">"Contents hidden by policy"</string>
<string name="safeMode" msgid="2788228061547930246">"Safe mode"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android system"</string>
+ <string name="android_system_label" msgid="6577375335728551336">"Android System"</string>
<string name="user_owner_label" msgid="1119010402169916617">"Switch to Personal"</string>
<string name="managed_profile_label" msgid="5289992269827577857">"Switch to Work"</string>
<string name="permgrouplab_contacts" msgid="3657758145679177612">"Contacts"</string>
@@ -971,7 +971,7 @@
<string name="whichViewApplicationLabel" msgid="2666774233008808473">"Open"</string>
<string name="whichEditApplication" msgid="144727838241402655">"Edit with"</string>
<string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit with %1$s"</string>
- <string name="whichEditApplicationLabel" msgid="7183524181625290300">"(edit)"</string>
+ <string name="whichEditApplicationLabel" msgid="7183524181625290300">"Edit"</string>
<string name="whichSendApplication" msgid="6902512414057341668">"Share with"</string>
<string name="whichSendApplicationNamed" msgid="2799370240005424391">"Share with %1$s"</string>
<string name="whichSendApplicationLabel" msgid="4579076294675975354">"Shared"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> has stopped"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> keeps stopping"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> keeps stopping"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Open app again"</string>
<string name="aerr_report" msgid="5371800241488400617">"Send feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Close"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Mute until device restarts"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS request is modified to USSD request."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS request is modified to new SS request."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Work profile"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Expand button"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB Peripheral Port"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index f733bb1ce819..6d14b10ea282 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -239,7 +239,7 @@
<string name="notification_hidden_text" msgid="1135169301897151909">"Contents hidden"</string>
<string name="notification_hidden_by_policy_text" msgid="9004631276932584600">"Contents hidden by policy"</string>
<string name="safeMode" msgid="2788228061547930246">"Safe mode"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android system"</string>
+ <string name="android_system_label" msgid="6577375335728551336">"Android System"</string>
<string name="user_owner_label" msgid="1119010402169916617">"Switch to Personal"</string>
<string name="managed_profile_label" msgid="5289992269827577857">"Switch to Work"</string>
<string name="permgrouplab_contacts" msgid="3657758145679177612">"Contacts"</string>
@@ -971,7 +971,7 @@
<string name="whichViewApplicationLabel" msgid="2666774233008808473">"Open"</string>
<string name="whichEditApplication" msgid="144727838241402655">"Edit with"</string>
<string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit with %1$s"</string>
- <string name="whichEditApplicationLabel" msgid="7183524181625290300">"(edit)"</string>
+ <string name="whichEditApplicationLabel" msgid="7183524181625290300">"Edit"</string>
<string name="whichSendApplication" msgid="6902512414057341668">"Share with"</string>
<string name="whichSendApplicationNamed" msgid="2799370240005424391">"Share with %1$s"</string>
<string name="whichSendApplicationLabel" msgid="4579076294675975354">"Shared"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> has stopped"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> keeps stopping"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> keeps stopping"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Open app again"</string>
<string name="aerr_report" msgid="5371800241488400617">"Send feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Close"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Mute until device restarts"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS request is modified to USSD request."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS request is modified to new SS request."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Work profile"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Expand button"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB Peripheral Port"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index f733bb1ce819..6d14b10ea282 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -239,7 +239,7 @@
<string name="notification_hidden_text" msgid="1135169301897151909">"Contents hidden"</string>
<string name="notification_hidden_by_policy_text" msgid="9004631276932584600">"Contents hidden by policy"</string>
<string name="safeMode" msgid="2788228061547930246">"Safe mode"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android system"</string>
+ <string name="android_system_label" msgid="6577375335728551336">"Android System"</string>
<string name="user_owner_label" msgid="1119010402169916617">"Switch to Personal"</string>
<string name="managed_profile_label" msgid="5289992269827577857">"Switch to Work"</string>
<string name="permgrouplab_contacts" msgid="3657758145679177612">"Contacts"</string>
@@ -971,7 +971,7 @@
<string name="whichViewApplicationLabel" msgid="2666774233008808473">"Open"</string>
<string name="whichEditApplication" msgid="144727838241402655">"Edit with"</string>
<string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit with %1$s"</string>
- <string name="whichEditApplicationLabel" msgid="7183524181625290300">"(edit)"</string>
+ <string name="whichEditApplicationLabel" msgid="7183524181625290300">"Edit"</string>
<string name="whichSendApplication" msgid="6902512414057341668">"Share with"</string>
<string name="whichSendApplicationNamed" msgid="2799370240005424391">"Share with %1$s"</string>
<string name="whichSendApplicationLabel" msgid="4579076294675975354">"Shared"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> has stopped"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> keeps stopping"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> keeps stopping"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Open app again"</string>
<string name="aerr_report" msgid="5371800241488400617">"Send feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Close"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Mute until device restarts"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS request is modified to USSD request."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS request is modified to new SS request."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Work profile"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Expand button"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB Peripheral Port"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 6af2e46c9aac..0993475e7727 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> años</item>
<item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> año</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other">hace <xliff:g id="COUNT_1">%d</xliff:g> minutos</item>
+ <item quantity="one">hace <xliff:g id="COUNT_0">%d</xliff:g> minuto</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other">hace <xliff:g id="COUNT_1">%d</xliff:g> horas</item>
+ <item quantity="one">hace <xliff:g id="COUNT_0">%d</xliff:g> hora</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other">hace <xliff:g id="COUNT_1">%d</xliff:g> días</item>
+ <item quantity="one">hace <xliff:g id="COUNT_0">%d</xliff:g> día</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other">hace <xliff:g id="COUNT_1">%d</xliff:g> años</item>
+ <item quantity="one">hace <xliff:g id="COUNT_0">%d</xliff:g> año</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> minutos</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> minuto</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> horas</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> hora</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> días</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> día</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> años</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> año</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problemas de video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"No es posible transmitir este video al dispositivo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"No se puede reproducir el video."</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> se detuvo"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> continúa fallando"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> continúa fallando"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Volver a abrir la app"</string>
<string name="aerr_report" msgid="5371800241488400617">"Enviar comentarios"</string>
<string name="aerr_close" msgid="2991640326563991340">"Cerrar"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Silenciar hasta que se reinicie el dispositivo"</string>
@@ -1586,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"La solicitud SS cambió por una solicitud USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"La solicitud SS cambió por una nueva solicitud SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Perfil de trabajo"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Botón Expandir"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Puerto USB de periféricos Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 9ecba3653000..ffbb89447605 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1612,7 +1612,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Perfil de trabajo"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Puerto periférico USB (Android)"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml
index 837fbe72b742..c1ec9bc2d647 100644
--- a/core/res/res/values-et-rEE/strings.xml
+++ b/core/res/res/values-et-rEE/strings.xml
@@ -1612,7 +1612,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Tööprofiil"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Androidi väline USB-port"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml
index 7e6a120290b6..94dcf5a6052f 100644
--- a/core/res/res/values-eu-rES/strings.xml
+++ b/core/res/res/values-eu-rES/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Gelditu egin da <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"Behin eta berriz gelditzen ari da <xliff:g id="APPLICATION">%1$s</xliff:g>"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Behin eta berriz gelditzen ari da <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Ireki aplikazioa berriro"</string>
<string name="aerr_report" msgid="5371800241488400617">"Bidali iritzia"</string>
<string name="aerr_close" msgid="2991640326563991340">"Itxi"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ezkutatu gailua berrabiarazi arte"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS eskaera USSD eskaerara aldatu da."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS eskaera SS eskaera berrira aldatu da."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Work profila"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Zabaltzeko botoia"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB ataka periferikoa"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 582e816c53ab..eab48c891ea8 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -148,7 +148,7 @@
<string name="httpError" msgid="7956392511146698522">"خطایی در شبکه وجود داشت."</string>
<string name="httpErrorLookup" msgid="4711687456111963163">"‏URL پیدا نشد."</string>
<string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"‏طرح کلی احراز هویت سایت پشتیبانی نمی‌‎شود."</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"تأیید اعتبار ناموفق بود."</string>
+ <string name="httpErrorAuth" msgid="1435065629438044534">"راستی‌آزمایی ناموفق بود."</string>
<string name="httpErrorProxyAuth" msgid="1788207010559081331">"احراز هویت از طریق سرور پروکسی انجام نشد."</string>
<string name="httpErrorConnect" msgid="8714273236364640549">"اتصال به سرور انجام نشد."</string>
<string name="httpErrorIO" msgid="2340558197489302188">"برقراری ارتباط با سرور ممکن نبود. بعداً دوباره امتحان کنید."</string>
@@ -216,7 +216,7 @@
<string name="global_action_power_off" msgid="4471879440839879722">"خاموش کردن"</string>
<string name="global_action_bug_report" msgid="7934010578922304799">"گزارش اشکال"</string>
<string name="bugreport_title" msgid="2667494803742548533">"گرفتن گزارش اشکال"</string>
- <string name="bugreport_message" msgid="398447048750350456">"این گزارش اطلاعات مربوط به وضعیت دستگاه کنونی شما را جمع‌آوری می‌کند تا به صورت یک پیام ایمیل ارسال شود. از زمان شروع گزارش اشکال تا آماده شدن برای ارسال اندکی زمان می‌برد؛ لطفاً شکیبا باشید."</string>
+ <string name="bugreport_message" msgid="398447048750350456">"این گزارش اطلاعات مربوط به وضعیت دستگاه کنونی شما را جمع‌آوری می‌کند تا به صورت یک پیام رایانامه ارسال شود. از زمان شروع گزارش اشکال تا آماده شدن برای ارسال اندکی زمان می‌برد؛ لطفاً شکیبا باشید."</string>
<string name="bugreport_option_interactive_title" msgid="8635056131768862479">"گزارش تعاملی"</string>
<string name="bugreport_option_interactive_summary" msgid="229299488536107968">"در بیشتر شرایط از این گزینه استفاده کنید. به شما امکان ردیابی پیشرفت گزارش و وارد کردن جزئیات بیشتری درباره مشکل را می‌دهد. ممکن است برخی از بخش‌هایی را که کمتر استفاده شده و باعث افزایش طول زمان گزارش می‌شود حذف کند."</string>
<string name="bugreport_option_full_title" msgid="6354382025840076439">"گزارش کامل"</string>
@@ -350,7 +350,7 @@
<string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"به برنامه امکان می‌دهد همه رویدادهای تقویم ذخیره شده در رایانهٔ لوحی شما را بخواند، از جمله رویدادهای دوستان یا همکاران. این ممکن است به برنامه امکان دهد داده‌های تقویم شما را صرفنظر از محرمانه یا حساس بودن آن‌ها به اشتراک گذاشته یا ذخیره کند."</string>
<string name="permdesc_readCalendar" product="tv" msgid="3191352452242394196">"به برنامه اجازه می‌دهد تا همه رویدادهای تقویم ذخیره‌شده روی تلویزیون از جمله رویدادهای دوستان یا همکاران را بخواند. شاید به برنامه اجازه دهد تا اطلاعات تقویم را صرفنظر از محرمانه بودن یا حساسیت، به اشتراک بگذارد یا ذخیره کند."</string>
<string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"به برنامه امکان می‌دهد همه رویدادهای تقویم ذخیره شده در تلفن شما را بخواند، از جمله رویدادهای دوستان یا همکاران. این ممکن است به برنامه امکان دهد داده‌های تقویم شما را صرفنظر از محرمانه یا حساس بودن آن‌ها به اشتراک گذاشته یا ذخیره کند."</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"افزودن یا تغییر رویدادهای تقویم و ارسال ایمیل به مهمانان بدون دخالت مالک"</string>
+ <string name="permlab_writeCalendar" msgid="8438874755193825647">"افزودن یا تغییر رویدادهای تقویم و ارسال رایانامه به مهمانان بدون دخالت مالک"</string>
<string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"به برنامه اجازه می‌دهد رویدادهایی را که می‌توانید در رایانهٔ لوحی خود اصلاح نمایید، از جمله رویدادهای دوستان یا همکاران خود را، اضافه یا حذف کرده یا تغییر دهد. این ویژگی ممکن است به برنامه اجازه دهد پیام‌هایی را که به نظر می‌رسد از مالکین تقویم رسیده است ارسال نموده یا رویدادها را بدون اطلاع مالک اصلاح کنند."</string>
<string name="permdesc_writeCalendar" product="tv" msgid="1273290605500902507">"به برنامه اجازه می‌دهد به افزودن، حذف یا تغییر رویدادهایی بپردازد که می‌توانید در تلویزیون‌تان تغییر دهید، از جمله رویدادهای دوستان یا همکاران خود. این ویژگی شاید به برنامه اجازه دهد پیامهایی را ارسال کند که به نظر می‌رسد از جانب مالکین تقویم است یا رویدادها را بدون اطلاع مالک تغییر دهد."</string>
<string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"به برنامه اجازه می‌دهد رویدادهایی را که می‌توانید در تلفن خود اصلاح نمایید، از جمله رویدادهای دوستان یا همکاران خود را، اضافه یا حذف کرده یا تغییر دهد. این ویژگی ممکن است به برنامه اجازه دهد پیام‌هایی را که به نظر می‌رسد از مالکین تقویم رسیده است ارسال نموده یا رویدادها را بدون اطلاع مالک اصلاح کنند."</string>
@@ -717,7 +717,7 @@
<string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"بازگشایی قفل حساب"</string>
<string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"‏تلاش‎های زیادی برای کشیدن الگو صورت گرفته است"</string>
<string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"‏برای بازگشایی قفل، با حساب Google خود وارد سیستم شوید."</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"نام کاربری (ایمیل)"</string>
+ <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"نام کاربری (رایانامه)"</string>
<string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"گذرواژه"</string>
<string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"ورود به سیستم"</string>
<string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"نام کاربر یا گذرواژه نامعتبر است."</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> متوقف شده است"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> مرتب متوقف می‌شود"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> مرتب متوقف می‌شود"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"باز کردن دوباره برنامه"</string>
<string name="aerr_report" msgid="5371800241488400617">"ارسال بازخورد"</string>
<string name="aerr_close" msgid="2991640326563991340">"بستن"</string>
<string name="aerr_mute" msgid="1974781923723235953">"صامت کردن تا وقتی دستگاه راه‌اندازی مجدد شود"</string>
@@ -1396,7 +1395,7 @@
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"پین کدها منطبق نیستند"</string>
<string name="kg_login_too_many_attempts" msgid="6486842094005698475">"‏تلاش‎های زیادی برای کشیدن الگو صورت گرفته است"</string>
<string name="kg_login_instructions" msgid="1100551261265506448">"‏برای بازگشایی قفل، با حساب Google خود وارد سیستم شوید."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"نام کاربری (ایمیل)"</string>
+ <string name="kg_login_username_hint" msgid="5718534272070920364">"نام کاربری (رایانامه)"</string>
<string name="kg_login_password_hint" msgid="9057289103827298549">"گذرواژه"</string>
<string name="kg_login_submit_button" msgid="5355904582674054702">"ورود به سیستم"</string>
<string name="kg_login_invalid_input" msgid="5754664119319872197">"نام کاربری یا گذرواژه نامعتبر."</string>
@@ -1411,9 +1410,9 @@
<string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"شما به اشتباه <xliff:g id="NUMBER">%d</xliff:g> بار اقدام به باز کردن قفل رایانه لوحی کرده‌اید. رایانه لوحی اکنون به پیش‌فرض کارخانه بازنشانی می‌شود."</string>
<string name="kg_failed_attempts_now_wiping" product="tv" msgid="4987878286750741463">"<xliff:g id="NUMBER">%d</xliff:g> دفعه به صورت نادرست سعی کرده‌اید قفل تلویزیون را باز کنید. اکنون تلویزیون به تنظیمات پیش‌فرض کارخانه بازنشانی خواهد شد."</string>
<string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"شما به اشتباه <xliff:g id="NUMBER">%d</xliff:g> بار اقدام به باز کردن قفل تلفن کرده‌اید. این تلفن اکنون به پیش‌فرض کارخانه بازنشانی می‌شود."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"‏شما الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه کشیده‎اید. بعد از <xliff:g id="NUMBER_1">%2$d</xliff:g> تلاش ناموفق، از شما خواسته می‎شود که با استفاده از یک حساب ایمیل قفل رایانه لوحی خود را باز کنید.\n\n لطفاً پس از <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4224651132862313471">"الگوی بازگشایی‌تان را <xliff:g id="NUMBER_0">%1$d</xliff:g> دفعه به صورت نادرست رسم کرده‌اید. <xliff:g id="NUMBER_1">%2$d</xliff:g> پس از \n تلاش ناموفق دیگر، از شما خواسته می‌شود تا با استفاده از یک حساب ایمیل، قفل تلویزیون‌تان را باز کنید.\n پس از <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"‏شما الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه کشیده‌اید. پس از <xliff:g id="NUMBER_1">%2$d</xliff:g> تلاش ناموفق، از شما خواسته می‎شود که با استفاده از یک حساب ایمیل قفل تلفن خود را باز کنید.\n\n لطفاً پس از <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"‏شما الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه کشیده‎اید. بعد از <xliff:g id="NUMBER_1">%2$d</xliff:g> تلاش ناموفق، از شما خواسته می‎شود که با استفاده از یک حساب رایانامه قفل رایانه لوحی خود را باز کنید.\n\n لطفاً پس از <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4224651132862313471">"الگوی بازگشایی‌تان را <xliff:g id="NUMBER_0">%1$d</xliff:g> دفعه به صورت نادرست رسم کرده‌اید. <xliff:g id="NUMBER_1">%2$d</xliff:g> پس از \n تلاش ناموفق دیگر، از شما خواسته می‌شود تا با استفاده از یک حساب رایانامه، قفل تلویزیون‌تان را باز کنید.\n پس از <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"‏شما الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه کشیده‌اید. پس از <xliff:g id="NUMBER_1">%2$d</xliff:g> تلاش ناموفق، از شما خواسته می‎شود که با استفاده از یک حساب رایانامه قفل تلفن خود را باز کنید.\n\n لطفاً پس از <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
<string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"حذف"</string>
<string name="safe_media_volume_warning" product="default" msgid="2276318909314492312">"میزان صدا را به بالاتر از حد توصیه شده افزایش می‌دهید؟\n\nگوش دادن به صداهای بلند برای مدت طولانی می‌تواند به شنوایی‌تان آسیب وارد کند."</string>
@@ -1553,7 +1552,7 @@
<string name="package_installed_device_owner" msgid="8420696545959087545">"توسط سرپرستتان نصب شد"</string>
<string name="package_updated_device_owner" msgid="8856631322440187071">"توسط سرپرست شما به‌روزرسانی شد"</string>
<string name="package_deleted_device_owner" msgid="7650577387493101353">"توسط سرپرستتان حذف شد"</string>
- <string name="battery_saver_description" msgid="1960431123816253034">"برای کمک به بهبود عمر باتری، بهینه‌سازی باتری عملکرد دستگاهتان را کاهش می‌دهد و لرزش، سرویس‌های مبتنی بر مکان، و دسترسی به اکثر داده‌ها در پس‌زمینه را محدود می‌کند. ایمیل، پیام‌رسانی و برنامه‌های دیگری که به همگام‌سازی وابسته‌اند، تا زمانی‌که آن‌ها را باز نکنید نمی‌توانند به‌روز شوند.\n\nبهینه‌سازی باتری به‌صورت خودکار در هنگام شارژ شدن دستگاه خاموش می‌شود."</string>
+ <string name="battery_saver_description" msgid="1960431123816253034">"برای کمک به بهبود عمر باتری، بهینه‌سازی باتری عملکرد دستگاهتان را کاهش می‌دهد و لرزش، سرویس‌های مبتنی بر مکان، و دسترسی به اکثر داده‌ها در پس‌زمینه را محدود می‌کند. رایانامه، پیام‌رسانی و برنامه‌های دیگری که به همگام‌سازی وابسته‌اند، تا زمانی‌که آن‌ها را باز نکنید نمی‌توانند به‌روز شوند.\n\nبهینه‌سازی باتری به‌صورت خودکار در هنگام شارژ شدن دستگاه خاموش می‌شود."</string>
<string name="data_saver_description" msgid="6015391409098303235">"برای کمک به کاهش مصرف داده، «صرفه‌جویی داده» از ارسال و دریافت داده در پس‌زمینه از طرف بعضی برنامه‌ها جلوگیری می‌کند. برنامه‌ای که درحال‌حاضر استفاده می‌کنید می‌تواند به داده‌ها دسترسی داشته باشد اما دفعات دسترسی آن محدود است.این یعنی، برای مثال، تصاویر تا زمانی که روی آنها ضربه نزنید نشان داده نمی‌شوند."</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"صرفه‌جویی داده روشن شود؟"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"روشن کردن"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"‏درخواست SS به درخواست USSD اصلاح می‌شود."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"‏درخواست SS به درخواست SS جدید اصلاح می‌شود."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"نمایه کاری"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"دکمه بزرگ کردن"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"‏درگاه جانبی Android USB"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 2a8592a3e626..53cf86052ac8 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> pysähtyi."</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> pysähtyy toistuvasti."</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> pysähtyy toistuvasti."</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Avaa sovellus uudelleen"</string>
<string name="aerr_report" msgid="5371800241488400617">"Lähetä palautetta"</string>
<string name="aerr_close" msgid="2991640326563991340">"Sulje"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Mykistä laitteen uudelleenkäynnistykseen asti"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS-pyyntö muutettiin USSD-pyynnöksi."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS-pyyntö muutettiin uudeksi SS-pyynnöksi."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Työprofiili"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Laajennuspainike"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Androidin USB-oheislaiteportti"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 91b9420c362f..d6f86599a3e4 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> a cessé de fonctionner"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> plante continuellement"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> plante continuellement"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Rouvrir l\'application"</string>
<string name="aerr_report" msgid="5371800241488400617">"Envoyer des commentaires"</string>
<string name="aerr_close" msgid="2991640326563991340">"Fermer"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Désactiver jusqu\'au redémarrage de l\'appareil"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"La demande SS a été modifiée et est maintenant une demande USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"La demande SS a été modifiée et est maintenant une nouvelle demande SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profil professionnel"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Bouton Développer"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port USB de l\'appareil Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index b138187f3e40..84261784e9b0 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -597,14 +597,14 @@
<string name="phoneTypeOther" msgid="1544425847868765990">"Autre"</string>
<string name="phoneTypeCallback" msgid="2712175203065678206">"Rappel"</string>
<string name="phoneTypeCar" msgid="8738360689616716982">"Voiture"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Accueil entreprise"</string>
+ <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Entreprise (principal)"</string>
<string name="phoneTypeIsdn" msgid="8022453193171370337">"RNIS"</string>
<string name="phoneTypeMain" msgid="6766137010628326916">"Principal"</string>
<string name="phoneTypeOtherFax" msgid="8587657145072446565">"Autre télécopie"</string>
<string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
<string name="phoneTypeTelex" msgid="3367879952476250512">"Télex"</string>
<string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY/TTD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Mobile prof."</string>
+ <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Mobile pro"</string>
<string name="phoneTypeWorkPager" msgid="649938731231157056">"Bipeur prof."</string>
<string name="phoneTypeAssistant" msgid="5596772636128562884">"Assistant"</string>
<string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Le processus <xliff:g id="PROCESS">%1$s</xliff:g> a cessé de fonctionner."</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> ne cesse de s\'arrêter."</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Le processus \"<xliff:g id="PROCESS">%1$s</xliff:g>\" ne cesse de s\'arrêter."</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Rouvrir l\'application"</string>
<string name="aerr_report" msgid="5371800241488400617">"Envoyer des commentaires"</string>
<string name="aerr_close" msgid="2991640326563991340">"Fermer"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignorer jusqu\'au redémarrage de l\'appareil"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"La requête SS a été remplacée par une requête USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"La requête SS a été remplacée par une autre requête SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profil professionnel"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Bouton \"Développer\""</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port du périphérique USB Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml
index 44f1a8cf941d..41d737ecb8ad 100644
--- a/core/res/res/values-gl-rES/strings.xml
+++ b/core/res/res/values-gl-rES/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Detívose <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> segue deténdose"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> segue deténdose"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Abrir aplicación de novo"</string>
<string name="aerr_report" msgid="5371800241488400617">"Dános a túa opinión"</string>
<string name="aerr_close" msgid="2991640326563991340">"Pechar"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignorar fallos ata que o dispositivo se reinicie"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"A solicitude SS transformouse nunha solicitude USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"A solicitude SS transformouse nunha nova solicitude SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Perfil de traballo"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Botón Despregar"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Porto periférico USB de Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml
index 8e1dafc8e16b..2a4c122d871c 100644
--- a/core/res/res/values-gu-rIN/strings.xml
+++ b/core/res/res/values-gu-rIN/strings.xml
@@ -537,7 +537,7 @@
<string name="policylab_setGlobalProxy" msgid="2784828293747791446">"ઉપકરણ વૈશ્વિક પ્રોક્સી સેટ કરો"</string>
<string name="policydesc_setGlobalProxy" msgid="8459859731153370499">"નીતિ સક્ષમ હોય તે વખતે ઉપયોગ કરવા માટેના ઉપકરણ વૈશ્વિક પ્રોક્સીને સેટ કરો. ફક્ત ઉપકરણના માલિક વૈશ્વિક પ્રોક્સી સેટ કરી શકે છે."</string>
<string name="policylab_expirePassword" msgid="5610055012328825874">"સ્ક્રીન લૉક પાસવર્ડ સમાપ્તિ સેટ કરો"</string>
- <string name="policydesc_expirePassword" msgid="5367525762204416046">"કેટલીવાર સ્ક્રીન લૉક પાસવર્ડ, PIN અથવા નમૂનો બદલવો આવશ્યક છે તેને બદલો."</string>
+ <string name="policydesc_expirePassword" msgid="5367525762204416046">"કેટલીવાર સ્ક્રીન લૉક પાસવર્ડ, PIN અથવા પેટર્ન બદલવો આવશ્યક છે તેને બદલો."</string>
<string name="policylab_encryptedStorage" msgid="8901326199909132915">"સંગ્રહ એન્ક્રિપ્શન સેટ કરો"</string>
<string name="policydesc_encryptedStorage" msgid="2637732115325316992">"જરૂરી છે કે સંગ્રહિત ઍપ્લિકેશન એન્ક્રિપ્ટ થાય."</string>
<string name="policylab_disableCamera" msgid="6395301023152297826">"કૅમેરા અક્ષમ કરો"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> બંધ થઈ ગઈ છે"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> રોકાઈ રહી છે"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> રોકાઈ રહી છે"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"ઍપ્લિકેશન ફરીથી ખોલો"</string>
<string name="aerr_report" msgid="5371800241488400617">"પ્રતિસાદ મોકલો"</string>
<string name="aerr_close" msgid="2991640326563991340">"બંધ કરો"</string>
<string name="aerr_mute" msgid="1974781923723235953">"ઉપકરણ પુનઃપ્રારંભ ન થાય ત્યાં સુધી મ્યૂટ કરો"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS વિનંતીને USSD વિનંતી પર સંશોધિત કરી."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS વિનંતીને નવી SS વિનંતી પર સંશોધિત કરી."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"કાર્ય પ્રોફાઇલ"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"વિસ્તૃત કરો બટન"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB પેરિફેરલ પોર્ટ"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index bb405596e2d1..5bf6381668f8 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> रुक गई है"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> रुक रहा है"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> रुक रही है"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"ऐप्लिकेशन फिर से खोलें"</string>
<string name="aerr_report" msgid="5371800241488400617">"फ़ीडबैक भेजें"</string>
<string name="aerr_close" msgid="2991640326563991340">"बंद करें"</string>
<string name="aerr_mute" msgid="1974781923723235953">"डिवाइस पुन: प्रारंभ होने तक म्यूट करें"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS अनुरोध को USSD अनुरोध में बदल दिया गया है."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS अनुरोध को नए SS अनुरोध में बदल दिया गया है."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"कार्य प्रोफ़ाइल"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"विस्तृत करें बटन"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB पेरिफ़ेरल पोर्ट"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 6b81975c91c3..f22ef72ef055 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1017,8 +1017,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Postupak <xliff:g id="PROCESS">%1$s</xliff:g> je zaustavljen"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> neprekidno se ruši"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Postupak <xliff:g id="PROCESS">%1$s</xliff:g> neprekidno se ruši"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Ponovo otvori aplikaciju"</string>
<string name="aerr_report" msgid="5371800241488400617">"Pošalji povratne informacije"</string>
<string name="aerr_close" msgid="2991640326563991340">"Zatvori"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Zanemari do ponovnog pokretanja uređaja"</string>
@@ -1645,9 +1644,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS zahtjev izmijenjen je u USSD zahtjev."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS zahtjev izmijenjen je u novi SS zahtjev."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Radni profil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Gumb za proširivanje"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Androidov USB priključak za periferne uređaje"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 6aa6ec8a2b19..696fcb1bb3da 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> – az alkalmazás leállt"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"A(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazás állandóan leáll"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"A(z) <xliff:g id="PROCESS">%1$s</xliff:g> folyamat állandóan leáll"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Alkalmazás ismételt megnyitása"</string>
<string name="aerr_report" msgid="5371800241488400617">"Visszajelzés küldése"</string>
<string name="aerr_close" msgid="2991640326563991340">"Bezárás"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Némítás az eszköz újraindulásáig"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Az SS-kérés módosítva USSD-kérésre."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Az SS-kérés módosítva új SS-kérésre."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Munkaprofil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Kibontás gomb"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB-perifériaport"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml
index 826bc055ebc8..c0f270c3cf35 100644
--- a/core/res/res/values-hy-rAM/strings.xml
+++ b/core/res/res/values-hy-rAM/strings.xml
@@ -1612,7 +1612,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Աշխատանքային պրոֆիլ"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB արտաքին միացք"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 30abbbfd8c25..09f443e4d166 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> telah berhenti"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> terus berhenti"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> terus berhenti"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Buka aplikasi lagi"</string>
<string name="aerr_report" msgid="5371800241488400617">"Kirim masukan"</string>
<string name="aerr_close" msgid="2991640326563991340">"Tutup"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Bisukan hingga perangkat dimulai ulang"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Permintaan SS diubah menjadi permintaan USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Permintaan SS diubah menjadi permintaan SS baru."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profil kerja"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Tombol luaskan"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port Periferal USB Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml
index 05b3f7462d31..6deef355202c 100644
--- a/core/res/res/values-is-rIS/strings.xml
+++ b/core/res/res/values-is-rIS/strings.xml
@@ -891,14 +891,38 @@
<item quantity="one">eftir <xliff:g id="COUNT_1">%d</xliff:g> ár</item>
<item quantity="other">eftir <xliff:g id="COUNT_1">%d</xliff:g> ár</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="one">fyrir <xliff:g id="COUNT_1">%d</xliff:g> mínútu</item>
+ <item quantity="other">fyrir <xliff:g id="COUNT_1">%d</xliff:g> mínútum</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="one">fyrir <xliff:g id="COUNT_1">%d</xliff:g> klukkustund</item>
+ <item quantity="other">fyrir <xliff:g id="COUNT_1">%d</xliff:g> klukkustundum</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="one">fyrir <xliff:g id="COUNT_1">%d</xliff:g> degi</item>
+ <item quantity="other">fyrir <xliff:g id="COUNT_1">%d</xliff:g> dögum</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="one">fyrir <xliff:g id="COUNT_1">%d</xliff:g> ári</item>
+ <item quantity="other">fyrir <xliff:g id="COUNT_1">%d</xliff:g> árum</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="one">eftir <xliff:g id="COUNT_1">%d</xliff:g> mínútu</item>
+ <item quantity="other">eftir <xliff:g id="COUNT_1">%d</xliff:g> mínútur</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="one">eftir <xliff:g id="COUNT_1">%d</xliff:g> klukkustund</item>
+ <item quantity="other">eftir <xliff:g id="COUNT_1">%d</xliff:g> klukkustundir</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="one">eftir <xliff:g id="COUNT_1">%d</xliff:g> dag</item>
+ <item quantity="other">eftir <xliff:g id="COUNT_1">%d</xliff:g> daga</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="one">eftir <xliff:g id="COUNT_1">%d</xliff:g> ár</item>
+ <item quantity="other">eftir <xliff:g id="COUNT_1">%d</xliff:g> ár</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Vandamál með myndskeið"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Þetta myndskeið er ekki gjaldgengt fyrir straumspilun í þessu tæki."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Ekki er hægt að spila þetta myndskeið."</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> stöðvaðist"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> stöðvast ítrekað"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> stöðvast ítrekað"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Opna forrit aftur"</string>
<string name="aerr_report" msgid="5371800241488400617">"Senda ábendingu"</string>
<string name="aerr_close" msgid="2991640326563991340">"Loka"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Þagga þangað til tæki er endurræst"</string>
@@ -1589,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS-beiðni er breytt í USSD-beiðni."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS-beiðni er breytt í nýja SS-beiðni."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Vinnusnið"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Stækka hnapp"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB-tengi fyrir jaðartæki"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 00238abe356b..e8a7de87675a 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Il processo <xliff:g id="PROCESS">%1$s</xliff:g> si è interrotto"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"L\'app <xliff:g id="APPLICATION">%1$s</xliff:g> continua a interrompersi"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Il processo <xliff:g id="PROCESS">%1$s</xliff:g> continua a interrompersi"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Riapri l\'app"</string>
<string name="aerr_report" msgid="5371800241488400617">"Invia feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Chiudi"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Disattiva fino al riavvio del dispositivo"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"La richiesta SS è stata modificata in richiesta USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"La richiesta SS è stata modificata in nuova richiesta SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profilo di lavoro"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Pulsante Espandi"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Porta periferica USB Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index d9bac461a422..ae75d80b0639 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1040,8 +1040,7 @@
<string name="aerr_process" msgid="6201597323218674729">"התהליך <xliff:g id="PROCESS">%1$s</xliff:g> הפסיק"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"האפליקציה <xliff:g id="APPLICATION">%1$s</xliff:g> נעצרת שוב ושוב"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"האפליקציה <xliff:g id="PROCESS">%1$s</xliff:g> נעצרת שוב ושוב"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"פתח שוב את האפליקציה"</string>
<string name="aerr_report" msgid="5371800241488400617">"שלח משוב"</string>
<string name="aerr_close" msgid="2991640326563991340">"סגור"</string>
<string name="aerr_mute" msgid="1974781923723235953">"השתק עד הפעלה מחדש של המכשיר"</string>
@@ -1680,9 +1679,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"‏בקשת SS שונתה לבקשת USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"‏בקשת SS שונתה לבקשת SS חדשה."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"פרופיל עבודה"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"לחצן הרחבה"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"‏יציאת USB בציוד היקפי של Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 873be59348ad..bb65569241e1 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> が停止しました"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"「<xliff:g id="APPLICATION">%1$s</xliff:g>」が繰り返し停止しています"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"「<xliff:g id="PROCESS">%1$s</xliff:g>」が繰り返し停止しています"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"アプリを再起動"</string>
<string name="aerr_report" msgid="5371800241488400617">"フィードバックを送信"</string>
<string name="aerr_close" msgid="2991640326563991340">"閉じる"</string>
<string name="aerr_mute" msgid="1974781923723235953">"端末が再起動するまでミュート"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SSリクエストはUSSDリクエストに変更されました。"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SSリクエストは新しいSSリクエストに変更されました。"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"仕事用プロファイル"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"展開ボタン"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB周辺機器ポート"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml
index 599223ab6f15..b96603421a91 100644
--- a/core/res/res/values-ka-rGE/strings.xml
+++ b/core/res/res/values-ka-rGE/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> შეწყდა"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> განუწყვეტლივ ჩერდება"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> განუწყვეტლივ წყდება"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"აპის ხელახლა გახსნა"</string>
<string name="aerr_report" msgid="5371800241488400617">"გამოხმაურება"</string>
<string name="aerr_close" msgid="2991640326563991340">"დახურვა"</string>
<string name="aerr_mute" msgid="1974781923723235953">"დადუმება მოწყობილობის გადატვირთვამდე"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS მოთხოვნა შეიცვალა USSD მოთხოვნით."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS მოთხოვნა შეიცვალა ახალი SS მოთხოვნით."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"სამსახურის პროფილი"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"გაშლის ღილაკი"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android-ის პერიფერიული USB პორტი"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml
index b7ea4b0082d7..156f53b08fcb 100644
--- a/core/res/res/values-kk-rKZ/strings.xml
+++ b/core/res/res/values-kk-rKZ/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> тоқтады"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> тоқтай береді"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> тоқтай береді"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Қолданбаны қайта ашу"</string>
<string name="aerr_report" msgid="5371800241488400617">"Пікір жіберу"</string>
<string name="aerr_close" msgid="2991640326563991340">"Жабу"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Құрылғы қайта іске қосылғанша дыбысын өшіру"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS сұрауы USSD сұрауына өзгертілді."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS сұрауы жаңа SS сұрауына өзгертілді."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Жұмыс профилі"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Жаю түймесі"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB перифериялық порты"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml
index 4e34ca5115d4..18055b1b4405 100644
--- a/core/res/res/values-km-rKH/strings.xml
+++ b/core/res/res/values-km-rKH/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other">ក្នុងពេល <xliff:g id="COUNT_1">%d</xliff:g>ឆ</item>
<item quantity="one">ក្នុងពេល <xliff:g id="COUNT_0">%d</xliff:g>ឆ</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> នាទីមុន</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> នាទីមុន</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ម៉ោងមុន</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ម៉ោងមុន</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ថ្ងៃមុន</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ថ្ងៃមុន</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ឆ្នាំមុន</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ឆ្នាំមុន</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other">ក្នុងរយៈពេល <xliff:g id="COUNT_1">%d</xliff:g> នាទីទៀត</item>
+ <item quantity="one">ក្នុងរយៈពេល <xliff:g id="COUNT_0">%d</xliff:g> នាទីទៀត</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other">ក្នុងរយៈពេល <xliff:g id="COUNT_1">%d</xliff:g> ម៉ោងទៀត</item>
+ <item quantity="one">ក្នុងរយៈពេល <xliff:g id="COUNT_0">%d</xliff:g> ម៉ោងទៀត</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other">ក្នុងរយៈពេល <xliff:g id="COUNT_1">%d</xliff:g> ថ្ងៃទៀត</item>
+ <item quantity="one">ក្នុងរយៈពេល <xliff:g id="COUNT_0">%d</xliff:g> ថ្ងៃទៀត</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other">ក្នុងរយៈពេល <xliff:g id="COUNT_1">%d</xliff:g> ឆ្នាំទៀត</item>
+ <item quantity="one">ក្នុងរយៈពេល <xliff:g id="COUNT_0">%d</xliff:g> ឆ្នាំទៀត</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"បញ្ហា​វីដេអូ"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"វីដេអូ​នេះ​មិន​ត្រឹមត្រូវ​សម្រាប់​​ចរន្ត​ចូល​ឧបករណ៍​នេះ។"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"មិន​អាច​ចាក់​វីដេអូ​នេះ។"</string>
@@ -972,8 +996,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> បានឈប់"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> ឈប់ដំណើរការម្តងហើយម្តងទៀត"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> ឈប់ដំណើរការម្តងហើយម្តងទៀត"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"បើកកម្មវិធីម្តងទៀត"</string>
<string name="aerr_report" msgid="5371800241488400617">"ផ្ញើមតិ"</string>
<string name="aerr_close" msgid="2991640326563991340">"បិទ"</string>
<string name="aerr_mute" msgid="1974781923723235953">"បិទរហូតដល់ឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string>
@@ -1588,9 +1611,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"សំណើរ SS ត្រូវបានកែសម្រួលទៅតាមសំណើរ USSD។"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"សំណើរ SS ត្រូវបានកែសម្រួលទៅតាមសំណើរ SS ថ្មី។"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"ប្រវត្តិរូបការងារ"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"ប៊ូតុងពង្រីក"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"ឧបករណ៍រន្ធ USB Android បន្ថែម"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml
index 17f56726a6a9..10383920600e 100644
--- a/core/res/res/values-kn-rIN/strings.xml
+++ b/core/res/res/values-kn-rIN/strings.xml
@@ -122,21 +122,21 @@
<string name="roamingText11" msgid="4154476854426920970">"ರೋಮಿಂಗ್ ಬ್ಯಾನರ್ ಆನ್ ಆಗಿದೆ"</string>
<string name="roamingText12" msgid="1189071119992726320">"ರೋಮಿಂಗ್ ಬ್ಯಾನರ್ ಆಫ್ ಆಗಿದೆ"</string>
<string name="roamingTextSearching" msgid="8360141885972279963">"ಸೇವೆ ಹುಡುಕಲಾಗುತ್ತಿದೆ"</string>
- <string name="wfcRegErrorTitle" msgid="2301376280632110664">"Wi-Fi ಕರೆ ಮಾಡುವಿಕೆ"</string>
+ <string name="wfcRegErrorTitle" msgid="2301376280632110664">"ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆ"</string>
<string-array name="wfcOperatorErrorAlertMessages">
- <item msgid="2254967670088539682">"Wi-Fi ಬಳಸಿಕೊಂಡು ಕರೆ ಮಾಡಲು ಮತ್ತು ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಲು, ಮೊದಲು ಈ ಸಾಧನವನ್ನು ಹೊಂದಿಸಲು ನಿಮ್ಮ ವಾಹಕವನ್ನು ಕೇಳಿ. ತದನಂತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಮತ್ತೆ Wi-Fi ಆನ್‌ ಮಾಡಿ."</item>
+ <item msgid="2254967670088539682">"ವೈ-ಫೈ ಬಳಸಿಕೊಂಡು ಕರೆ ಮಾಡಲು ಮತ್ತು ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಲು, ಮೊದಲು ಈ ಸಾಧನವನ್ನು ಹೊಂದಿಸಲು ನಿಮ್ಮ ವಾಹಕವನ್ನು ಕೇಳಿ. ತದನಂತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಮತ್ತೆ ವೈ-ಫೈ ಆನ್‌ ಮಾಡಿ."</item>
</string-array>
<string-array name="wfcOperatorErrorNotificationMessages">
<item msgid="6177300162212449033">"ನಿಮ್ಮ ವಾಹಕದಲ್ಲಿ ನೋಂದಾಯಿಸಿಕೊಳ್ಳಿ"</item>
</string-array>
<string-array name="wfcSpnFormats">
<item msgid="6830082633573257149">"%s"</item>
- <item msgid="4397097370387921767">"%s Wi-Fi ಕರೆ ಮಾಡುವಿಕೆ"</item>
+ <item msgid="4397097370387921767">"%s ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆ"</item>
</string-array>
<string name="wifi_calling_off_summary" msgid="8720659586041656098">"ಆಫ್"</string>
<string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"ವೈ-ಫೈಗೆ ಆದ್ಯತೆ ನೀಡಲಾಗಿದೆ"</string>
<string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"ಸೆಲ್ಯುಲಾರ್‌ಗೆ ಆದ್ಯತೆ ನೀಡಲಾಗಿದೆ"</string>
- <string name="wfc_mode_wifi_only_summary" msgid="2379919155237869320">"Wi-Fi ಮಾತ್ರ"</string>
+ <string name="wfc_mode_wifi_only_summary" msgid="2379919155237869320">"ವೈ-ಫೈ ಮಾತ್ರ"</string>
<string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ಫಾರ್ವರ್ಡ್ ಮಾಡಲಾಗಿಲ್ಲ"</string>
<string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
<string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="TIME_DELAY">{2}</xliff:g> ಸೆಕೆಂಡುಗಳ ನಂತರ <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
@@ -357,9 +357,9 @@
<string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"ಹೆಚ್ಚುವರಿ ಸ್ಥಾನ ಪೂರೈಕೆದಾರರ ಆದೇಶಗಳನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="6078307221056649927">"ಹೆಚ್ಚಿನ ಸ್ಥಾನ ಪೂರೈಕೆದಾರ ಆದೇಶಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಇದು GPS ಅಥವಾ ಇತರ ಸ್ಥಾನ ಮೂಲಗಳ ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ ಮಧ್ಯ ಪ್ರವೇಶಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅನುಮತಿಸಬಹುದು."</string>
<string name="permlab_accessFineLocation" msgid="251034415460950944">"ನಿಖರ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಿ (GPS ಮತ್ತು ನೆಟ್‍ವರ್ಕ್-ಆಧಾರಿತ)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"ಗ್ಲೊಬಲ್ ಪೊಸಿಷನಿಂಗ್ ಸಿಸ್ಟಮ್ (GPS) ಅಥವಾ ಸೆಲ್ ಟವರ್‍‍ಗಳು ಮತ್ತು Wi-Fi ನಂತಹ ನೆಟ್‍‍ವರ್ಕ್ ಸ್ಥಾನ ಮೂಲಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ನಿಖರವಾದ ಸ್ಥಾನವನ್ನು ಪಡೆಯಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಅಪ್ಲಿಕೇಶನ್‍‍ಗಾಗಿ ಅವುಗಳನ್ನು ಬಳಸಲು ಈ ಸ್ಥಾನ ಸೇವೆಗಳು ಆನ್ ಆಗಿರಬೇಕು ಮತ್ತು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಲಭ್ಯವಿರಬೇಕು. ನೀವೆಲ್ಲಿರುವಿರಿ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಅಪ್ಲಿಕೇಶನ್ ಇದನ್ನು ಬಳಸಬಹುದು ಮತ್ತು ಹೆಚ್ಚುವರಿ ಬ್ಯಾಟರಿ ಶಕ್ತಿಯನ್ನು ಬಳಸಬಹುದು."</string>
+ <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"ಗ್ಲೊಬಲ್ ಪೊಸಿಷನಿಂಗ್ ಸಿಸ್ಟಮ್ (GPS) ಅಥವಾ ಸೆಲ್ ಟವರ್‍‍ಗಳು ಮತ್ತು ವೈ-ಫೈ ನಂತಹ ನೆಟ್‍‍ವರ್ಕ್ ಸ್ಥಾನ ಮೂಲಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ನಿಖರವಾದ ಸ್ಥಾನವನ್ನು ಪಡೆಯಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಅಪ್ಲಿಕೇಶನ್‍‍ಗಾಗಿ ಅವುಗಳನ್ನು ಬಳಸಲು ಈ ಸ್ಥಾನ ಸೇವೆಗಳು ಆನ್ ಆಗಿರಬೇಕು ಮತ್ತು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಲಭ್ಯವಿರಬೇಕು. ನೀವೆಲ್ಲಿರುವಿರಿ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಅಪ್ಲಿಕೇಶನ್ ಇದನ್ನು ಬಳಸಬಹುದು ಮತ್ತು ಹೆಚ್ಚುವರಿ ಬ್ಯಾಟರಿ ಶಕ್ತಿಯನ್ನು ಬಳಸಬಹುದು."</string>
<string name="permlab_accessCoarseLocation" msgid="7715277613928539434">"ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಿ (ನೆಟ್‌ವರ್ಕ್-ಆಧಾರಿತ)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"ನಿಮ್ಮ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ಸ್ಥಳವನ್ನು ಸೆಲ್ ಟವರ್‍‍ಗಳು ಮತ್ತು Wi-Fi ನಂತಹ ನೆಟ್‍‍ವರ್ಕ್ ಸ್ಥಾನದ ಮೂಲಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಥಳದ ಸೇವೆಗಳ ಮೂಲಕ ಪಡೆಯಲಾಗಿದೆ. ಅಪ್ಲಿಕೇಶನ್‍‍ಗಾಗಿ ಅವುಗಳನ್ನು ಬಳಸಲು ಈ ಸ್ಥಾನ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಿರಬೇಕು ಮತ್ತು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಲಭ್ಯವಿರಬೇಕು. ನೀವು ನಿಖರವಾಗಿ ಎಲ್ಲಿರುವಿರಿ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಇದನ್ನು ಬಳಸಬಹುದು."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"ನಿಮ್ಮ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ಸ್ಥಳವನ್ನು ಸೆಲ್ ಟವರ್‍‍ಗಳು ಮತ್ತು ವೈ-ಫೈ ನಂತಹ ನೆಟ್‍‍ವರ್ಕ್ ಸ್ಥಾನದ ಮೂಲಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಥಳದ ಸೇವೆಗಳ ಮೂಲಕ ಪಡೆಯಲಾಗಿದೆ. ಅಪ್ಲಿಕೇಶನ್‍‍ಗಾಗಿ ಅವುಗಳನ್ನು ಬಳಸಲು ಈ ಸ್ಥಾನ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಿರಬೇಕು ಮತ್ತು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಲಭ್ಯವಿರಬೇಕು. ನೀವು ನಿಖರವಾಗಿ ಎಲ್ಲಿರುವಿರಿ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಇದನ್ನು ಬಳಸಬಹುದು."</string>
<string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"ನಿಮ್ಮ ಆಡಿಯೊ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ"</string>
<string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"ವಾಲ್ಯೂಮ್ ರೀತಿಯ ಮತ್ತು ಔಟ್‍‍ಪುಟ್‍‍ಗಾಗಿ ಯಾವ ಸ್ಪೀಕರ್ ಬಳಸಬೇಕು ಎಂಬ ರೀತಿಯ ಜಾಗತಿಕ ಆಡಿಯೊ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ."</string>
<string name="permlab_recordAudio" msgid="3876049771427466323">"ಆಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಿ"</string>
@@ -406,14 +406,14 @@
<string name="permdesc_changeNetworkState" msgid="6789123912476416214">"ನೆಟ್‌ವರ್ಕ್‌ ಸಂಪರ್ಕದ ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permlab_changeTetherState" msgid="5952584964373017960">"ಟೆಥರಡ್ ಸಂಪರ್ಕತೆಯನ್ನು ಬದಲಾಯಿಸಿ"</string>
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"ಟೆಥರ್‌ ಮಾಡಲಾದ ನೆಟ್‌ವರ್ಕ್‌ ಸಂಪರ್ಕದ ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Wi-Fi ಸಕ್ರಿಯಗೊಂಡಿದೆಯೇ ಮತ್ತು ಸಂಪರ್ಕಿಸಲಾದ Wi-Fi ಸಾಧನಗಳ ಹೆಸರಿನ ಮಾಹಿತಿ ರೀತಿಯ, Wi-Fi ನೆಟ್‍‍ವರ್ಕ್ ಕುರಿತು ಮಾಹಿತಿಯನ್ನು ವೀಕ್ಷಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi ನಿಂದ ಸಂಪರ್ಕಗೊಳಿಸಿ ಮತ್ತು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"Wi-Fi ಪ್ರವೇಶ ಕೇಂದ್ರಗಳಿಂದ ಸಂಪರ್ಕ ಹೊಂದಲು ಮತ್ತು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲು, ಹಾಗೆಯೇ Wi-Fi ನೆಟ್‍‍ವರ್ಕ್‌ಗಳಿಗೆ ಸಾಧನದ ಕನ್ಫಿಗರೇಶನ್‍ ಬದಲಾಯಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ."</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ಸ್ವೀಕಾರಕ್ಕೆ ಅನುಮತಿಸಿ"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಮಾತ್ರವಲ್ಲದೇ, ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ವಿಳಾಸಗಳನ್ನು ಬಳಸಿಕೊಂಡು Wi-Fi ನೆಟ್‍‍ವರ್ಕ್‌ನಲ್ಲಿ ಎಲ್ಲಾ ಸಾಧನಗಳಿಗೆ ಕಳುಹಿಸಲಾಗಿರುವ ಪ್ಯಾಕೆಟ್‍‍ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಇದು ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ಅಲ್ಲದ ಮೋಡ್ ಬಳಸುವ ಶಕ್ತಿಗಿಂತಲೂ ಹೆಚ್ಚಿನ ಶಕ್ತಿಯನ್ನು ಬಳಸುತ್ತದೆ."</string>
- <string name="permdesc_changeWifiMulticastState" product="tv" msgid="9031975661145014160">"Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಟಿವಿ ಮಾತ್ರವಲ್ಲದೆ, ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ವಿಳಾಸಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಎಲ್ಲಾ ಸಾಧನಗಳಿಗೆ ಕಳುಹಿಸಲಾದ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಇದು ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ಅಲ್ಲದ ಮೋಡ್‌ಗಿಂತಲೂ ಹೆಚ್ಚು ಪವರ್ ಬಳಸುತ್ತದೆ."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"ನಿಮ್ಮ ಫೋನ್ ಮಾತ್ರವಲ್ಲದೇ, ಮಲ್ಟಿಕಾಸ್ಟ್ ವಿಳಾಸಗಳನ್ನು ಬಳಸಿಕೊಂಡು Wi-Fi ನೆಟ್‍‍ವರ್ಕ್‌ನಲ್ಲಿ ಎಲ್ಲಾ ಸಾಧನಗಳಿಗೆ ಕಳುಹಿಸಲಾಗಿರುವ ಪ್ಯಾಕೆಟ್‍‍ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಇದು ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ಅಲ್ಲದ ಮೋಡ್ ಬಳಸುವ ಶಕ್ತಿಗಿಂತಲೂ ಹೆಚ್ಚಿನ ಶಕ್ತಿಯನ್ನು ಬಳಸುತ್ತದೆ."</string>
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"ವೈ-ಫೈ ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
+ <string name="permdesc_accessWifiState" msgid="5002798077387803726">"ವೈ-ಫೈ ಸಕ್ರಿಯಗೊಂಡಿದೆಯೇ ಮತ್ತು ಸಂಪರ್ಕಿಸಲಾದ ವೈ-ಫೈ ಸಾಧನಗಳ ಹೆಸರಿನ ಮಾಹಿತಿ ರೀತಿಯ, ವೈ-ಫೈ ನೆಟ್‍‍ವರ್ಕ್ ಕುರಿತು ಮಾಹಿತಿಯನ್ನು ವೀಕ್ಷಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ."</string>
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"ವೈ-ಫೈ ನಿಂದ ಸಂಪರ್ಕಗೊಳಿಸಿ ಮತ್ತು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ"</string>
+ <string name="permdesc_changeWifiState" msgid="7137950297386127533">"ವೈ-ಫೈ ಪ್ರವೇಶ ಕೇಂದ್ರಗಳಿಂದ ಸಂಪರ್ಕ ಹೊಂದಲು ಮತ್ತು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲು, ಹಾಗೆಯೇ ವೈ-ಫೈ ನೆಟ್‍‍ವರ್ಕ್‌ಗಳಿಗೆ ಸಾಧನದ ಕನ್ಫಿಗರೇಶನ್‍ ಬದಲಾಯಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ."</string>
+ <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"ವೈ-ಫೈ ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ಸ್ವೀಕಾರಕ್ಕೆ ಅನುಮತಿಸಿ"</string>
+ <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಮಾತ್ರವಲ್ಲದೇ, ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ವಿಳಾಸಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವೈ-ಫೈ ನೆಟ್‍‍ವರ್ಕ್‌ನಲ್ಲಿ ಎಲ್ಲಾ ಸಾಧನಗಳಿಗೆ ಕಳುಹಿಸಲಾಗಿರುವ ಪ್ಯಾಕೆಟ್‍‍ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಇದು ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ಅಲ್ಲದ ಮೋಡ್ ಬಳಸುವ ಶಕ್ತಿಗಿಂತಲೂ ಹೆಚ್ಚಿನ ಶಕ್ತಿಯನ್ನು ಬಳಸುತ್ತದೆ."</string>
+ <string name="permdesc_changeWifiMulticastState" product="tv" msgid="9031975661145014160">"ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಟಿವಿ ಮಾತ್ರವಲ್ಲದೆ, ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ವಿಳಾಸಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಎಲ್ಲಾ ಸಾಧನಗಳಿಗೆ ಕಳುಹಿಸಲಾದ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಇದು ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ಅಲ್ಲದ ಮೋಡ್‌ಗಿಂತಲೂ ಹೆಚ್ಚು ಪವರ್ ಬಳಸುತ್ತದೆ."</string>
+ <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"ನಿಮ್ಮ ಫೋನ್ ಮಾತ್ರವಲ್ಲದೇ, ಮಲ್ಟಿಕಾಸ್ಟ್ ವಿಳಾಸಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವೈ-ಫೈ ನೆಟ್‍‍ವರ್ಕ್‌ನಲ್ಲಿ ಎಲ್ಲಾ ಸಾಧನಗಳಿಗೆ ಕಳುಹಿಸಲಾಗಿರುವ ಪ್ಯಾಕೆಟ್‍‍ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಇದು ಮಲ್ಟಿಕ್ಯಾಸ್ಟ್ ಅಲ್ಲದ ಮೋಡ್ ಬಳಸುವ ಶಕ್ತಿಗಿಂತಲೂ ಹೆಚ್ಚಿನ ಶಕ್ತಿಯನ್ನು ಬಳಸುತ್ತದೆ."</string>
<string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ಬ್ಲೂಟೂತ್‌ ಸೆಟ್ಟಿಂಗ್‍ಗಳನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ಸ್ಥಳೀಯ ಬ್ಲೂಟೂತ್‌‌ ಟ್ಯಾಬ್ಲೆಟ್‌‌ ಕಾನ್ಫಿಗರ್‌ ಮಾಡಲು ಮತ್ತು ಅನ್ವೇಷಿಸಲು ಹಾಗೂ ರಿಮೊಟ್‌ ಸಾಧನಗಳ ಜೊತೆಗೆ ಜೋಡಿ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್‌ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permdesc_bluetoothAdmin" product="tv" msgid="3373125682645601429">"ಸ್ಥಳೀಯ ಬ್ಲೂಟೂತ್‌ ಟಿವಿಯನ್ನು ಕಾನ್‌ಫಿಗರ್ ಮಾಡಲು, ಮತ್ತು ಅನ್ವೇಷಿಸಲು ಮತ್ತು ದೂರ ಸಾಧನಗಳೊಂದಿಗೆ ಜೋಡಿ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> ನಿಲ್ಲಿಸಿದೆ"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> ನಿಲ್ಲುತ್ತಲೇ ಇರುತ್ತದೆ"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> ನಿಲ್ಲುತ್ತಲೇ ಇರುತ್ತದೆ"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"ಅಪ್ಲಿಕೇಶನ್ ಮತ್ತೆ ತೆರೆಯಿರಿ"</string>
<string name="aerr_report" msgid="5371800241488400617">"ಪ್ರತಿಕ್ರಿಯೆ ಕಳುಹಿಸು"</string>
<string name="aerr_close" msgid="2991640326563991340">"ಮುಚ್ಚು"</string>
<string name="aerr_mute" msgid="1974781923723235953">"ಸಾಧನವು ಮರುಪ್ರಾರಂಭವಾಗುವವರೆಗೂ ಮ್ಯೂಟ್ ಮಾಡಿ"</string>
@@ -1060,28 +1059,28 @@
<string name="ringtone_picker_title" msgid="3515143939175119094">"ರಿಂಗ್‌ಟೋನ್‌ಗಳು"</string>
<string name="ringtone_unknown" msgid="5477919988701784788">"ಅಜ್ಞಾತ ರಿಂಗ್‌ಟೋನ್"</string>
<plurals name="wifi_available" formatted="false" msgid="7900333017752027322">
- <item quantity="one">Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿವೆ</item>
- <item quantity="other">Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿವೆ</item>
+ <item quantity="one">ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿವೆ</item>
+ <item quantity="other">ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿವೆ</item>
</plurals>
<plurals name="wifi_available_detailed" formatted="false" msgid="1140699367193975606">
- <item quantity="one">ಮುಕ್ತ Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿವೆ</item>
- <item quantity="other">ಮುಕ್ತ Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿವೆ</item>
+ <item quantity="one">ಮುಕ್ತ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿವೆ</item>
+ <item quantity="other">ಮುಕ್ತ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿವೆ</item>
</plurals>
- <string name="wifi_available_sign_in" msgid="9157196203958866662">"Wi-Fi ನೆಟ್‍ವರ್ಕ್‌ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ"</string>
+ <string name="wifi_available_sign_in" msgid="9157196203958866662">"ವೈ-ಫೈ ನೆಟ್‍ವರ್ಕ್‌ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ"</string>
<string name="network_available_sign_in" msgid="1848877297365446605">"ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ"</string>
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"ವೈ-ಫೈ ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿಲ್ಲ"</string>
<string name="wifi_no_internet_detailed" msgid="8083079241212301741">"ಆಯ್ಕೆಗಳಿಗೆ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi ಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string>
+ <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ವೈ-ಫೈ ಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ಕಳಪೆ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿದೆ."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ಸಂಪರ್ಕವನ್ನು ಅನುಮತಿಸುವುದೇ?"</string>
<string name="wifi_connect_alert_message" msgid="6451273376815958922">"%2$s ವೈಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು %1$s ಅಪ್ಲಿಕೇಶನ್‌ ಬಯಸುತ್ತದೆ"</string>
<string name="wifi_connect_default_application" msgid="7143109390475484319">"ಅಪ್ಲಿಕೇಶನ್"</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi ಡೈರೆಕ್ಟ್"</string>
- <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi ಡೈರೆಕ್ಟ್ ಪ್ರಾರಂಭಿಸಿ. ಇದು Wi-Fi ಕ್ಲೈಂಟ್‌/ಹಾಟ್‌ಸ್ಪಾಟ್ ಅನ್ನು ಆಫ್ ಮಾಡುತ್ತದೆ."</string>
- <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi ಡೈರೆಕ್ಟ್ ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ."</string>
- <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ಡೈರೆಕ್ಟ್ ಆನ್ ಆಗಿದೆ"</string>
+ <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"ವೈ-ಫೈ ಡೈರೆಕ್ಟ್"</string>
+ <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ವೈ-ಫೈ ಡೈರೆಕ್ಟ್ ಪ್ರಾರಂಭಿಸಿ. ಇದು ವೈ-ಫೈ ಕ್ಲೈಂಟ್‌/ಹಾಟ್‌ಸ್ಪಾಟ್ ಅನ್ನು ಆಫ್ ಮಾಡುತ್ತದೆ."</string>
+ <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ವೈ-ಫೈ ಡೈರೆಕ್ಟ್ ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ."</string>
+ <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"ವೈ-ಫೈ ಡೈರೆಕ್ಟ್ ಆನ್ ಆಗಿದೆ"</string>
<string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="accept" msgid="1645267259272829559">"ಸ್ವೀಕರಿಸು"</string>
<string name="decline" msgid="2112225451706137894">"ನಿರಾಕರಿಸು"</string>
@@ -1091,9 +1090,9 @@
<string name="wifi_p2p_to_message" msgid="248968974522044099">"ಗೆ:"</string>
<string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"ಅಗತ್ಯವಿರುವ ಪಿನ್‌ ಟೈಪ್ ಮಾಡಿ:"</string>
<string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"ಪಿನ್‌:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"ಟ್ಯಾಬ್ಲೆಟ್ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವಾಗ ಅದನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ Wi-Fi ನಿಂದ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತದೆ"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tv" msgid="3087858235069421128">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಗೊಳಿಸಿರುವಾಗ ಟಿವಿಯನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ Wi-Fi ನಿಂದ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿರುತ್ತದೆ"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"ಫೋನ್ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವಾಗ Wi-Fi ನಿಂದ ಅದು ತಾತ್ಕಾಲಿಕವಾಗಿ ಸಂಪರ್ಕ ಕಡಿತಗೊಳ್ಳುತ್ತದೆ"</string>
+ <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"ಟ್ಯಾಬ್ಲೆಟ್ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವಾಗ ಅದನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ವೈ-ಫೈ ನಿಂದ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತದೆ"</string>
+ <string name="wifi_p2p_frequency_conflict_message" product="tv" msgid="3087858235069421128">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಗೊಳಿಸಿರುವಾಗ ಟಿವಿಯನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ವೈ-ಫೈ ನಿಂದ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿರುತ್ತದೆ"</string>
+ <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"ಫೋನ್ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವಾಗ ವೈ-ಫೈ ನಿಂದ ಅದು ತಾತ್ಕಾಲಿಕವಾಗಿ ಸಂಪರ್ಕ ಕಡಿತಗೊಳ್ಳುತ್ತದೆ"</string>
<string name="select_character" msgid="3365550120617701745">"ಅಕ್ಷರವನ್ನು ಸೇರಿಸಿ"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ"</string>
<string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ SMS ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸುತ್ತಿದೆ. ಸಂದೇಶಗಳ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಮುಂದುವರಿಸುವಂತೆ ಈ ಅಪ್ಲಿಕೇಶನ್‍‍ಗೆ ಅನುಮತಿಸಲು ನೀವು ಬಯಸುವಿರಾ?"</string>
@@ -1322,12 +1321,12 @@
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ಡೇಟಾ ಮೀತಿಯನ್ನು ತಲುಪಿದೆ"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ಡೇಟಾ ಮೀತಿಯನ್ನು ತಲುಪಿದೆ"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ"</string>
- <string name="data_usage_wifi_limit_title" msgid="5803363779034792676">"Wi-Fi ಡೇಟಾ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ"</string>
+ <string name="data_usage_wifi_limit_title" msgid="5803363779034792676">"ವೈ-ಫೈ ಡೇಟಾ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ"</string>
<string name="data_usage_limit_body" msgid="291731708279614081">"ಉಳಿದಿರುವ ಆವರ್ತನೆಗೆ ಡೇಟಾವನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G ಡೇಟಾ ಮಿತಿ ಮೀರಿದೆ"</string>
<string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G ಡೇಟಾ ಮಿತಿ ಮೀರಿದೆ"</string>
<string name="data_usage_mobile_limit_snoozed_title" msgid="4941346653729943789">"ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾ ಮಿತಿ ಮೀರಿದೆ"</string>
- <string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ಡೇಟಾ ಮಿತಿ ಮೀರಿದೆ"</string>
+ <string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"ವೈ-ಫೈ ಡೇಟಾ ಮಿತಿ ಮೀರಿದೆ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮಿತಿ ಮೀರಿದೆ."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"ಹಿನ್ನೆಲೆ ಡೇಟಾವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
<string name="data_usage_restricted_body" msgid="469866376337242726">"ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS ವಿನಂತಿಯನ್ನು USSD ವಿನಂತಿಗೆ ಮಾರ್ಪಡಿಸಲಾಗಿದೆ."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS ವಿನಂತಿಯನ್ನು ಹೊಸ SS ವಿನಂತಿಗೆ ಮಾರ್ಪಡಿಸಲಾಗಿದೆ."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"ವಿಸ್ತರಿಸು ಬಟನ್"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB ಪೆರಿಪೆರಲ್ ಪೋರ್ಟ್"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 81b0c6cc8153..f7c3c80b7a3e 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -1612,7 +1612,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"직장 프로필"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB 주변기기 포트"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml
index 187ac3d4f483..1e5258665cc7 100644
--- a/core/res/res/values-ky-rKG/strings.xml
+++ b/core/res/res/values-ky-rKG/strings.xml
@@ -1615,7 +1615,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Жумуш профили"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB Сырткы оюкча"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml
index b39b1abf779a..b0a5fa5581a0 100644
--- a/core/res/res/values-lo-rLA/strings.xml
+++ b/core/res/res/values-lo-rLA/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> ໄດ້ຢຸດແລ້ວ"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> ຢຸດເລື້ອຍໆ"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> ຢຸດເລື້ອຍໆ"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"ເປີດແອັບອີກຄັ້ງ"</string>
<string name="aerr_report" msgid="5371800241488400617">"ສົ່ງຄຳຕິຊົມ"</string>
<string name="aerr_close" msgid="2991640326563991340">"ປິດ"</string>
<string name="aerr_mute" msgid="1974781923723235953">"ປິດສຽງຈົນກວ່າວ່າອຸປະກອນເລີ່ມໃໝ່"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"ການ​ຂໍ SS ຖືກ​ດັດ​ແປງ​ເປັນ​ການ​ຂໍ USSD ແລ້ວ."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"ການ​ຂໍ SS ຖືກ​ດັດ​ແປງ​ເປັນ​ການ​ຂໍ SS ໃໝ່​ແລ້ວ."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"​ໂປຣ​ໄຟລ໌​ບ່ອນ​ເຮັດ​ວຽກ"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"ປຸ່ມຂະຫຍາຍ"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"ຜອດ​ຮອບນອກ Android USB"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index e72f6ebed1b4..f84f5b5e46b8 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1040,8 +1040,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> sustabdytas"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"„<xliff:g id="APPLICATION">%1$s</xliff:g>“ vis sustabdoma"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Procesas „<xliff:g id="PROCESS">%1$s</xliff:g>“ vis sustabdomas"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Atidaryti programą dar kartą"</string>
<string name="aerr_report" msgid="5371800241488400617">"Siųsti atsiliepimą"</string>
<string name="aerr_close" msgid="2991640326563991340">"Uždaryti"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignoruoti, kol įrenginys bus paleistas iš naujo"</string>
@@ -1680,9 +1679,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS užklausa pakeista į USSD užklausą."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS užklausa pakeista į naują SS užklausą."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Darbo profilis"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Išskleidimo mygtukas"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"„Android“ USB išorinis prievadas"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 2db3ab7c2a06..3361c2ae52fd 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -607,7 +607,7 @@
<string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
<string name="phoneTypeTelex" msgid="3367879952476250512">"Telekss"</string>
<string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Mobilā tālruņa numurs darbā"</string>
+ <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Darba mobilais"</string>
<string name="phoneTypeWorkPager" msgid="649938731231157056">"Darba peidžers"</string>
<string name="phoneTypeAssistant" msgid="5596772636128562884">"Palīgs"</string>
<string name="phoneTypeMms" msgid="7254492275502768992">"Multiziņa"</string>
@@ -1575,7 +1575,7 @@
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekrāns ir piesprausts"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekrāns ir atsprausts"</string>
<string name="lock_to_app_unlock_pin" msgid="2552556656504331634">"Prasīt PIN kodu pirms atspraušanas"</string>
- <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Pirms atspraušanas pieprasīt grafisko atslēgu"</string>
+ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Pirms atspraušanas pieprasīt grafisko atsl."</string>
<string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pirms atspraušanas pieprasīt paroli"</string>
<string name="package_installed_device_owner" msgid="8420696545959087545">"Instalēja jūsu administrators"</string>
<string name="package_updated_device_owner" msgid="8856631322440187071">"Atjaunināja administrators"</string>
@@ -1647,7 +1647,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Darba profils"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB perifērijas ports"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml
index a77cc9634168..894b4bfe188f 100644
--- a/core/res/res/values-mk-rMK/strings.xml
+++ b/core/res/res/values-mk-rMK/strings.xml
@@ -1617,7 +1617,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Работен профил"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Надворешна порта на УСБ за Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml
index d15381dbc230..df39060b4fa9 100644
--- a/core/res/res/values-ml-rIN/strings.xml
+++ b/core/res/res/values-ml-rIN/strings.xml
@@ -208,7 +208,7 @@
<string name="reboot_safemode_title" msgid="7054509914500140361">"സുരക്ഷിത മോഡിലേക്ക് റീബൂട്ടുചെയ്യുക"</string>
<string name="reboot_safemode_confirm" msgid="55293944502784668">"സുരക്ഷിത മോഡിലേക്ക് റീബൂട്ട് ചെയ്യണോ? ഇത് നിങ്ങൾ ഇൻസ്റ്റാളുചെയ്‌ത മൂന്നാം കക്ഷി അപ്ലിക്കേഷനുകളെയെല്ലാം പ്രവർത്തനരഹിതമാക്കും. നിങ്ങൾ വീണ്ടും റീബൂട്ടുചെയ്യുമ്പോൾ അവ പുനസ്ഥാപിക്കപ്പെടും."</string>
<string name="recent_tasks_title" msgid="3691764623638127888">"അടുത്തിടെയുള്ളത്"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"അടുത്തിടെയുള്ള അപ്ലിക്കേഷനുകളൊന്നുമില്ല."</string>
+ <string name="no_recent_tasks" msgid="8794906658732193473">"അടുത്തിടെയുള്ള ആപ്സൊന്നുമില്ല."</string>
<string name="global_actions" product="tablet" msgid="408477140088053665">"ടാബ്‌ലെറ്റ് ഓപ്‌ഷനുകൾ"</string>
<string name="global_actions" product="tv" msgid="7240386462508182976">"ടിവി ഓപ്‌ഷനുകൾ"</string>
<string name="global_actions" product="default" msgid="2406416831541615258">"ഫോൺ ഓപ്‌ഷനുകൾ"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> നിലച്ചിരിക്കുന്നു"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> നിലയ്ക്കുന്നത് തുടരുന്നു"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> നിലയ്ക്കുന്നത് തുടരുന്നു"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"ആപ്പ് വീണ്ടും തുറക്കുക"</string>
<string name="aerr_report" msgid="5371800241488400617">"ഫീഡ്‌ബാക്ക് അയയ്‌ക്കുക"</string>
<string name="aerr_close" msgid="2991640326563991340">"അടയ്‌ക്കുക"</string>
<string name="aerr_mute" msgid="1974781923723235953">"ഉപകരണം പുനഃരാരംഭിക്കുന്നത് വരെ മ്യൂട്ടുചെയ്യുക"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS അഭ്യർത്ഥന, USSD അഭ്യർത്ഥനയായി പരിഷ്‌ക്കരിച്ചു."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS അഭ്യർത്ഥന, പുതിയ SS അഭ്യർത്ഥനയായി പരിഷ്‌ക്കരിച്ചു."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"ഔദ്യോഗിക പ്രൊഫൈൽ"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"\'വികസിപ്പിക്കുക\' ബട്ടൺ"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB പെരിഫറൽ പോർട്ട്"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml
index f882a896ff0a..bc115e5324aa 100644
--- a/core/res/res/values-mn-rMN/strings.xml
+++ b/core/res/res/values-mn-rMN/strings.xml
@@ -260,7 +260,7 @@
<string name="permgroupdesc_phone" msgid="6234224354060641055">"утасны дуудлага хийх, дуудлага удирдах"</string>
<string name="permgrouplab_sensors" msgid="416037179223226722">"Биеийн мэдрэгч"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"таны биеийн байдлын талаарх мэдрэгч бүхий өгөгдөлд нэвтрэх"</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Цонхны контентыг авах"</string>
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Цонхны агуулгыг авах"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Таны харилцан үйлчлэх цонхны контентоос шалгах."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Хүрч танихыг асаах"</string>
<string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Товшсон зүйлсийг чангаар хэлэх ба дэлгэцийг дохио ашиглан таних боломжтой."</string>
@@ -459,12 +459,12 @@
<string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"Апп нь акаунтын синк тохиргоог өөрчлөх боломжтой. Жишээ нь энэ нь Хүмүүс апп акаунттай синк хийхийг идэвхжүүлэх боломжтой."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"синк статистикийг унших"</string>
<string name="permdesc_readSyncStats" msgid="1510143761757606156">"Апп нь синк үйлдэлийн түүх болон хэр их дата синк хийгдсэн зэрэг акаунтын синк статусыг унших боломжтой."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"таны USB сангийн контентыг унших боломжтой"</string>
- <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"таны SD картны контентыг унших боломжтой"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3446988712598386079">"Апп нь таны USB сангийн контентыг унших боломжтой."</string>
- <string name="permdesc_sdcardRead" product="default" msgid="2607362473654975411">"Апп нь таны SD картны контентыг унших боломжтой."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB сангийн контентыг өөрчлөх эсвэл устгах"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"SD картны контентыг өөрчлөх болон устгах"</string>
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"таны USB сангийн агуулгыг унших боломжтой"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"таны SD картны агуулгыг унших боломжтой"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3446988712598386079">"Апп нь таны USB сангийн агуулгыг унших боломжтой."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2607362473654975411">"Апп нь таны SD картны агуулгыг унших боломжтой."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB сангийн агуулгыг өөрчлөх эсвэл устгах"</string>
+ <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"SD картны агуулгыг өөрчлөх болон устгах"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Апп нь USB санруу бичих боломжтой."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Апп нь SD картруу бичих боломжтой."</string>
<string name="permlab_use_sip" msgid="2052499390128979920">"SIP дуудлага хийх/хүлээн авах"</string>
@@ -597,7 +597,7 @@
<string name="phoneTypeOther" msgid="1544425847868765990">"Бусад"</string>
<string name="phoneTypeCallback" msgid="2712175203065678206">"Буцаж холбоо барих"</string>
<string name="phoneTypeCar" msgid="8738360689616716982">"Машин"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Байгууллагын үндсэн"</string>
+ <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Компаний үндсэн"</string>
<string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
<string name="phoneTypeMain" msgid="6766137010628326916">"Үндсэн"</string>
<string name="phoneTypeOtherFax" msgid="8587657145072446565">"Бусад факс"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> зогсчихлоо"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> зогссоор байна"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> зогссоор байна"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Апп-г дахин нээх"</string>
<string name="aerr_report" msgid="5371800241488400617">"Санал хүсэлт илгээх"</string>
<string name="aerr_close" msgid="2991640326563991340">"Хаах"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Төхөөрөмжийг дахин эхлүүлэх хүртэл дууг нь хаах"</string>
@@ -1608,9 +1607,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS хүсэлтийг USSD хүсэлт болгон өөрчилсөн байна."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS хүсэлтийг шинэ SS хүсэлт болгон өөрчилсөн байна."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Ажлын профайл"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Дэлгэх товчлуур"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Андройд USB Peripheral Port"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml
index fae1c3b1a442..09bad3319eb4 100644
--- a/core/res/res/values-mr-rIN/strings.xml
+++ b/core/res/res/values-mr-rIN/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> थांबली आहे"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> थांबतो"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> थांबते"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"अॅप पुन्हा उघडा"</string>
<string name="aerr_report" msgid="5371800241488400617">"अभिप्राय पाठवा"</string>
<string name="aerr_close" msgid="2991640326563991340">"बंद करा"</string>
<string name="aerr_mute" msgid="1974781923723235953">"डिव्हाइस रीस्टार्ट होईपर्यंत नि:शब्द करा"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS विनंती USSD विनंतीवर सुधारित केली आहे."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS विनंती नवीन SS विनंतीवर सुधारित केली आहे."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"कार्य प्रोफाईल"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"विस्तृत करा बटण"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB परिधीय पोर्ट"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml
index c3e9670db33d..0d11bc271e16 100644
--- a/core/res/res/values-ms-rMY/strings.xml
+++ b/core/res/res/values-ms-rMY/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g>t</item>
<item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g>t</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> minit yang lalu</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> minit yang lalu</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> jam yang lalu</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> jam yang lalu</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> hari yang lalu</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> hari yang lalu</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> tahun yang lalu</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> tahun yang lalu</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g> minit</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g> minit</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g> jam</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g> jam</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g> hari</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g> hari</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g> tahun</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g> tahun</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Masalah video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Maaf, video ini tidak sah untuk penstriman ke peranti ini."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Tidak dapat mainkan video ini."</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> telah berhenti"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> asyik berhenti"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> asyik berhenti"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Buka apl sekali lagi"</string>
<string name="aerr_report" msgid="5371800241488400617">"Hantar maklum balas"</string>
<string name="aerr_close" msgid="2991640326563991340">"Tutup"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Redam sehingga peranti dimulakan semula"</string>
@@ -1586,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Permintaan SS diubah kepada permintaan USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Permintaan SS diubah kepada permintaan SS baharu."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profil kerja"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Butang kembangkan"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port Persisian USB Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml
index 969300e9eeb0..42e3c0265d87 100644
--- a/core/res/res/values-my-rMM/strings.xml
+++ b/core/res/res/values-my-rMM/strings.xml
@@ -742,7 +742,7 @@
<string name="keyguard_accessibility_status" msgid="8008264603935930611">"အခြေအနေ"</string>
<string name="keyguard_accessibility_camera" msgid="8904231194181114603">"ကင်မရာ"</string>
<string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"မီဒီယာ ထိန်းချုပ်မှုများ"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"ဝဒ်ဂျက်များ နေရာစီခြင်း စတင်ပါပြီ"</string>
+ <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"ဝိဂျက်များ နေရာစီခြင်း စတင်ပါပြီ"</string>
<string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"ဝဒ်ဂျက်များကို နေရာ ပြန်စီပြီးပါပြီ"</string>
<string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ဝဒ်ဂျက်ကို ဖျက်လိုက်ပြီးပါပြီ"</string>
<string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"သော့မချထားသာ နယ်ပယ်ကို ချဲ့ပါ"</string>
@@ -803,9 +803,9 @@
<string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"ဘရောင်ဇာ ဘူမိဇုန်သတ်မှတ်မှု ခွင့်ပြုချက်များကို မွမ်းမံခြင်း"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"အက်ပ်အား ဘရောင်ဇာ၏ ဘူမိဇုန်သတ်မှတ်ရေး ခွင့်ပြုချက်များကို မွမ်းမံခွင့် ပြုသည်။ ကြံဖန် အက်ပ်များက ၎င်းကို အသုံးချပြီး လိုရာ ဝက်ဘ်ဆိုက်များသို့ တည်နေရာ အချက်အလက် ပို့မှုကို လုပ်နိုင်သည်။"</string>
<string name="save_password_message" msgid="767344687139195790">"ဤလျှို့ဝှက်စကားဝှက်အား ဘရောင်ဇာကိုမှတ်ခိုင်းမည်လား"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"ယခုမဟုတ်ပါ"</string>
+ <string name="save_password_notnow" msgid="6389675316706699758">"ယခုမလုပ်ပါ"</string>
<string name="save_password_remember" msgid="6491879678996749466">"မှတ်ထားရန်"</string>
- <string name="save_password_never" msgid="8274330296785855105">"မည်သည့်အခါမှ"</string>
+ <string name="save_password_never" msgid="8274330296785855105">"ကန့်သတ်မှုမရှိ"</string>
<string name="open_permission_deny" msgid="7374036708316629800">"သင့်ဆီမှာ ဒီစာမျက်နှာကို ဖွင့်ရန် ခွင့်ပြုချက် မရှိပါ။"</string>
<string name="text_copied" msgid="4985729524670131385">"clipboardထံ စာသားအားကူးယူမည်"</string>
<string name="more_item_label" msgid="4650918923083320495">"နောက်ထပ်"</string>
@@ -817,7 +817,7 @@
<string name="search_hint" msgid="1733947260773056054">"ရှာဖွေပါ..."</string>
<string name="searchview_description_search" msgid="6749826639098512120">"ရှာဖွေခြင်း"</string>
<string name="searchview_description_query" msgid="5911778593125355124">"ရှာစရာ အချက်အလက်နေရာ"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"ရှာစရာ အချက်အလက်များ ရှင်းလင်းရန်"</string>
+ <string name="searchview_description_clear" msgid="1330281990951833033">"ရှာစရာ အချက်အလက်များ ဖယ်ရှားရန်"</string>
<string name="searchview_description_submit" msgid="2688450133297983542">"ရှာဖွေစရာ အချက်အလက်ကို အတည်ပြုရန်"</string>
<string name="searchview_description_voice" msgid="2453203695674994440">"အသံဖြင့် ရှာဖွေခြင်း"</string>
<string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"ထိတွေ့ပြီး ရှာဖွေခြင်း ဖွင့်မည်မလား?"</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> ရပ်တန့်သွားပါပြီ"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> သည်ထပ်တလဲလဲ ရပ်တန့်နေပါသည်"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> သည်ထပ်တလဲလဲ ရပ်တန့်နေပါသည်"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"အက်ပ်ကိုထပ်ဖွင့်ပါ"</string>
<string name="aerr_report" msgid="5371800241488400617">"တုံ့ပြန်ချက်ပို့ပါ"</string>
<string name="aerr_close" msgid="2991640326563991340">"ပိတ်ပါ"</string>
<string name="aerr_mute" msgid="1974781923723235953">"စက်ပစ္စည်း ပြန်လည်စတင်သည့်တိုင် အသံတိတ်ပါ"</string>
@@ -1263,7 +1262,7 @@
<string name="gpsNotifTitle" msgid="5446858717157416839">"တည်နေရာအား တောင်းခံသည်"</string>
<string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)မှတောင်းခံသည်"</string>
<string name="gpsVerifYes" msgid="2346566072867213563">"ဟုတ်ကဲ့"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"မဟုတ်ပါ"</string>
+ <string name="gpsVerifNo" msgid="1146564937346454865">"No"</string>
<string name="sync_too_many_deletes" msgid="5296321850662746890">"ပယ်ဖျက်မည့်ကန့်သတ်နှုန်းကျော်လွန်သည်"</string>
<string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>၊ account <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> အတွက် စုစုပေါင်း <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> အရာဖျက်ထားပါသည်။ သင်ဘာလုပ်ချင်ပါလဲ?"</string>
<string name="sync_really_delete" msgid="2572600103122596243">"ဤအရာများကိုဖျက်ပါ"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"USSD တောင်းဆိုချက်အရ SS တောင်းဆိုချက်အား ပြင်ဆင်ထား၏။"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS တောင်းဆိုချက်အရ SS တောင်းဆိုချက်အား ပြင်ဆင်ထား၏။"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"အလုပ်ကိုယ်ရေးအချက်အလက်"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"တိုးချဲ့ရန်ခလုတ်"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB ဘေးဘက်အပေါက်"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"အန်းဒရွိုက်"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 4311fc206220..3bdcde86d4d8 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> har stoppet"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> stopper gjentatte ganger"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> stopper gjentatte ganger"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Åpne appen på nytt"</string>
<string name="aerr_report" msgid="5371800241488400617">"Send tilbakemelding"</string>
<string name="aerr_close" msgid="2991640326563991340">"Lukk"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignorer frem til enheten starter på nytt"</string>
@@ -1548,7 +1547,7 @@
<string name="lock_to_app_start" msgid="6643342070839862795">"Skjermen er festet"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skjermen er løsnet"</string>
<string name="lock_to_app_unlock_pin" msgid="2552556656504331634">"PIN-kode for å løsne apper"</string>
- <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Krev bruk av opplåsningsmønster for å løsne apper"</string>
+ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Krev opplåsingsmønster for å løsne apper"</string>
<string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Krev passord for å løsne apper"</string>
<string name="package_installed_device_owner" msgid="8420696545959087545">"Installert av administratoren"</string>
<string name="package_updated_device_owner" msgid="8856631322440187071">"Oppdatert av administratoren"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS-forespørselen er endret til en USSD-forespørsel."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS-forespørselen er endret til en ny SS-forespørsel."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Arbeidsprofil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Knapp for å vise mer"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port for USB-tilleggsutstyr for Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml
index b6ef3c372536..56cc297a66dc 100644
--- a/core/res/res/values-ne-rNP/strings.xml
+++ b/core/res/res/values-ne-rNP/strings.xml
@@ -1000,8 +1000,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> रोकिएको छ"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> रोकिरहन्छ"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> रोकिरहन्छ"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"अनुप्रयोगलाई फेरि खोल्नुहोस्"</string>
<string name="aerr_report" msgid="5371800241488400617">"प्रतिक्रिया पठाउनुहोस्"</string>
<string name="aerr_close" msgid="2991640326563991340">"बन्द गर्नुहोस्"</string>
<string name="aerr_mute" msgid="1974781923723235953">"यन्त्र पुनः सुरु नभएसम्म म्यूट गर्नुहोस्"</string>
@@ -1616,9 +1615,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS अनुरोध USSD अनुरोधमा परिमार्जन गरिएको छ।"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS अनुरोध नयाँ SS अनुरोधमा परिमार्जन गरिएको छ।"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"कार्य प्रोफाइल"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"विस्तृत गर्ने बटन"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB पेरिफेरल पोर्ट"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
@@ -1659,5 +1657,5 @@
<string name="negative_duration" msgid="5688706061127375131">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="audit_safemode_notification" msgid="6416076898350685856">"यस यन्त्रलाई सीमितताहरू बिना प्रयोग गर्नका लागि फ्याक्ट्री रिसेट गर्नुहोस्"</string>
<string name="audit_safemode_notification_details" msgid="1860601176690176413">"थप जान्नका लागि छुनुहोस्।"</string>
- <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> लाई असक्षम गर्नुहोस्"</string>
+ <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> लाई असक्षम गरियो"</string>
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 5783fdfbe72d..262dd7581a10 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1612,7 +1612,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Werkprofiel"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Poort voor Android-USB-randapparatuur"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml
index 398f2af295dd..894385c53145 100644
--- a/core/res/res/values-pa-rIN/strings.xml
+++ b/core/res/res/values-pa-rIN/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> ਰੁਕ ਗਿਆ ਹੈ"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> ਵਾਰ-ਵਾਰ ਰੁਕ ਰਹੀ ਹੈ"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> ਵਾਰ-ਵਾਰ ਰੁਕ ਰਹੀ ਹੈ"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"ਦੁਬਾਰਾ ਐਪ ਖੋਲ੍ਹੋ"</string>
<string name="aerr_report" msgid="5371800241488400617">"ਪ੍ਰਤੀਕਰਮ ਭੇਜੋ"</string>
<string name="aerr_close" msgid="2991640326563991340">"ਬੰਦ ਕਰੋ"</string>
<string name="aerr_mute" msgid="1974781923723235953">"ਡੀਵਾਈਸ ਦੇ ਮੁੜ-ਚਾਲੂ ਹੋਣ ਤੱਕ ਮਿਊਟ ਕਰੋ"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS ਬੇਨਤੀ USSD ਬੇਨਤੀ ਵਿੱਚ ਸੰਸ਼ੋਧਿਤ ਕੀਤੀ ਗਈ ਹੈ।"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS ਬੇਨਤੀ ਨਵੀਂ SS ਵਿੱਚ ਸੰਸ਼ੋਧਿਤ ਕੀਤੀ ਗਈ ਹੈ।"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"ਕੰਮ ਪ੍ਰੋਫਾਈਲ"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"ਵਿਸਤਾਰ ਬਟਨ"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB ਪੈਰੀਫੈਰਲ ਪੋਰਟ"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 6f46186609ec..44c1656397ec 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -1040,8 +1040,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> przestał działać"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> wciąż przestaje działać"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> wciąż przestaje działać"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Ponownie otwórz aplikację"</string>
<string name="aerr_report" msgid="5371800241488400617">"Prześlij opinię"</string>
<string name="aerr_close" msgid="2991640326563991340">"Zamknij"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignoruj do momentu ponownego uruchomienia urządzenia"</string>
@@ -1680,9 +1679,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Żądanie SS zostało zmienione na żądanie USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Żądanie SS zostało zmienione na nowe żądanie SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profil do pracy"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Przycisk rozwijania"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port peryferyjny USB na urządzeniu z Androidem"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
@@ -1725,5 +1723,5 @@
<string name="negative_duration" msgid="5688706061127375131">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="audit_safemode_notification" msgid="6416076898350685856">"Aby używać tego urządzenia bez ograniczeń, przywróć ustawienia fabryczne"</string>
<string name="audit_safemode_notification_details" msgid="1860601176690176413">"Kliknij, by dowiedzieć się więcej."</string>
- <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Wyłączony: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
+ <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Wyłączono: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 870a15979aba..01337537b0f0 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -891,14 +891,38 @@
<item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> a</item>
<item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> a</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> minutos atrás</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> minutos atrás</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> horas atrás</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> horas atrás</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dias atrás</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dias atrás</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> anos atrás</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> anos atrás</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> minutos</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> minutos</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> horas</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> horas</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> dias</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> dias</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> anos</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> anos</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problema com o vídeo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Este vídeo não é válido para transmissão neste dispositivo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Não é possível reproduzir este vídeo."</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> parou"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> apresenta falhas continuamente"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> apresenta falhas continuamente"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Abrir app novamente"</string>
<string name="aerr_report" msgid="5371800241488400617">"Enviar feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Fechar"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Desativar até que dispositivo seja reiniciado"</string>
@@ -1586,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"A solicitação SS foi modificada para a solicitação USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"A solicitação SS foi modificada para a nova solicitação SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Perfil de trabalho"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Botão \"Expandir\""</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Porta USB periférica Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 034dbd3b0d39..743e450ab75f 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> sofreu uma falha de sistema."</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> continua a falhar"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> continua a falhar"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Abrir aplicação novamente"</string>
<string name="aerr_report" msgid="5371800241488400617">"Enviar comentários"</string>
<string name="aerr_close" msgid="2991640326563991340">"Fechar"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Desativar som até o dispositivo reiniciar"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"O pedido SS foi modificado para um pedido USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"O pedido SS foi modificado para um novo pedido SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Perfil de trabalho"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Botão Expandir"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Porta periférica USB para Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 870a15979aba..01337537b0f0 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -891,14 +891,38 @@
<item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> a</item>
<item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> a</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> minutos atrás</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> minutos atrás</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> horas atrás</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> horas atrás</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dias atrás</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dias atrás</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> anos atrás</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> anos atrás</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> minutos</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> minutos</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> horas</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> horas</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> dias</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> dias</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> anos</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> anos</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problema com o vídeo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Este vídeo não é válido para transmissão neste dispositivo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Não é possível reproduzir este vídeo."</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> parou"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> apresenta falhas continuamente"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> apresenta falhas continuamente"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Abrir app novamente"</string>
<string name="aerr_report" msgid="5371800241488400617">"Enviar feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Fechar"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Desativar até que dispositivo seja reiniciado"</string>
@@ -1586,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"A solicitação SS foi modificada para a solicitação USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"A solicitação SS foi modificada para a nova solicitação SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Perfil de trabalho"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Botão \"Expandir\""</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Porta USB periférica Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 8396d525cc88..958ac87cbb9e 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -682,7 +682,7 @@
<string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Încercați din nou"</string>
<string name="lockscreen_password_wrong" msgid="5737815393253165301">"Încercați din nou"</string>
<string name="faceunlock_multiple_failures" msgid="754137583022792429">"S-a depășit numărul maxim de încercări pentru Deblocare facială"</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Fără SIM."</string>
+ <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Fără SIM"</string>
<string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Nu există card SIM în computerul tablet PC."</string>
<string name="lockscreen_missing_sim_message" product="tv" msgid="1943633865476989599">"Niciun card SIM în televizor."</string>
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefonul nu are card SIM."</string>
@@ -906,14 +906,46 @@
<item quantity="other">peste <xliff:g id="COUNT_1">%d</xliff:g> de ani</item>
<item quantity="one">peste <xliff:g id="COUNT_0">%d</xliff:g> an</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="few">acum <xliff:g id="COUNT_1">%d</xliff:g> minute</item>
+ <item quantity="other">acum <xliff:g id="COUNT_1">%d</xliff:g> de minute</item>
+ <item quantity="one">acum <xliff:g id="COUNT_0">%d</xliff:g> minut</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="few">acum <xliff:g id="COUNT_1">%d</xliff:g> ore</item>
+ <item quantity="other">acum <xliff:g id="COUNT_1">%d</xliff:g> de ore</item>
+ <item quantity="one">acum <xliff:g id="COUNT_0">%d</xliff:g> oră</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="few">acum <xliff:g id="COUNT_1">%d</xliff:g> zile</item>
+ <item quantity="other">acum <xliff:g id="COUNT_1">%d</xliff:g> de zile</item>
+ <item quantity="one">acum <xliff:g id="COUNT_0">%d</xliff:g> zi</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="few">acum <xliff:g id="COUNT_1">%d</xliff:g> ani</item>
+ <item quantity="other">acum <xliff:g id="COUNT_1">%d</xliff:g> de ani</item>
+ <item quantity="one">acum <xliff:g id="COUNT_0">%d</xliff:g> an</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="few">peste <xliff:g id="COUNT_1">%d</xliff:g> minute</item>
+ <item quantity="other">peste <xliff:g id="COUNT_1">%d</xliff:g> de minute</item>
+ <item quantity="one">peste <xliff:g id="COUNT_0">%d</xliff:g> minut</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="few">peste <xliff:g id="COUNT_1">%d</xliff:g> ore</item>
+ <item quantity="other">peste <xliff:g id="COUNT_1">%d</xliff:g> de ore</item>
+ <item quantity="one">peste <xliff:g id="COUNT_0">%d</xliff:g> oră</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="few">peste <xliff:g id="COUNT_1">%d</xliff:g> zile</item>
+ <item quantity="other">peste <xliff:g id="COUNT_1">%d</xliff:g> de zile</item>
+ <item quantity="one">peste <xliff:g id="COUNT_0">%d</xliff:g> zi</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="few">peste <xliff:g id="COUNT_1">%d</xliff:g> ani</item>
+ <item quantity="other">peste <xliff:g id="COUNT_1">%d</xliff:g> de ani</item>
+ <item quantity="one">peste <xliff:g id="COUNT_0">%d</xliff:g> an</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problemă video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Acest fișier video nu este valid pentru a fi transmis în flux către acest dispozitiv."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Nu puteți reda acest videoclip"</string>
@@ -985,8 +1017,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> s-a oprit"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> se oprește încontinuu"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> se oprește încontinuu"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Deschideți din nou aplicația"</string>
<string name="aerr_report" msgid="5371800241488400617">"Trimiteți feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Închideți"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Dezactivați până la repornirea dispozitivului"</string>
@@ -1613,9 +1644,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Solicitarea SS este modificată într-o solicitare USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Solicitarea SS este modificată într-o nouă solicitare SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profil de serviciu"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Butonul de extindere"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port USB Android periferic"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 9ffeae17eae9..b9524c999918 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1040,8 +1040,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Во время процесса \"<xliff:g id="PROCESS">%1$s</xliff:g>\" произошел сбой"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"В приложении \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" снова произошел сбой"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"В приложении \"<xliff:g id="PROCESS">%1$s</xliff:g>\" снова произошел сбой"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Перезапустить приложение"</string>
<string name="aerr_report" msgid="5371800241488400617">"Отправить отзыв"</string>
<string name="aerr_close" msgid="2991640326563991340">"Закрыть"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Отключить до перезагрузки устройства"</string>
@@ -1680,9 +1679,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS-запрос преобразован в USSD-запрос."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS-запрос преобразован в новый SS-запрос."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Рабочий профиль"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Кнопка \"Развернуть\""</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Внешний USB-порт Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml
index f956d1f550db..784fbd122492 100644
--- a/core/res/res/values-si-rLK/strings.xml
+++ b/core/res/res/values-si-rLK/strings.xml
@@ -1614,7 +1614,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"කාර්යාල පැතිකඩ"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB පර්යන්ත තොට"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 028ca19c1f77..5a0101a762df 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -679,7 +679,7 @@
<string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Ak chcete odomknúť telefón alebo uskutočniť tiesňové volanie, stlačte Menu."</string>
<string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Telefón odomknete stlačením tlačidla Menu."</string>
<string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Odomknite nakreslením vzoru"</string>
- <string name="lockscreen_emergency_call" msgid="5298642613417801888">"Tiesňové volanie"</string>
+ <string name="lockscreen_emergency_call" msgid="5298642613417801888">"Stav tiesne"</string>
<string name="lockscreen_return_to_call" msgid="5244259785500040021">"Zavolať späť"</string>
<string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Správne!"</string>
<string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Skúsiť znova"</string>
@@ -1040,8 +1040,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> sa zastavil"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> sa opakovane zastavuje"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> sa opakovane zastavuje"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Spustiť aplikáciu znova"</string>
<string name="aerr_report" msgid="5371800241488400617">"Odoslať spätnú väzbu"</string>
<string name="aerr_close" msgid="2991640326563991340">"Zavrieť"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignorovať do reštartu zariadenia"</string>
@@ -1680,9 +1679,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Žiadosť SS bola upravená na žiadosť USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Žiadosť SS bola upravená na novú žiadosť SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Pracovný profil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Tlačidlo rozbalenia"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Port USB pre periférne zariadenia s Androidom"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 513894a88c07..8fe6d8a701cd 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1040,8 +1040,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> se je ustavil"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> se stalno ustavlja"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> se stalno ustavlja"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Znova odpri aplikacijo"</string>
<string name="aerr_report" msgid="5371800241488400617">"Pošlji povratne informacije"</string>
<string name="aerr_close" msgid="2991640326563991340">"Zapri"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Prezri do vnovičnega zagona naprave"</string>
@@ -1680,9 +1679,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Zahteva SS je spremenjena v zahtevo USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Zahteva SS je spremenjena v novo zahtevo SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Delovni profil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Gumb za razširitev"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Vrata USB za dodatno opremo za Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml
index cd3fd8c8c0c4..10ecabdff36e 100644
--- a/core/res/res/values-sq-rAL/strings.xml
+++ b/core/res/res/values-sq-rAL/strings.xml
@@ -1615,7 +1615,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profili i punës"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Porta periferike USB e Androidit"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index c582b41bc375..5973a509e24d 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1017,8 +1017,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> је заустављен"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> се стално зауставља"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> се стално зауставља"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Поново отвори апликацију"</string>
<string name="aerr_report" msgid="5371800241488400617">"Пошаљите повратне информације"</string>
<string name="aerr_close" msgid="2991640326563991340">"Затвори"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Игнориши док се уређај не покрене поново"</string>
@@ -1645,9 +1644,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS захтев је промењен у USSD захтев."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS захтев је промењен у нови SS захтев."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Профил за Work"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Дугме Прошири"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB порт за периферијске уређаје"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 2d53196811e5..e7da94da27b7 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> har kraschat"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> kraschar gång på gång"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> kraschar gång på gång"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Öppna appen igen"</string>
<string name="aerr_report" msgid="5371800241488400617">"Skicka feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Stäng"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Ignorera tills enheten har startat om"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS-begäran har ändrats till en USSD-begäran."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS-begäran har ändrats till en ny SS-begäran."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Jobbprofil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Knappen Utöka"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"USB-port för Android-kringutrustning"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index bf5fdfa344e7..12cd11887be4 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -891,7 +891,7 @@
</plurals>
<plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
<item quantity="other">Dakika <xliff:g id="COUNT_1">%d</xliff:g> zilizopita</item>
- <item quantity="one">dakika <xliff:g id="COUNT_0">%d</xliff:g> iliyopita</item>
+ <item quantity="one">Dakika <xliff:g id="COUNT_0">%d</xliff:g> iliyopita</item>
</plurals>
<plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
<item quantity="other">Saa <xliff:g id="COUNT_1">%d</xliff:g> zilizopita</item>
@@ -992,8 +992,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> imeacha kufanya kazi"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> inaacha kufanya kazi kila mara"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> inaacha kufanya kazi kila mara"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Fungua programu tena"</string>
<string name="aerr_report" msgid="5371800241488400617">"Tuma maoni yako"</string>
<string name="aerr_close" msgid="2991640326563991340">"Funga"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Komesha hadi kifaa kianze upya"</string>
@@ -1608,9 +1607,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Ombi la SS limerekebishwa na kuwa ombi la USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Ombi la SS limerekebishwa na kuwa ombi jipya la SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Wasifu wa kazini"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Kitufe cha kupanua"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Mlango wa USB wa Pembeni wa Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml
index ac496b161dce..a4dbde661da6 100644
--- a/core/res/res/values-ta-rIN/strings.xml
+++ b/core/res/res/values-ta-rIN/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> செயலிழந்தது"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> தொடர்ந்து செயலிழக்கிறது"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> தொடர்ந்து செயலிழக்கிறது"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"பயன்பாட்டை மீண்டும் திற"</string>
<string name="aerr_report" msgid="5371800241488400617">"கருத்து தெரிவி"</string>
<string name="aerr_close" msgid="2991640326563991340">"மூடு"</string>
<string name="aerr_mute" msgid="1974781923723235953">"சாதனம் மீண்டும் தொடங்கும் வரை முடக்கு"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS கோரிக்கையானது USSD கோரிக்கைக்கு மாற்றப்பட்டது."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS கோரிக்கையானது புதிய SS கோரிக்கைக்கு மாற்றப்பட்டது."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"பணி சுயவிவரம்"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"விரி பொத்தான்"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB பெரிபெரல் போர்ட்"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml
index 8c5627e4e0ba..a394a1ab91f2 100644
--- a/core/res/res/values-te-rIN/strings.xml
+++ b/core/res/res/values-te-rIN/strings.xml
@@ -55,7 +55,7 @@
<string name="mmiComplete" msgid="8232527495411698359">"MMI పూర్తయింది."</string>
<string name="badPin" msgid="9015277645546710014">"మీరు టైప్ చేసిన పాత పిన్‌ చెల్లదు."</string>
<string name="badPuk" msgid="5487257647081132201">"మీరు టైప్ చేసిన PUK చెల్లదు."</string>
- <string name="mismatchPin" msgid="609379054496863419">"మీరు టైప్ చేసిన PINలు సరిపోలలేదు."</string>
+ <string name="mismatchPin" msgid="609379054496863419">"మీరు టైప్ చేసిన పిన్‌లు సరిపోలలేదు."</string>
<string name="invalidPin" msgid="3850018445187475377">"4 నుండి 8 సంఖ్యలు ఉండే పిన్‌ను టైప్ చేయండి."</string>
<string name="invalidPuk" msgid="8761456210898036513">"8 సంఖ్యలు లేదా అంతకంటే పొడవు ఉండే PUKని టైప్ చేయండి."</string>
<string name="needPuk" msgid="919668385956251611">"మీ సిమ్ కార్డు PUK-లాక్ చేయబడింది. దీన్ని అన్‌లాక్ చేయడానికి PUK కోడ్‌ను టైప్ చేయండి."</string>
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> ఆపివేయబడింది"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> పునరావృతంగా ఆపివేయబడుతోంది"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> పునరావృతంగా ఆపివేయబడుతోంది"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"అనువర్తనాన్ని మళ్లీ తెరువు"</string>
<string name="aerr_report" msgid="5371800241488400617">"అభిప్రాయాన్ని పంపు"</string>
<string name="aerr_close" msgid="2991640326563991340">"మూసివేయి"</string>
<string name="aerr_mute" msgid="1974781923723235953">"పరికరం పునఃప్రారంభమయ్యే వరకు మ్యూట్ చేయి"</string>
@@ -1527,7 +1526,7 @@
<string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"కొత్త పిన్‌"</string>
<string name="restr_pin_confirm_pin" msgid="8501523829633146239">"కొత్త పిన్‌ను నిర్ధారించండి"</string>
<string name="restr_pin_create_pin" msgid="8017600000263450337">"నియంత్రణలను సవరించడానికి పిన్‌ను రూపొందించండి"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PINలు సరిపోలలేదు. మళ్లీ ప్రయత్నించండి."</string>
+ <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"పిన్‌లు సరిపోలలేదు. మళ్లీ ప్రయత్నించండి."</string>
<string name="restr_pin_error_too_short" msgid="8173982756265777792">"పిన్‌ చాలా చిన్నదిగా ఉంది. తప్పనిసరిగా కనీసం 4 అంకెలు ఉండాలి."</string>
<plurals name="restr_pin_countdown" formatted="false" msgid="9061246974881224688">
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> సెకన్లలో మళ్లీ ప్రయత్నించండి</item>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS అభ్యర్థన USSD అభ్యర్థనగా సవరించబడింది."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS అభ్యర్థన కొత్త SS అభ్యర్థనగా సవరించబడింది."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"కార్యాలయ ప్రొఫైల్‌"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"విస్తరింపజేయి బటన్"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB పెరిఫెరల్ పోర్ట్"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 58babce1d20b..6ee35031fc8c 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> หยุดทำงาน"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> หยุดทำงานอยู่เรื่อยๆ"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> หยุดทำงานอยู่เรื่อยๆ"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"เปิดแอปอีกครั้ง"</string>
<string name="aerr_report" msgid="5371800241488400617">"ส่งความคิดเห็น"</string>
<string name="aerr_close" msgid="2991640326563991340">"ปิด"</string>
<string name="aerr_mute" msgid="1974781923723235953">"ปิดการแจ้งเตือนจนกว่าอุปกรณ์จะรีสตาร์ท"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"คำขอ SS ได้รับการแก้ไขให้เป็นคำขอ USSD"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"คำขอ SS ได้รับการแก้ไขให้เป็นคำขอ SS ใหม่"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"โปรไฟล์งาน"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"ปุ่มขยาย"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"อุปกรณ์สำหรับต่อพอร์ต USB ของ Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index cfd8bb64f3e4..0be99ce4ce1f 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Huminto ang <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"Paulit-ulit na humihinto ang <xliff:g id="APPLICATION">%1$s</xliff:g>"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Paulit-ulit na humihinto ang <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Buksang muli ang app"</string>
<string name="aerr_report" msgid="5371800241488400617">"Magpadala ng feedback"</string>
<string name="aerr_close" msgid="2991640326563991340">"Isara"</string>
<string name="aerr_mute" msgid="1974781923723235953">"I-mute hanggang sa mag-restart ang device"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Ginawang USSD request ang SS request."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Ginawang bagong SS request ang SS request."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Profile sa trabaho"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Button na Palawakin"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB Peripheral Port"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 892f87a06dd3..9cd7696372a4 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> y içinde</item>
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> y içinde</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dakika önce</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dakika önce</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> saat önce</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> saat önce</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> gün önce</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> gün önce</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> yıl önce</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> yıl önce</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dakika içinde</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dakika içinde</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> saat içinde</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> saat içinde</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> gün içinde</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> gün içinde</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> yıl içinde</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> yıl içinde</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video sorunu"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Bu video bu cihazda akış için uygun değil."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Bu video oynatılamıyor."</string>
@@ -1588,7 +1612,7 @@
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"İş profili"</string>
<!-- no translation found for expand_button_content_description (5855955413376384681) -->
<skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB Çevre Birimi Bağlantı Noktası"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 38369d54fefc..26d831664f19 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1040,8 +1040,7 @@
<string name="aerr_process" msgid="6201597323218674729">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> перестав працювати"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"Додаток <xliff:g id="APPLICATION">%1$s</xliff:g> періодично перестає працювати"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"Процес \"<xliff:g id="PROCESS">%1$s</xliff:g>\" періодично перестає працювати"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Відкрити додаток знову"</string>
<string name="aerr_report" msgid="5371800241488400617">"Надіслати відгук"</string>
<string name="aerr_close" msgid="2991640326563991340">"Закрити"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Вимкнути звук до перезавантаження пристрою"</string>
@@ -1680,9 +1679,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Запит SS перетворено на запит USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Запит SS перетворено на новий запит SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Робочий профіль"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Кнопка \"Розгорнути\""</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Периферійний USB-порт Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml
index e57157669c51..8c6941c3b8ea 100644
--- a/core/res/res/values-ur-rPK/strings.xml
+++ b/core/res/res/values-ur-rPK/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> سال میں</item>
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> سال میں</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> منٹ قبل</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> منٹ قبل</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> گھنٹے قبل</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> گھنٹہ قبل</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> دن قبل</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> دن قبل</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> سال قبل</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> سال قبل</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> منٹ میں</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> منٹ میں</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> گھنٹے میں</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> گھنٹہ میں</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> دن میں</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> دن میں</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> سال میں</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> سال میں</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"ویڈیو مسئلہ"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"یہ ویڈیو اس آلہ پر سلسلہ بندی کیلئے درست نہیں ہے۔"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"یہ ویڈیو نہیں چل سکتا۔"</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> بند ہو گیا ہے"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> بار بار بند ہوتی ہے"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> بار بار بند ہوتی ہے"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"ایپ دوبارہ کھولیں"</string>
<string name="aerr_report" msgid="5371800241488400617">"تاثرات بھیجیں"</string>
<string name="aerr_close" msgid="2991640326563991340">"بند کریں"</string>
<string name="aerr_mute" msgid="1974781923723235953">"آلہ دوبارہ اسٹارٹ ہونے تک خاموش رکھیں"</string>
@@ -1589,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"‏SS درخواست میں ترمیم کر کے USSD درخواست بنا دی گئی ہے۔"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"‏SS درخواست میں ترمیم کر کے نئی SS درخواست بنا دی گئی ہے۔"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"دفتری پروفائل"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"پھیلائیں بٹن"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"‏Android USB پیرفرل پورٹ"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml
index 8727d038b8ed..1f8a653b197d 100644
--- a/core/res/res/values-uz-rUZ/strings.xml
+++ b/core/res/res/values-uz-rUZ/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> jarayoni ishdan chiqdi"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> yana ishdan chiqdi"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> yana ishdan chiqdi"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Ilovani qayta ochish"</string>
<string name="aerr_report" msgid="5371800241488400617">"Fikr-mulohaza yuborish"</string>
<string name="aerr_close" msgid="2991640326563991340">"Yopish"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Qurilma o‘chib yonguncha e’tiborsiz qoldirish"</string>
@@ -1200,7 +1199,7 @@
<string name="ime_action_go" msgid="8320845651737369027">"O‘tish"</string>
<string name="ime_action_search" msgid="658110271822807811">"Qidirish"</string>
<string name="ime_action_send" msgid="2316166556349314424">"Yuborish"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"Keyingi"</string>
+ <string name="ime_action_next" msgid="3138843904009813834">"Keyingisi"</string>
<string name="ime_action_done" msgid="8971516117910934605">"Tayyor"</string>
<string name="ime_action_previous" msgid="1443550039250105948">"Old."</string>
<string name="ime_action_default" msgid="2840921885558045721">"Bajarish"</string>
@@ -1243,7 +1242,7 @@
<string name="tethered_notification_title" msgid="3146694234398202601">"Modem rejimi yoniq"</string>
<string name="tethered_notification_message" msgid="2113628520792055377">"Sozlash uchun bosing."</string>
<string name="back_button_label" msgid="2300470004503343439">"Orqaga"</string>
- <string name="next_button_label" msgid="1080555104677992408">"Keyingi"</string>
+ <string name="next_button_label" msgid="1080555104677992408">"Keyingisi"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Tashlab o‘tish"</string>
<string name="no_matches" msgid="8129421908915840737">"Topilmadi"</string>
<string name="find_on_page" msgid="1946799233822820384">"Sahifadan topish"</string>
@@ -1613,9 +1612,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS so‘rovi USSD so‘roviga o‘zgartirildi."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS so‘rovi yangi SS so‘roviga o‘zgartirildi."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Ishchi profil"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Yoyish tugmasi"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android tashqi USB porti"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 6630093c2474..fc491533ce0d 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g> năm</item>
<item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g> năm</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> phút trước</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> phút trước</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> giờ trước</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> giờ trước</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ngày trước</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ngày trước</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> năm trước</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> năm trước</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other">sau <xliff:g id="COUNT_1">%d</xliff:g> phút</item>
+ <item quantity="one">sau <xliff:g id="COUNT_0">%d</xliff:g> phút</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other">sau <xliff:g id="COUNT_1">%d</xliff:g> giờ</item>
+ <item quantity="one">sau <xliff:g id="COUNT_0">%d</xliff:g> giờ</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other">sau <xliff:g id="COUNT_1">%d</xliff:g> ngày</item>
+ <item quantity="one">sau <xliff:g id="COUNT_0">%d</xliff:g> ngày</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other">sau <xliff:g id="COUNT_1">%d</xliff:g> năm</item>
+ <item quantity="one">sau <xliff:g id="COUNT_0">%d</xliff:g> năm</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Sự cố video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Video này không hợp lệ để phát trực tuyến đến thiết bị này."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Không thể phát video này."</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> đã dừng"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> tiếp tục dừng"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g> tiếp tục dừng"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Mở lại ứng dụng"</string>
<string name="aerr_report" msgid="5371800241488400617">"Gửi phản hồi"</string>
<string name="aerr_close" msgid="2991640326563991340">"Đóng"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Tắt tiếng cho đến khi thiết bị khởi động lại"</string>
@@ -1586,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Yêu cầu SS được sửa đổi thành yêu cầu USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Yêu cầu SS được sửa đổi thành yêu cầu SS mới."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Hồ sơ công việc"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Nút mở rộng"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Cổng ngoại vi USB Android"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 7150147d771a..0bae774077b9 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年后</item>
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年后</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分钟前</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分钟前</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小时前</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小时前</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天前</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天前</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年前</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年前</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分钟后</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分钟后</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小时后</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小时后</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天后</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天后</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年后</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年后</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"视频问题"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"抱歉,该视频不适合在此设备上播放。"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"无法播放此视频。"</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g>已停止运行"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g>屡次停止运行"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"<xliff:g id="PROCESS">%1$s</xliff:g>屡次停止运行"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"重新打开应用"</string>
<string name="aerr_report" msgid="5371800241488400617">"发送反馈"</string>
<string name="aerr_close" msgid="2991640326563991340">"关闭"</string>
<string name="aerr_mute" msgid="1974781923723235953">"忽略(直到设备重启)"</string>
@@ -1586,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS 请求已修改为 USSD 请求。"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS 请求已修改为新的 SS 请求。"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"工作资料"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"展开按钮"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB 外设端口"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 65df274544ac..89d5f28ed8c5 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"「<xliff:g id="PROCESS">%1$s</xliff:g>」已經停止運作"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"「<xliff:g id="APPLICATION">%1$s</xliff:g>」不斷停止運作"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"「<xliff:g id="PROCESS">%1$s</xliff:g>」不斷停止運作"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"再次開啟應用程式"</string>
<string name="aerr_report" msgid="5371800241488400617">"傳送意見反映"</string>
<string name="aerr_close" msgid="2991640326563991340">"關閉"</string>
<string name="aerr_mute" msgid="1974781923723235953">"忽略直至裝置重新啟動"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS 要求已修改為 USSD 要求。"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS 要求已修改為新的 SS 要求。"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"工作設定檔"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"展開按鈕"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB 外端連接埠"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 474f8747b9ac..5f3ca9585be3 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -891,14 +891,38 @@
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年內</item>
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年內</item>
</plurals>
- <!-- no translation found for duration_minutes_relative (3178131706192980192) -->
- <!-- no translation found for duration_hours_relative (676894109982008411) -->
- <!-- no translation found for duration_days_relative (2203515825765397130) -->
- <!-- no translation found for duration_years_relative (4820062134188885734) -->
- <!-- no translation found for duration_minutes_relative_future (4655043589817680966) -->
- <!-- no translation found for duration_hours_relative_future (8084579714205223891) -->
- <!-- no translation found for duration_days_relative_future (333215369363433992) -->
- <!-- no translation found for duration_years_relative_future (8644862986413104011) -->
+ <plurals name="duration_minutes_relative" formatted="false" msgid="3178131706192980192">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分鐘前</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分鐘前</item>
+ </plurals>
+ <plurals name="duration_hours_relative" formatted="false" msgid="676894109982008411">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小時前</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小時前</item>
+ </plurals>
+ <plurals name="duration_days_relative" formatted="false" msgid="2203515825765397130">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天前</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天前</item>
+ </plurals>
+ <plurals name="duration_years_relative" formatted="false" msgid="4820062134188885734">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年前</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年前</item>
+ </plurals>
+ <plurals name="duration_minutes_relative_future" formatted="false" msgid="4655043589817680966">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分鐘後</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分鐘後</item>
+ </plurals>
+ <plurals name="duration_hours_relative_future" formatted="false" msgid="8084579714205223891">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小時後</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小時後</item>
+ </plurals>
+ <plurals name="duration_days_relative_future" formatted="false" msgid="333215369363433992">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天後</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天後</item>
+ </plurals>
+ <plurals name="duration_years_relative_future" formatted="false" msgid="8644862986413104011">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年後</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年後</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"影片發生問題"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"這部影片的格式無效,因此無法在此裝置中串流播放。"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"無法播放這部影片。"</string>
@@ -970,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"「<xliff:g id="PROCESS">%1$s</xliff:g>」已停止運作"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"「<xliff:g id="APPLICATION">%1$s</xliff:g>」屢次停止運作"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"「<xliff:g id="PROCESS">%1$s</xliff:g>」屢次停止運作"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"再次開啟應用程式"</string>
<string name="aerr_report" msgid="5371800241488400617">"提供意見"</string>
<string name="aerr_close" msgid="2991640326563991340">"關閉"</string>
<string name="aerr_mute" msgid="1974781923723235953">"略過直到裝置重新啟動"</string>
@@ -1586,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"SS 要求已改為 USSD 要求。"</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"SS 要求已改為新的 SS 要求。"</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Work 設定檔"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"展開按鈕"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Android USB 週邊連接埠"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"Android"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 34e1a709be32..304b0ca114c2 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -994,8 +994,7 @@
<string name="aerr_process" msgid="6201597323218674729">"I-<xliff:g id="PROCESS">%1$s</xliff:g> imile"</string>
<string name="aerr_application_repeated" msgid="3146328699537439573">"I-<xliff:g id="APPLICATION">%1$s</xliff:g> ilokhu iyama"</string>
<string name="aerr_process_repeated" msgid="6235302956890402259">"I-<xliff:g id="PROCESS">%1$s</xliff:g> ilokhu iyama"</string>
- <!-- no translation found for aerr_restart (7581308074153624475) -->
- <skip />
+ <string name="aerr_restart" msgid="7581308074153624475">"Vula uhlelo lokusebenza futhi"</string>
<string name="aerr_report" msgid="5371800241488400617">"Thumela impendulo"</string>
<string name="aerr_close" msgid="2991640326563991340">"Vala"</string>
<string name="aerr_mute" msgid="1974781923723235953">"Thulisa ize iqalise kabusha idivayisi"</string>
@@ -1610,9 +1609,8 @@
<string name="stk_cc_ss_to_ussd" msgid="3951862188105305589">"Isicelo se-SS siguqulelwe kusicelo se-USSD."</string>
<string name="stk_cc_ss_to_ss" msgid="5470768854991452695">"Isicelo se-SS siguqulelwe kusicelo esisha se-SS."</string>
<string name="notification_work_profile_content_description" msgid="4600554564103770764">"Iphrofayela yomsebenzi"</string>
- <!-- no translation found for expand_button_content_description (5855955413376384681) -->
- <skip />
- <!-- no translation found for expand_action_accessibility (8707052547957298801) -->
+ <string name="expand_button_content_description" msgid="5855955413376384681">"Inkinobho yokunweba"</string>
+ <!-- no translation found for expand_action_accessibility (5307730695723718254) -->
<skip />
<string name="usb_midi_peripheral_name" msgid="7221113987741003817">"Imbobo ye-Android USB Peripheral"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7176526170008970168">"I-Android"</string>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 3a288222c705..48744b61b965 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -4263,7 +4263,7 @@
<string name="expand_button_content_description">Expand button</string>
<!-- Accessibility action description on the expand button. -->
- <string name="expand_action_accessibility">Click to expand</string>
+ <string name="expand_action_accessibility">toggle expansion</string>
<!-- User visible name for USB MIDI Peripheral port -->
<string name="usb_midi_peripheral_name">Android USB Peripheral Port</string>
@@ -4289,6 +4289,10 @@
DO NOT TRANSLATE -->
<string name="notification_inbox_ellipsis">\u2026</string>
+ <!-- Tempalate for Notification.MessagingStyle to join a conversation name with the name of the sender of a message, to make a notification title [CHAR LIMIT=NONE] -->
+ <string name="notification_messaging_title_template"><xliff:g id="conversation_title" example="Tasty Treat Team">%1$s</xliff:g>: <xliff:g id="sender_name" example="Adrian Baker">%2$s</xliff:g></string>
+
+
<!-- Label describing the number of selected items [CHAR LIMIT=48] -->
<plurals name="selected_count">
<item quantity="one"><xliff:g id="count" example="1">%1$d</xliff:g> selected</item>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 9ab42a960c82..abef7f8e91ac 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2566,6 +2566,7 @@
<!-- WallpaperManager config -->
<java-symbol type="string" name="config_wallpaperCropperPackage" />
+ <java-symbol type="string" name="expand_action_accessibility" />
<java-symbol type="id" name="textSpacerNoTitle" />
<java-symbol type="id" name="titleDividerNoCustom" />
@@ -2597,6 +2598,7 @@
<!-- TV Remote Service package -->
<java-symbol type="string" name="config_tvRemoteServicePackage" />
+ <java-symbol type="string" name="notification_messaging_title_template" />
<java-symbol type="bool" name="config_supportPreRebootSecurityLogs" />
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index 998eea5ac9ab..aecda44a6583 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -174,7 +174,6 @@ please see themes_device_defaults.xml.
<!-- Window attributes -->
<item name="windowBackground">@drawable/screen_background_selector_dark</item>
- <item name="windowBackgroundFallback">?attr/colorBackground</item>
<item name="windowClipToOutline">false</item>
<item name="windowFrame">@null</item>
<item name="windowNoTitle">false</item>
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index a26850f5a3af..627f3601de2f 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -170,7 +170,7 @@
<!-- These are the standard packages that are white-listed to always have internet
access while in power save mode, even if they aren't in the foreground. -->
- <allow-in-power-save-except-idle package="com.android.providers.downloads" />
+ <allow-in-power-save package="com.android.providers.downloads" />
<!-- These are the standard packages that are white-listed to always have internet
access while in data mode, even if they aren't in the foreground. -->
diff --git a/docs/html/guide/topics/manifest/manifest-intro.jd b/docs/html/guide/topics/manifest/manifest-intro.jd
index d7b176e810a0..c843567488e5 100644
--- a/docs/html/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html/guide/topics/manifest/manifest-intro.jd
@@ -31,27 +31,27 @@ page.title=App Manifest
<li>It names the Java package for the application.
The package name serves as a unique identifier for the application.</li>
-<li>It describes the components of the application &mdash; the activities,
-services, broadcast receivers, and content providers that the application is
-composed of. It names the classes that implement each of the components and
-publishes their capabilities (for example, which {@link android.content.Intent
-Intent} messages they can handle). These declarations let the Android system
+<li>It describes the components of the application &mdash; the activities,
+services, broadcast receivers, and content providers that the application is
+composed of. It names the classes that implement each of the components and
+publishes their capabilities (for example, which {@link android.content.Intent
+Intent} messages they can handle). These declarations let the Android system
know what the components are and under what conditions they can be launched.</li>
-<li>It determines which processes will host application components.</li>
+<li>It determines which processes will host application components.</li>
-<li>It declares which permissions the application must have in order to
-access protected parts of the API and interact with other applications.</li>
+<li>It declares which permissions the application must have in order to
+access protected parts of the API and interact with other applications.</li>
-<li>It also declares the permissions that others are required to have in
+<li>It also declares the permissions that others are required to have in
order to interact with the application's components.</li>
-<li>It lists the {@link android.app.Instrumentation} classes that provide
-profiling and other information as the application is running. These declarations
-are present in the manifest only while the application is being developed and
+<li>It lists the {@link android.app.Instrumentation} classes that provide
+profiling and other information as the application is running. These declarations
+are present in the manifest only while the application is being developed and
tested; they're removed before the application is published.</li>
-<li>It declares the minimum level of the Android API that the application
+<li>It declares the minimum level of the Android API that the application
requires.</li>
<li>It lists the libraries that the application must be linked against.</li>
@@ -61,12 +61,12 @@ requires.</li>
<h2 id="filestruct">Structure of the Manifest File</h2>
<p>
-The diagram below shows the general structure of the manifest file and
-every element that it can contain. Each element, along with all of its
-attributes, is documented in full in a separate file. To view detailed
-information about any element, click on the element name in the diagram,
+The diagram below shows the general structure of the manifest file and
+every element that it can contain. Each element, along with all of its
+attributes, is documented in full in a separate file. To view detailed
+information about any element, click on the element name in the diagram,
in the alphabetical list of elements that follows the diagram, or on any
-other mention of the element name.
+other mention of the element name.
</p>
<pre>
@@ -126,9 +126,9 @@ other mention of the element name.
</pre>
<p>
-All the elements that can appear in the manifest file are listed below
-in alphabetical order. These are the only legal elements; you cannot
-add your own elements or attributes.
+All the elements that can appear in the manifest file are listed below
+in alphabetical order. These are the only legal elements; you cannot
+add your own elements or attributes.
</p>
<p style="margin-left: 2em">
@@ -158,74 +158,86 @@ add your own elements or attributes.
</p>
-
+
<h2 id="filec">File Conventions</h2>
<p>
-Some conventions and rules apply generally to all elements and attributes
+Some conventions and rules apply generally to all elements and attributes
in the manifest:
</p>
<dl>
<dt><b>Elements</b></dt>
-<dd>Only the
+<dd>Only the
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> and
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-elements are required, they each must be present and can occur only once.
-Most of the others can occur many times or not at all &mdash; although at
-least some of them must be present for the manifest to accomplish anything
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+elements are required, they each must be present and can occur only once.
+Most of the others can occur many times or not at all &mdash; although at
+least some of them must be present for the manifest to accomplish anything
meaningful.
<p>
-If an element contains anything at all, it contains other elements.
+If an element contains anything at all, it contains other elements.
All values are set through attributes, not as character data within an element.
</p>
<p>
Elements at the same level are generally not ordered. For example,
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>, and
-<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
-elements can be intermixed in any sequence. (An
-<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
-element is the exception to this rule: It must follow the
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
-it is an alias for.)
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>, and
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+elements can be intermixed in any sequence. There are two key exceptions to this
+rule, however:
+<ul>
+ <li>
+ An <code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+ element must follow the
+ <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ it is an alias for.
+ </li>
+ <li>
+ The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+ element must be the last element inside the
+ <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+ element. In other words, the <code>&lt;/application&gt;</code> closing tag
+ must appear immediately before the <code>&lt;/manifest&gt;</code> closing
+ tag.
+ </li>
</p></dd>
<dt><b>Attributes</b></dt>
-<dd>In a formal sense, all attributes are optional. However, there are some
-that must be specified for an element to accomplish its purpose. Use the
-documentation as a guide. For truly optional attributes, it mentions a default
+<dd>In a formal sense, all attributes are optional. However, there are some
+that must be specified for an element to accomplish its purpose. Use the
+documentation as a guide. For truly optional attributes, it mentions a default
value or states what happens in the absence of a specification.
-<p>Except for some attributes of the root
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
-element, all attribute names begin with an {@code android:} prefix &mdash;
-for example, {@code android:alwaysRetainTaskState}. Because the prefix is
-universal, the documentation generally omits it when referring to attributes
+<p>Except for some attributes of the root
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+element, all attribute names begin with an {@code android:} prefix &mdash;
+for example, {@code android:alwaysRetainTaskState}. Because the prefix is
+universal, the documentation generally omits it when referring to attributes
by name.</p></dd>
<dt><b>Declaring class names</b></dt>
-<dd>Many elements correspond to Java objects, including elements for the
-application itself (the
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-element) and its principal components &mdash; activities
-(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
-services
-(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
-broadcast receivers
-(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>),
-and content providers
-(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
+<dd>Many elements correspond to Java objects, including elements for the
+application itself (the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+element) and its principal components &mdash; activities
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
+services
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
+broadcast receivers
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>),
+and content providers
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
<p>
-If you define a subclass, as you almost always would for the component classes
-({@link android.app.Activity}, {@link android.app.Service},
-{@link android.content.BroadcastReceiver}, and {@link android.content.ContentProvider}),
-the subclass is declared through a {@code name} attribute. The name must include
-the full package designation.
+If you define a subclass, as you almost always would for the component classes
+({@link android.app.Activity}, {@link android.app.Service},
+{@link android.content.BroadcastReceiver}, and {@link android.content.ContentProvider}),
+the subclass is declared through a {@code name} attribute. The name must include
+the full package designation.
For example, an {@link android.app.Service} subclass might be declared as follows:
</p>
@@ -239,12 +251,12 @@ For example, an {@link android.app.Service} subclass might be declared as follow
&lt;/manifest&gt;</pre>
<p>
-However, as a shorthand, if the first character of the string is a period, the
-string is appended to the application's package name (as specified by the
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
-element's
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
-attribute). The following assignment is the same as the one above:
+However, as a shorthand, if the first character of the string is a period, the
+string is appended to the application's package name (as specified by the
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+element's
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
+attribute). The following assignment is the same as the one above:
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -257,13 +269,13 @@ attribute). The following assignment is the same as the one above:
&lt;/manifest&gt;</pre>
<p>
-When starting a component, Android creates an instance of the named subclass.
+When starting a component, Android creates an instance of the named subclass.
If a subclass isn't specified, it creates an instance of the base class.
</p></dd>
<dt><b>Multiple values</b></dt>
-<dd>If more than one value can be specified, the element is almost always
-repeated, rather than listing multiple values within a single element.
+<dd>If more than one value can be specified, the element is almost always
+repeated, rather than listing multiple values within a single element.
For example, an intent filter can list several actions:
<pre>&lt;intent-filter . . . &gt;
@@ -274,24 +286,24 @@ For example, an intent filter can list several actions:
&lt;/intent-filter&gt;</pre></dd>
<dt><b>Resource values</b></dt>
-<dd>Some attributes have values that can be displayed to users &mdash; for
-example, a label and an icon for an activity. The values of these attributes
-should be localized and therefore set from a resource or theme. Resource
+<dd>Some attributes have values that can be displayed to users &mdash; for
+example, a label and an icon for an activity. The values of these attributes
+should be localized and therefore set from a resource or theme. Resource
values are expressed in the following format,</p>
<p style="margin-left: 2em">{@code @[<i>package</i>:]<i>type</i>/<i>name</i>}</p>
<p>
-where the <i>package</i> name can be omitted if the resource is in the same package
-as the application, <i>type</i> is a type of resource &mdash; such as "string" or
-"drawable" &mdash; and <i>name</i> is the name that identifies the specific resource.
+where the <i>package</i> name can be omitted if the resource is in the same package
+as the application, <i>type</i> is a type of resource &mdash; such as "string" or
+"drawable" &mdash; and <i>name</i> is the name that identifies the specific resource.
For example:
</p>
<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
<p>
-Values from a theme are expressed in a similar manner, but with an initial '{@code ?}'
+Values from a theme are expressed in a similar manner, but with an initial '{@code ?}'
rather than '{@code @}':
</p>
@@ -299,8 +311,8 @@ rather than '{@code @}':
</p></dd>
<dt><b>String values</b></dt>
-<dd>Where an attribute value is a string, double backslashes ('{@code \\}')
-must be used to escape characters &mdash; for example, '{@code \\n}' for
+<dd>Where an attribute value is a string, double backslashes ('{@code \\}')
+must be used to escape characters &mdash; for example, '{@code \\n}' for
a newline or '{@code \\uxxxx}' for a Unicode character.</dd>
</dl>
@@ -308,7 +320,7 @@ a newline or '{@code \\uxxxx}' for a Unicode character.</dd>
<h2 id="filef">File Features</h2>
<p>
-The following sections describe how some Android features are reflected
+The following sections describe how some Android features are reflected
in the manifest file.
</p>
@@ -316,23 +328,23 @@ in the manifest file.
<h3 id="ifs">Intent Filters</h3>
<p>
-The core components of an application (its activities, services, and broadcast
-receivers) are activated by <i>intents</i>. An intent is a
-bundle of information (an {@link android.content.Intent} object) describing a
-desired action &mdash; including the data to be acted upon, the category of
-component that should perform the action, and other pertinent instructions.
-Android locates an appropriate component to respond to the intent, launches
-a new instance of the component if one is needed, and passes it the
+The core components of an application (its activities, services, and broadcast
+receivers) are activated by <i>intents</i>. An intent is a
+bundle of information (an {@link android.content.Intent} object) describing a
+desired action &mdash; including the data to be acted upon, the category of
+component that should perform the action, and other pertinent instructions.
+Android locates an appropriate component to respond to the intent, launches
+a new instance of the component if one is needed, and passes it the
Intent object.
</p>
<p>
-Components advertise their capabilities &mdash; the kinds of intents they can
-respond to &mdash; through <i>intent filters</i>. Since the Android system
-must learn which intents a component can handle before it launches the component,
-intent filters are specified in the manifest as
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
-elements. A component may have any number of filters, each one describing
+Components advertise their capabilities &mdash; the kinds of intents they can
+respond to &mdash; through <i>intent filters</i>. Since the Android system
+must learn which intents a component can handle before it launches the component,
+intent filters are specified in the manifest as
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+elements. A component may have any number of filters, each one describing
a different capability.
</p>
@@ -344,9 +356,9 @@ filters.
</p>
<p>
-For information on how Intent objects are tested against intent filters,
-see a separate document,
-<a href="{@docRoot}guide/components/intents-filters.html">Intents
+For information on how Intent objects are tested against intent filters,
+see a separate document,
+<a href="{@docRoot}guide/components/intents-filters.html">Intents
and Intent Filters</a>.
</p>
@@ -354,42 +366,42 @@ and Intent Filters</a>.
<h3 id="iconlabel">Icons and Labels</h3>
<p>
-A number of elements have {@code icon} and {@code label} attributes for a
-small icon and a text label that can be displayed to users. Some also have a
-{@code description} attribute for longer explanatory text that can also be
-shown on-screen. For example, the
+A number of elements have {@code icon} and {@code label} attributes for a
+small icon and a text label that can be displayed to users. Some also have a
+{@code description} attribute for longer explanatory text that can also be
+shown on-screen. For example, the
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-element has all three of these attributes, so that when the user is asked whether
-to grant the permission to an application that has requested it, an icon representing
-the permission, the name of the permission, and a description of what it
+element has all three of these attributes, so that when the user is asked whether
+to grant the permission to an application that has requested it, an icon representing
+the permission, the name of the permission, and a description of what it
entails can all be presented to the user.
</p>
<p>
-In every case, the icon and label set in a containing element become the default
-{@code icon} and {@code label} settings for all of the container's subelements.
-Thus, the icon and label set in the
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-element are the default icon and label for each of the application's components.
-Similarly, the icon and label set for a component &mdash; for example, an
-<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
-element &mdash; are the default settings for each of the component's
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+In every case, the icon and label set in a containing element become the default
+{@code icon} and {@code label} settings for all of the container's subelements.
+Thus, the icon and label set in the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+element are the default icon and label for each of the application's components.
+Similarly, the icon and label set for a component &mdash; for example, an
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+element &mdash; are the default settings for each of the component's
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
elements. If an
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-element sets a label, but an activity and its intent filter do not,
-the application label is treated as the label for both the activity and
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+element sets a label, but an activity and its intent filter do not,
+the application label is treated as the label for both the activity and
the intent filter.
</p>
<p>
-The icon and label set for an intent filter are used to represent a component
+The icon and label set for an intent filter are used to represent a component
whenever the component is presented to the user as fulfilling the function
-advertised by the filter. For example, a filter with
-"{@code android.intent.action.MAIN}" and
-"{@code android.intent.category.LAUNCHER}" settings advertises an activity
+advertised by the filter. For example, a filter with
+"{@code android.intent.action.MAIN}" and
+"{@code android.intent.category.LAUNCHER}" settings advertises an activity
as one that initiates an application &mdash; that is, as
-one that should be displayed in the application launcher. The icon and label
+one that should be displayed in the application launcher. The icon and label
set in the filter are therefore the ones displayed in the launcher.
</p>
@@ -397,14 +409,14 @@ set in the filter are therefore the ones displayed in the launcher.
<h3 id="perms">Permissions</h3>
<p>
-A <i>permission</i> is a restriction limiting access to a part of the code
-or to data on the device. The limitation is imposed to protect critical
-data and code that could be misused to distort or damage the user experience.
+A <i>permission</i> is a restriction limiting access to a part of the code
+or to data on the device. The limitation is imposed to protect critical
+data and code that could be misused to distort or damage the user experience.
</p>
<p>
-Each permission is identified by a unique label. Often the label indicates
-the action that's restricted. For example, here are some permissions defined
+Each permission is identified by a unique label. Often the label indicates
+the action that's restricted. For example, here are some permissions defined
by Android:
</p>
@@ -418,26 +430,26 @@ A feature can be protected by at most one permission.
</p>
<p>
-If an application needs access to a feature protected by a permission,
-it must declare that it requires that permission with a
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-element in the manifest. Then, when the application is installed on
-the device, the installer determines whether or not to grant the requested
-permission by checking the authorities that signed the application's
-certificates and, in some cases, asking the user.
-If the permission is granted, the application is able to use the protected
-features. If not, its attempts to access those features will simply fail
-without any notification to the user.
+If an application needs access to a feature protected by a permission,
+it must declare that it requires that permission with a
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+element in the manifest. Then, when the application is installed on
+the device, the installer determines whether or not to grant the requested
+permission by checking the authorities that signed the application's
+certificates and, in some cases, asking the user.
+If the permission is granted, the application is able to use the protected
+features. If not, its attempts to access those features will simply fail
+without any notification to the user.
</p>
<p>
-An application can also protect its own components (activities, services,
-broadcast receivers, and content providers) with permissions. It can employ
-any of the permissions defined by Android (listed in
-{@link android.Manifest.permission android.Manifest.permission}) or declared
-by other applications. Or it can define its own. A new permission is declared
-with the
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+An application can also protect its own components (activities, services,
+broadcast receivers, and content providers) with permissions. It can employ
+any of the permissions defined by Android (listed in
+{@link android.Manifest.permission android.Manifest.permission}) or declared
+by other applications. Or it can define its own. A new permission is declared
+with the
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
element. For example, an activity could be protected as follows:
</p>
@@ -457,43 +469,43 @@ element. For example, an activity could be protected as follows:
</pre>
<p>
-Note that, in this example, the {@code DEBIT_ACCT} permission is not only
-declared with the
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-element, its use is also requested with the
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-element. Its use must be requested in order for other components of the
-application to launch the protected activity, even though the protection
-is imposed by the application itself.
+Note that, in this example, the {@code DEBIT_ACCT} permission is not only
+declared with the
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+element, its use is also requested with the
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+element. Its use must be requested in order for other components of the
+application to launch the protected activity, even though the protection
+is imposed by the application itself.
</p>
<p>
-If, in the same example, the {@code permission} attribute was set to a
-permission declared elsewhere
-(such as {@code android.permission.CALL_EMERGENCY_NUMBERS}, it would not
-have been necessary to declare it again with a
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-element. However, it would still have been necessary to request its use with
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
+If, in the same example, the {@code permission} attribute was set to a
+permission declared elsewhere
+(such as {@code android.permission.CALL_EMERGENCY_NUMBERS}, it would not
+have been necessary to declare it again with a
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+element. However, it would still have been necessary to request its use with
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
</p>
<p>
-The
-<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
-element declares a namespace for a group of permissions that will be defined in
-code. And
+The
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+element declares a namespace for a group of permissions that will be defined in
+code. And
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-defines a label for a set of permissions (both those declared in the manifest with
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-elements and those declared elsewhere). It affects only how the permissions are
-grouped when presented to the user. The
+defines a label for a set of permissions (both those declared in the manifest with
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+elements and those declared elsewhere). It affects only how the permissions are
+grouped when presented to the user. The
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
-element does not specify which permissions belong to the group;
+element does not specify which permissions belong to the group;
it just gives the group a name. A permission is placed in the group
by assigning the group name to the
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
-element's
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+element's
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
attribute.
</p>
@@ -501,17 +513,17 @@ attribute.
<h3 id="libs">Libraries</h3>
<p>
-Every application is linked against the default Android library, which
-includes the basic packages for building applications (with common classes
-such as Activity, Service, Intent, View, Button, Application, ContentProvider,
+Every application is linked against the default Android library, which
+includes the basic packages for building applications (with common classes
+such as Activity, Service, Intent, View, Button, Application, ContentProvider,
and so on).
</p>
<p>
-However, some packages reside in their own libraries. If your application
-uses code from any of these packages, it must explicitly asked to be linked
-against them. The manifest must contain a separate
-<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
-element to name each of the libraries. (The library name can be found in the
+However, some packages reside in their own libraries. If your application
+uses code from any of these packages, it must explicitly asked to be linked
+against them. The manifest must contain a separate
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+element to name each of the libraries. (The library name can be found in the
documentation for the package.)
</p>
diff --git a/docs/html/images/training/tv/playback/guided-step-buttonaction-2x.png b/docs/html/images/training/tv/playback/guided-step-buttonaction-2x.png
new file mode 100644
index 000000000000..059cf0ae544c
--- /dev/null
+++ b/docs/html/images/training/tv/playback/guided-step-buttonaction-2x.png
Binary files differ
diff --git a/docs/html/images/training/tv/playback/guided-step-buttonaction.png b/docs/html/images/training/tv/playback/guided-step-buttonaction.png
new file mode 100644
index 000000000000..aacb844fa550
--- /dev/null
+++ b/docs/html/images/training/tv/playback/guided-step-buttonaction.png
Binary files differ
diff --git a/docs/html/images/training/tv/playback/guided-step-subaction-2x.png b/docs/html/images/training/tv/playback/guided-step-subaction-2x.png
new file mode 100644
index 000000000000..411bee4f2289
--- /dev/null
+++ b/docs/html/images/training/tv/playback/guided-step-subaction-2x.png
Binary files differ
diff --git a/docs/html/images/training/tv/playback/guided-step-subaction.png b/docs/html/images/training/tv/playback/guided-step-subaction.png
new file mode 100644
index 000000000000..5b004d5b21a4
--- /dev/null
+++ b/docs/html/images/training/tv/playback/guided-step-subaction.png
Binary files differ
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index ab2b5ba2314e..d457d5cb4877 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -119,10 +119,10 @@ use. Some of the changes include:</p>
</li>
<li>
- <strong>Message style customization</strong>: You can customize more of the
- user interface labels associated with your notifications using the
- <code>MessageStyle</code> class. You can configure the message, conversation
- title, and content view.
+ <strong>Messaging style customization</strong>: You can customize more of
+ the user interface labels associated with your notifications using the
+ <code>MessagingStyle</code> class. You can configure the message,
+ conversation title, and content view.
</li>
<li>
diff --git a/docs/html/preview/features/notification-updates.jd b/docs/html/preview/features/notification-updates.jd
index 016333734b57..af449cbecb5f 100644
--- a/docs/html/preview/features/notification-updates.jd
+++ b/docs/html/preview/features/notification-updates.jd
@@ -16,7 +16,7 @@ trainingnavtop=true
<li><a href="#direct">Direct Reply</a></li>
<li><a href="#bundle">Bundled Notifications</a></li>
<li><a href="#custom">Custom Views</a></li>
- <li><a href="#style">Message Style</a></li>
+ <li><a href="#style">Messaging Style</a></li>
</ol>
</div>
@@ -378,14 +378,14 @@ Notification notification = new Notification.Builder()
<h2 id="style">Messaging Style</h2>
<p>
Android N introduces a new API for customizing the style of a notification.
- Using the <code>MessageStyle</code> class, you can change several of the
+ Using the <code>MessagingStyle</code> class, you can change several of the
labels displayed on the notification, including the conversation title,
additional messages, and the content view for the notification.
</p>
<p>
The following code snippet demonstrates how to customize a notification's
- style using the <code>MessageStyle</code> class.
+ style using the <code>MessagingStyle</code> class.
</p>
<pre>
diff --git a/docs/html/training/tv/playback/guided-step.jd b/docs/html/training/tv/playback/guided-step.jd
index 121961f03a73..99e5c0867043 100644
--- a/docs/html/training/tv/playback/guided-step.jd
+++ b/docs/html/training/tv/playback/guided-step.jd
@@ -1,5 +1,6 @@
page.title=Adding a Guided Step
-page.tags=tv, guided step
+page.tags=tv,guided step,GuidedStepFragment,GuidedAction
+page.keywords=tv,GuidedStepFragment,GuidedAction
helpoutsWidget=true
trainingnavtop=true
@@ -12,7 +13,7 @@ trainingnavtop=true
<ol>
<li><a href="#details">Provide Details for a Step</a></li>
<li><a href="#actions">Create and Handle User Actions</a></li>
- <li><a href="#sequence">Group Guided Steps Into a Sequence</a></li>
+ <li><a href="#sequence">Group Guided Steps Into a Guided Sequence</a></li>
<li><a href="#presentation">Customize Step Presentation</a></li>
</ol>
<h2>Try it out</h2>
@@ -107,7 +108,7 @@ action item, and provide the action string, description, and ID. Use
<pre>
&#64;Override
-public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
+public void onCreateActions(List&lt;GuidedAction&gt; actions, Bundle savedInstanceState) {
// Add "Continue" user action for this step
actions.add(new GuidedAction.Builder()
.id(CONTINUE)
@@ -119,39 +120,60 @@ public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceStat
</pre>
<p>
-Actions aren’t limited to single-line selections. Use
-{@link android.support.v17.leanback.widget.GuidedAction} attributes
-to add the following additional types of actions:
+Actions aren't limited to single-line selections. Here are additional types of
+actions you can create:
</p>
<ul>
<li>
-Add a information label action by setting
+Add an information label action by setting
{@link android.support.v17.leanback.widget.GuidedAction.Builder#infoOnly infoOnly(true)}.
-If <code>infoOnly</code> is set to true, the action can't be selected by the user. Use label
-actions to provide additional information about user choices.
+If you set <code>infoOnly</code> to true, the user can't select the action. To
+provide additional information about user choices, use label actions.
</li>
<li>
Add an editable text action by setting
{@link android.support.v17.leanback.widget.GuidedAction.Builder#editable editable(true)}. If
<code>editable</code> is true, when the action is selected the user can enter text using the
-remote or a connected keyboard.
+remote or a connected keyboard. Override
+{@link android.support.v17.leanback.app.GuidedStepFragment#onGuidedActionEdited
+onGuidedActionEdited()} or
+{@code onGuidedActionEditedAndProceed()} to get the modified text the user entered.
</li>
<li>
Add a set of actions that behave as checkable radio buttons by using
{@link android.support.v17.leanback.widget.GuidedAction.Builder#checkSetId checkSetId()}
with a common ID value to group actions into a set. All actions in the same list with the same
-check-set ID are considered linked. When one of the actions within that set is selected, that
+check-set ID are considered linked. When the user selects one of the actions within that set, that
action becomes checked, while all other actions become unchecked.
</li>
+<li>
+Add a date-picker action by using
+{@code GuidedDatePickerAction.Builder}
+instead of
+{@link android.support.v17.leanback.widget.GuidedAction.Builder} in
+{@link android.support.v17.leanback.app.GuidedStepFragment#onCreateActions
+onCreateActions()}. Override
+{@link android.support.v17.leanback.app.GuidedStepFragment#onGuidedActionEdited
+onGuidedActionEdited()} or
+{@code onGuidedActionEditedAndProceed()} to get the modified date value the user entered.
+</li>
+<li>
+Add an action that uses subactions to let the user pick from an extended list of
+choices. Subactions are described in <a href="#subactions">Add subactions</a>.
+</li>
+<li>
+Add a button action that appears to the right of the actions list and is easily
+accessible. Button actions are described in <a href="#buttonactions">Add button
+actions</a>.</li>
</ul>
<p>
-You can also add a visual indicator that indicates selecting the action leads to a new step by
-setting
+You can also add a visual indicator&mdash;to indicate that selecting the action
+leads to a new step&mdash;by setting
{@link android.support.v17.leanback.widget.GuidedAction#hasNext hasNext(true)}.
-See {@link android.support.v17.leanback.widget.GuidedAction} for all the different attributes
-you can set.
+For all the different attributes that you can set, see
+{@link android.support.v17.leanback.widget.GuidedAction}.
</p>
<p>
@@ -162,6 +184,111 @@ onGuidedActionClicked()} and process the passed-in
examining {@link android.support.v17.leanback.widget.GuidedAction#getId GuidedAction.getId()}.
</p>
+<h3 id="subactions">Add subactions</h3>
+
+<p>
+Some actions might require giving the user an additional set of choices. A
+{@link android.support.v17.leanback.widget.GuidedAction} can specify a list of
+subactions that get displayed as a drop-down list of child actions.
+</p>
+
+<img src="{@docRoot}images/training/tv/playback/guided-step-subaction.png"
+srcset="{@docRoot}images/training/tv/playback/guided-step-subaction.png 1x,
+{@docRoot}images/training/tv/playback/guided-step-subaction-2x.png 2x" />
+<p class="img-caption"><strong>Figure 2.</strong> Guided step subactions.</p>
+
+<p>
+The subaction list can contain regular actions or radio button actions, but
+not date-picker or editable text actions. Also, a subaction cannot have its own
+set of subactions as the system does not support more than one level of subactions.
+Deeply nested sets of actions create a poor user experience.
+</p>
+
+<p>
+To add subactions, first create and populate a list of
+{@link android.support.v17.leanback.widget.GuidedAction GuidedActions} that will
+act as subactions:
+</p>
+
+<pre>
+List&lt;GuidedAction&gt; subActions = new ArrayList&lt;GuidedAction&gt;();
+subActions.add(new GuidedAction.Builder()
+ .id(SUBACTION1)
+ .title(getString(R.string.guidedstep_subaction1_title))
+ .description(getString(R.string.guidedstep_subaction1_desc))
+ .build());
+...
+</pre>
+
+<p>
+In {@link android.support.v17.leanback.app.GuidedStepFragment#onCreateActions
+onCreateActions()}, create a top-level
+{@link android.support.v17.leanback.widget.GuidedAction} that will display the
+list of subactions when selected:
+</p>
+
+<pre>
+&#64;Override
+public void onCreateActions(List&lt;GuidedAction&gt; actions, Bundle savedInstanceState) {
+...
+ actions.add(new GuidedAction.Builder()
+ .id(SUBACTIONS)
+ .title(getString(R.string.guidedstep_subactions_title))
+ .description(getString(R.string.guidedstep_subactions_desc))
+ <b>.subActions(subActions)</b>
+ .build());
+...
+}
+</pre>
+
+<p>
+Finally, respond to subaction selections by overriding
+{@code onSubGuidedActionClicked()}:
+</p>
+
+<pre>
+&#64;Override
+public boolean onSubGuidedActionClicked(GuidedAction action) {
+ // Check for which action was clicked, and handle as needed
+ if (action.getId() == SUBACTION1) {
+ // Subaction 1 selected
+ }
+ // Return true to collapse the subactions drop-down list, or
+ // false to keep the drop-down list expanded.
+ return true;
+}
+</pre>
+
+<h3 id="buttonactions">Add button actions</h3>
+
+<p>
+If your guided step has a large list of actions, users may have to scroll through the list
+to access the most commonly used actions. Use button actions to separate
+commonly used actions from the action list. Button actions appear to the right
+of the action list and are easy to navigate to.
+</p>
+
+<img src="{@docRoot}images/training/tv/playback/guided-step-buttonaction.png"
+srcset="{@docRoot}images/training/tv/playback/guided-step-buttonaction.png 1x,
+{@docRoot}images/training/tv/playback/guided-step-buttonaction-2x.png 2x" />
+<p class="img-caption"><strong>Figure 3.</strong> Guided step button actions.</p>
+
+<p>
+Button actions are created and handled just like regular actions, but you create
+button actions in
+{@code onCreateButtonActions()} instead of
+{@link android.support.v17.leanback.app.GuidedStepFragment#onCreateActions
+onCreateActions()}. Respond to button actions in
+{@link android.support.v17.leanback.app.GuidedStepFragment#onGuidedActionClicked
+onGuidedActionClicked()}.
+</p>
+
+<p>
+Use button actions for simple actions, such as navigation actions between steps.
+Don't use the date-picker action or other editable actions as button actions.
+Also, button actions cannot have subactions.
+</p>
+
<h2 id="sequence">Group Guided Steps Into a Guided Sequence</h2>
<p>
@@ -188,6 +315,20 @@ If the user presses the Back button on the TV remote, the device shows the previ
decide to provide your own {@link android.support.v17.leanback.widget.GuidedAction} that
returns to the previous step, you can implement the Back behavior by calling
{@link android.app.FragmentManager#popBackStack getFragmentManager().popBackStack()}.
+If you need to return the user to an even earlier step in the sequence, use
+{@code popBackStackToGuidedStepFragment()} to return to a specific
+{@link android.support.v17.leanback.app.GuidedStepFragment} in the fragment stack.
+</p>
+
+<p>
+When the user has finished the last step in the sequence, use
+{@code finishGuidedStepFragments()} to remove all
+{@link android.support.v17.leanback.app.GuidedStepFragment GuidedStepFragments}
+from the current stack and return to the original parent activity. If the
+first {@link android.support.v17.leanback.app.GuidedStepFragment} was added
+using {@link android.support.v17.leanback.app.GuidedStepFragment#addAsRoot
+addAsRoot()}, calling
+{@code finishGuidedStepFragments()} will also close the parent activity.
</p>
<h2 id="presentation">Customize Step Presentation</h2>
@@ -220,11 +361,11 @@ add the
{@link android.support.v17.leanback.R.styleable#LeanbackGuidedStepTheme_guidedStepTheme}
attribute to your existing custom activity theme. This attribute points to the custom theme that
only the {@link android.support.v17.leanback.app.GuidedStepFragment} objects in your
-activity will use.
+activity use.
</li>
<li>
If you use {@link android.support.v17.leanback.app.GuidedStepFragment} objects in different
-activities that are part of the same overall multi-step task, and want to use a consistent
+activities that are part of the same overall multi-step task and want to use a consistent
visual theme across all steps, override
{@link android.support.v17.leanback.app.GuidedStepFragment#onProvideTheme
GuidedStepFragment.onProvideTheme()} and return your custom theme.
diff --git a/docs/html/wear/preview/api-overview.jd b/docs/html/wear/preview/api-overview.jd
index 384cb0a416ce..543313af1a39 100644
--- a/docs/html/wear/preview/api-overview.jd
+++ b/docs/html/wear/preview/api-overview.jd
@@ -147,7 +147,7 @@ see <a href="{@docRoot}wear/preview/features/complications.html">
<p> If you have a chat messaging app, your notifications should use
{@code Notification.MessagingStyle}, which is new in Android 6.0. Wear 2.0 uses
the chat messages included in a
-<a href="{docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a>
+<a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a>
notification
(see {@code addMessage()}) to provide a rich chat app-like experience in the
expanded notification.
diff --git a/docs/html/wear/preview/features/notifications.jd b/docs/html/wear/preview/features/notifications.jd
index 0962eb4b5f82..c84a47002f9d 100644
--- a/docs/html/wear/preview/features/notifications.jd
+++ b/docs/html/wear/preview/features/notifications.jd
@@ -41,7 +41,7 @@ material design</a> visual changes.
</p>
<p><img src="{@docRoot}wear/preview/images/comparison_diagram.png" /> </p>
-<p><b>Figure 1.</b> Comparison of the same notification in Android Wear 1.x and 2.0.</p>
+<p><b>Figure 1.</b> Comparison of the same notification in Android Wear 1.x and 2.0.</p>
<p>Some of the visual updates include:</p>
<ul>
@@ -73,7 +73,7 @@ material design</a> visual changes.
<li><strong>Updated horizontal swipe gesture on a notification</strong>:
To dismiss a notification in Wear 2.0, the user swipes horizontally in either
- direction. So if your notification instructs the user to swipe left or right,
+ direction. So if your notification instructs the user to swipe left or right,
you must update the text of your notification.
</li>
</ul>
@@ -82,13 +82,14 @@ material design</a> visual changes.
substantial additional content and actions for each notification.
</p>
<p>When you <a href="{@docRoot}training/wearables/notifications/pages.html">specify additional content pages</a>
- and actions for a notification, those are available to the user within the
- expanded notification. Each expanded notification follows
+ and actions for a notification, those are available to the user within the
+ expanded notification. Each expanded notification follows
<a href="http://www.google.com/design/spec-wear">Material Design for Android Wear</a>,
so the user gets an app-like experience.
</p>
-<p><img src="{@docRoot}wear/preview/images/expanded_diagram.png" /> </p>
-<p><b>Figure 2</b>. An expanded notification with content and actions.</p>
+
+
+<h3 id="expanded">Expanded notifications</h3>
<p>If the first action in the expanded notification has a
<a href=" {@docRoot}reference/android/support/v4/app/RemoteInput.html">{@code RemoteInput}</a>
(e.g., a Reply action), then the choices you set with <a href="http://developer.android.com/reference/android/support/v4/app/RemoteInput.Builder.html#setChoices(java.lang.CharSequence[])">{@code setChoices()}</a>
@@ -102,7 +103,7 @@ material design</a> visual changes.
<li>The notification is generated by an app on the paired phone and
bridged to Wear.
</li>
- <li>The notification does not have a
+ <li>The notification does not have a
<a href="http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setContentIntent(android.app.PendingIntent)">{@code contentIntent}</a>.
</li>
</ul>
@@ -126,9 +127,11 @@ material design</a> visual changes.
<p>
Expanded Notifications allow you to include additional content and actions
for a notification. You choose the level of detail that your app's notifications
- will provide; however be judicious with the amount of detail you include in a
- notification.
+ will provide; however be judicious with the amount of detail you include in a
+ notification.
</p>
+<img src="{@docRoot}wear/preview/images/expanded_diagram.png" height="340"
+ style="float:left;margin:10px 20px 0 0" />
<h4>Adding additional content</h4>
To show additional content in your expanded notification, see <a href="{@docRoot}training/wearables/notifications/pages.html">Adding Pages to a Notification</a>.</p>
<p>Additional content pages are stacked vertically in the expanded notification
@@ -151,34 +154,36 @@ action in the notification unless a different action is specified using
<p>If you have a chat messaging app, your notifications should use
<a href="{@docRoot}preview/features/notification-updates.html#style">{@code Notification.MessagingStyle}</a>,
- which is new in Android 6.0. Wear 2.0 uses the chat messages included
+ which is new in Android N. Wear 2.0 uses the chat messages included
in a <a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a> notification
+
(see <a href="{@docRoot}preview/features/notification-updates.html#style">{@code addMessage()}</a>) to provide
a rich chat app-like experience in the expanded notification.
</p>
-<p class="note">Note: <a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a>
+
+<p class="note">Note: <a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a>
expanded notifications require that you have at least version 1.5.0.2861804 of the
<a href="https://play.google.com/store/apps/details?id=com.google.android.wearable.app">Android Wear app</a>
on your paired Android phone. That version will be available within the next
few weeks in the Play Store.
</p>
+
<h3 id="smart-reply">Smart Reply</h3>
-<p>Wear 2.0 also introduces <i>Smart Reply</i> for <a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a> notifications.
+<img src="{@docRoot}wear/preview/images/messaging_style.png" height="420"
+ style="float:right;margin:10px 20px 0 0" />
+<p>Wear 2.0 also introduces <i>Smart Reply</i>
+for <a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a> notifications.
Smart Reply provides the user with contextually relevant, touchable choices in
the expanded notification and in {@code RemoteInput}. These augment the fixed
- list of choices that the developer provides in
+ list of choices that the developer provides in
<a href="http://developer.android.com/reference/android/support/v4/app/RemoteInput.html">{@code RemoteInput}</a>
- using the
+ using the
<a href="{@docRoot}reference/android/support/v4/app/RemoteInput.Builder.html#setChoices(java.lang.CharSequence[])">{@code setChoices()}</a> method.
</p>
<p>By enabling Smart Reply for your MessagingStyle notifications,
you provide users with a fast (single tap), discreet (no speaking aloud), and
reliable way to respond to chat messages.
</p>
-<p><img src="{@docRoot}wear/preview/images/messaging_style.png" /></p>
-<p><b>Figure 3</b>. The expanded notification includes contextually relevant
- Smart Reply responses below the primary action.
-</p>
<p>Responses generated by Smart Reply are shown in addition to those set using the
<a href="{@docRoot}reference/android/support/v4/app/RemoteInput.Builder.html#setChoices(java.lang.CharSequence[])">{@code setChoices()}</a> method.
@@ -189,9 +194,10 @@ following:
<ol>
<li>Use <a href="{@docRoot}preview/features/notification-updates.html#style">{@code Notification.MessagingStyle}</a>.
</li>
- <li>Call the method
- <a href="{@docRoot}wear/preview/start.html#get_the_preview_reference_documentation">{@code setAllowGeneratedReplies()}</a>
- for the notification action.</li>
+ <li>Call the method {@code setAllowGeneratedReplies()} for the notification action.
+ For more information, see the downloadable
+ <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API reference</a>.
+ </li>
<li>Ensure that the notification action has a
<a href="{@docRoot}reference/android/app/RemoteInput.html">{@code RemoteInput}</a>
(where the responses will reside).
@@ -222,8 +228,9 @@ Notification noti = new NotificationCompat.Builder()
.setSmallIcon(R.drawable.new_message)
.setLargeIcon(aBitmap)
// 2) set the style to MessagingStyle
- .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)).addMessage(messages[0].getText(), messages[0].getTime(), messages[0].getSender())
- .addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getSender()))
+ .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name))
+ .addMessage(messages[0].getText(), messages[0].getTime(), messages[0].getSender())
+ .addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getSender()))
// 3) add an action with RemoteInput
diff --git a/docs/html/wear/preview/images/comparison_diagram.png b/docs/html/wear/preview/images/comparison_diagram.png
index 7dbf65f2a216..4bcf10e9aeda 100644
--- a/docs/html/wear/preview/images/comparison_diagram.png
+++ b/docs/html/wear/preview/images/comparison_diagram.png
Binary files differ
diff --git a/docs/html/wear/preview/images/messaging_style.png b/docs/html/wear/preview/images/messaging_style.png
index 966e524c6db5..a3bf109aa15f 100644
--- a/docs/html/wear/preview/images/messaging_style.png
+++ b/docs/html/wear/preview/images/messaging_style.png
Binary files differ
diff --git a/docs/html/wear/preview/images/messaging_style_diagram.png b/docs/html/wear/preview/images/messaging_style_diagram.png
deleted file mode 100644
index 3b21c79730bc..000000000000
--- a/docs/html/wear/preview/images/messaging_style_diagram.png
+++ /dev/null
Binary files differ
diff --git a/libs/hwui/BakedOpDispatcher.cpp b/libs/hwui/BakedOpDispatcher.cpp
index 59c106578cf3..8b3f1722dddf 100644
--- a/libs/hwui/BakedOpDispatcher.cpp
+++ b/libs/hwui/BakedOpDispatcher.cpp
@@ -805,27 +805,21 @@ void BakedOpDispatcher::onLayerOp(BakedOpRenderer& renderer, const LayerOp& op,
// Note that we don't use op->paint in this function - it's never set on a LayerOp
OffscreenBuffer* buffer = *op.layerHandle;
- if (CC_UNLIKELY(!buffer)) {
- // Layer was not allocated, which can occur if there were no draw ops inside. We draw the
- // equivalent by drawing a rect with the same layer properties (alpha/xfer/filter).
- int color = SkColorSetA(SK_ColorTRANSPARENT, op.alpha * 255);
- renderRectForLayer(renderer, op, state,
- color, op.mode, op.colorFilter);
- } else {
- float layerAlpha = op.alpha * state.alpha;
- Glop glop;
- GlopBuilder(renderer.renderState(), renderer.caches(), &glop)
- .setRoundRectClipState(state.roundRectClipState)
- .setMeshTexturedIndexedVbo(buffer->vbo, buffer->elementCount)
- .setFillLayer(buffer->texture, op.colorFilter, layerAlpha, op.mode, Blend::ModeOrderSwap::NoSwap)
- .setTransform(state.computedState.transform, TransformFlags::None)
- .setModelViewOffsetRectSnap(op.unmappedBounds.left, op.unmappedBounds.top,
- Rect(op.unmappedBounds.getWidth(), op.unmappedBounds.getHeight()))
- .build();
- renderer.renderGlop(state, glop);
- }
+ if (CC_UNLIKELY(!buffer)) return;
+
+ float layerAlpha = op.alpha * state.alpha;
+ Glop glop;
+ GlopBuilder(renderer.renderState(), renderer.caches(), &glop)
+ .setRoundRectClipState(state.roundRectClipState)
+ .setMeshTexturedIndexedVbo(buffer->vbo, buffer->elementCount)
+ .setFillLayer(buffer->texture, op.colorFilter, layerAlpha, op.mode, Blend::ModeOrderSwap::NoSwap)
+ .setTransform(state.computedState.transform, TransformFlags::None)
+ .setModelViewOffsetRectSnap(op.unmappedBounds.left, op.unmappedBounds.top,
+ Rect(op.unmappedBounds.getWidth(), op.unmappedBounds.getHeight()))
+ .build();
+ renderer.renderGlop(state, glop);
- if (buffer && !buffer->hasRenderedSinceRepaint) {
+ if (!buffer->hasRenderedSinceRepaint) {
buffer->hasRenderedSinceRepaint = true;
if (CC_UNLIKELY(Properties::debugLayersUpdates)) {
// render debug layer highlight
diff --git a/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp b/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp
index 01d3d7066ae3..6b7b721eaec6 100644
--- a/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp
+++ b/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp
@@ -53,7 +53,7 @@ private:
typedef void (*TestBakedOpReceiver)(BakedOpRenderer&, const BakedOpState&);
static void testUnmergedGlopDispatch(renderthread::RenderThread& renderThread, RecordedOp* op,
- std::function<void(const Glop& glop)> glopVerifier) {
+ std::function<void(const Glop& glop)> glopVerifier, int expectedGlopCount = 1) {
// Create op, and wrap with basic state.
LinearAllocator allocator;
auto snapshot = TestUtils::makeSnapshot(Matrix4::identity(), Rect(100, 100));
@@ -61,8 +61,8 @@ static void testUnmergedGlopDispatch(renderthread::RenderThread& renderThread, R
ASSERT_NE(nullptr, state);
int glopCount = 0;
- auto glopReceiver = [&glopVerifier, &glopCount] (const Glop& glop) {
- ASSERT_EQ(glopCount++, 0) << "Only one Glop expected";
+ auto glopReceiver = [&glopVerifier, &glopCount, &expectedGlopCount] (const Glop& glop) {
+ ASSERT_LE(glopCount++, expectedGlopCount) << expectedGlopCount << "glop(s) expected";
glopVerifier(glop);
};
ValidatingBakedOpRenderer renderer(renderThread.renderState(), glopReceiver);
@@ -75,7 +75,8 @@ static void testUnmergedGlopDispatch(renderthread::RenderThread& renderThread, R
static TestBakedOpReceiver unmergedReceivers[] = BUILD_RENDERABLE_OP_LUT(X);
#undef X
unmergedReceivers[op->opId](renderer, *state);
- ASSERT_EQ(1, glopCount) << "Exactly one Glop expected";
+ ASSERT_EQ(expectedGlopCount, glopCount) << "Exactly " << expectedGlopCount
+ << "Glop(s) expected";
}
RENDERTHREAD_TEST(BakedOpDispatcher, pathTexture_positionOvalArc) {
@@ -119,12 +120,8 @@ RENDERTHREAD_TEST(BakedOpDispatcher, onLayerOp_bufferless) {
OffscreenBuffer* buffer = nullptr; // no providing a buffer, should hit rect fallback case
LayerOp op(Rect(10, 10), Matrix4::identity(), nullptr, &layerPaint, &buffer);
testUnmergedGlopDispatch(renderThread, &op, [&renderThread] (const Glop& glop) {
- // rect glop is dispatched with paint props applied
- EXPECT_EQ(renderThread.renderState().meshState().getUnitQuadVBO(),
- glop.mesh.vertices.bufferObject) << "Unit quad should be drawn";
- EXPECT_EQ(nullptr, glop.fill.texture.texture) << "Should be no texture when layer is null";
- EXPECT_FLOAT_EQ(128 / 255.0f, glop.fill.color.a) << "Rect quad should use op alpha";
- });
+ ADD_FAILURE() << "Nothing should happen";
+ }, 0);
}
static int getGlopTransformFlags(renderthread::RenderThread& renderThread, RecordedOp* op) {
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index 349d67ec9145..70029a3dad10 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -591,7 +591,12 @@ public final class MediaCodecInfo {
}
}
levelCaps = createFromProfileLevel(mMime, profile, maxLevel);
- if (levelCaps != null && !levelCaps.isFormatSupported(format)) {
+ // remove profile from this format otherwise levelCaps.isFormatSupported will
+ // get into this same conditon and loop forever.
+ Map<String, Object> mapWithoutProfile = new HashMap<>(map);
+ mapWithoutProfile.remove(MediaFormat.KEY_PROFILE);
+ MediaFormat formatWithoutProfile = new MediaFormat(mapWithoutProfile);
+ if (levelCaps != null && !levelCaps.isFormatSupported(formatWithoutProfile)) {
return false;
}
}
@@ -745,6 +750,9 @@ public final class MediaCodecInfo {
* Retrieve the codec capabilities for a certain {@code mime type}, {@code
* profile} and {@code level}. If the type, or profile-level combination
* is not understood by the framework, it returns null.
+ * <p class=note> In {@link android.os.Build.VERSION_CODES#M}, calling this
+ * method without calling any method of the {@link MediaCodecList} class beforehand
+ * results in a {@link NullPointerException}.</p>
*/
public static CodecCapabilities createFromProfileLevel(
String mime, int profile, int level) {
diff --git a/media/java/android/media/MediaCodecList.java b/media/java/android/media/MediaCodecList.java
index cd7b3d35a590..42ce5110f134 100644
--- a/media/java/android/media/MediaCodecList.java
+++ b/media/java/android/media/MediaCodecList.java
@@ -63,6 +63,11 @@ final public class MediaCodecList {
}
/* package private */ static final Map<String, Object> getGlobalSettings() {
+ synchronized (sInitLock) {
+ if (sGlobalSettings == null) {
+ sGlobalSettings = native_getGlobalSettings();
+ }
+ }
return sGlobalSettings;
}
@@ -74,7 +79,6 @@ final public class MediaCodecList {
private static final void initCodecList() {
synchronized (sInitLock) {
if (sRegularCodecInfos == null) {
- sGlobalSettings = native_getGlobalSettings();
int count = native_getCodecCount();
ArrayList<MediaCodecInfo> regulars = new ArrayList<MediaCodecInfo>();
ArrayList<MediaCodecInfo> all = new ArrayList<MediaCodecInfo>();
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index cee7d60a9f36..3f6081bf183d 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -2276,6 +2276,8 @@ public class MediaPlayer extends PlayerBase
Log.w(TAG, "addSubtitleSource called with null InputStream");
}
+ getMediaTimeProvider();
+
// process each subtitle in its own thread
final HandlerThread thread = new HandlerThread("SubtitleReadThread",
Process.THREAD_PRIORITY_BACKGROUND + Process.THREAD_PRIORITY_MORE_FAVORABLE);
@@ -2302,7 +2304,12 @@ public class MediaPlayer extends PlayerBase
synchronized (mIndexTrackPairs) {
mIndexTrackPairs.add(Pair.<Integer, SubtitleTrack>create(null, track));
}
- track.onData(contents.getBytes(), true /* eos */, ~0 /* runID: keep forever */);
+ Handler h = mTimeProvider.mEventHandler;
+ int what = TimeProvider.NOTIFY;
+ int arg1 = TimeProvider.NOTIFY_TRACK_DATA;
+ Pair<SubtitleTrack, byte[]> trackData = Pair.create(track, contents.getBytes());
+ Message m = h.obtainMessage(what, arg1, 0, trackData);
+ h.sendMessage(m);
return MEDIA_INFO_EXTERNAL_METADATA_UPDATE;
}
@@ -2501,6 +2508,8 @@ public class MediaPlayer extends PlayerBase
mIndexTrackPairs.add(Pair.<Integer, SubtitleTrack>create(null, track));
}
+ getMediaTimeProvider();
+
final FileDescriptor fd3 = fd2;
final long offset2 = offset;
final long length2 = length;
@@ -2526,7 +2535,12 @@ public class MediaPlayer extends PlayerBase
total += bytes;
}
}
- track.onData(bos.toByteArray(), true /* eos */, ~0 /* runID: keep forever */);
+ Handler h = mTimeProvider.mEventHandler;
+ int what = TimeProvider.NOTIFY;
+ int arg1 = TimeProvider.NOTIFY_TRACK_DATA;
+ Pair<SubtitleTrack, byte[]> trackData = Pair.create(track, bos.toByteArray());
+ Message m = h.obtainMessage(what, arg1, 0, trackData);
+ h.sendMessage(m);
return MEDIA_INFO_EXTERNAL_METADATA_UPDATE;
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
@@ -3528,6 +3542,7 @@ public class MediaPlayer extends PlayerBase
private static final int REFRESH_AND_NOTIFY_TIME = 1;
private static final int NOTIFY_STOP = 2;
private static final int NOTIFY_SEEK = 3;
+ private static final int NOTIFY_TRACK_DATA = 4;
private HandlerThread mHandlerThread;
/** @hide */
@@ -3667,6 +3682,12 @@ public class MediaPlayer extends PlayerBase
}
}
+ private synchronized void notifyTrackData(Pair<SubtitleTrack, byte[]> trackData) {
+ SubtitleTrack track = trackData.first;
+ byte[] data = trackData.second;
+ track.onData(data, true /* eos */, ~0 /* runID: keep forever */);
+ }
+
private synchronized void notifyStop() {
for (MediaTimeProvider.OnMediaTimeListener listener: mListeners) {
if (listener == null) {
@@ -3899,6 +3920,9 @@ public class MediaPlayer extends PlayerBase
case NOTIFY_SEEK:
notifySeek();
break;
+ case NOTIFY_TRACK_DATA:
+ notifyTrackData((Pair<SubtitleTrack, byte[]>)msg.obj);
+ break;
}
}
}
diff --git a/media/java/android/media/tv/TvContract.java b/media/java/android/media/tv/TvContract.java
index 3a3460bbca17..20706fd19aac 100644
--- a/media/java/android/media/tv/TvContract.java
+++ b/media/java/android/media/tv/TvContract.java
@@ -372,76 +372,175 @@ public final class TvContract {
/** The MIME type of a single TV channel. */
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/channel";
- /** A generic channel type. */
+ /**
+ * A generic channel type.
+ *
+ * Use this if the current channel is streaming-based or its broadcast system type does not
+ * fit under any other types. This is the default channel type.
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_OTHER = "TYPE_OTHER";
- /** The channel type for NTSC. */
+ /**
+ * The channel type for NTSC.
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_NTSC = "TYPE_NTSC";
- /** The channel type for PAL. */
+ /**
+ * The channel type for PAL.
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_PAL = "TYPE_PAL";
- /** The channel type for SECAM. */
+ /**
+ * The channel type for SECAM.
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_SECAM = "TYPE_SECAM";
- /** The channel type for DVB-T (terrestrial). */
+ /**
+ * The channel type for DVB-T (terrestrial).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_DVB_T = "TYPE_DVB_T";
- /** The channel type for DVB-T2 (terrestrial). */
+ /**
+ * The channel type for DVB-T2 (terrestrial).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_DVB_T2 = "TYPE_DVB_T2";
- /** The channel type for DVB-S (satellite). */
+ /**
+ * The channel type for DVB-S (satellite).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_DVB_S = "TYPE_DVB_S";
- /** The channel type for DVB-S2 (satellite). */
+ /**
+ * The channel type for DVB-S2 (satellite).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_DVB_S2 = "TYPE_DVB_S2";
- /** The channel type for DVB-C (cable). */
+ /**
+ * The channel type for DVB-C (cable).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_DVB_C = "TYPE_DVB_C";
- /** The channel type for DVB-C2 (cable). */
+ /**
+ * The channel type for DVB-C2 (cable).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_DVB_C2 = "TYPE_DVB_C2";
- /** The channel type for DVB-H (handheld). */
+ /**
+ * The channel type for DVB-H (handheld).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_DVB_H = "TYPE_DVB_H";
- /** The channel type for DVB-SH (satellite). */
+ /**
+ * The channel type for DVB-SH (satellite).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_DVB_SH = "TYPE_DVB_SH";
- /** The channel type for ATSC (terrestrial). */
+ /**
+ * The channel type for ATSC (terrestrial).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_ATSC_T = "TYPE_ATSC_T";
- /** The channel type for ATSC (cable). */
+ /**
+ * The channel type for ATSC (cable).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_ATSC_C = "TYPE_ATSC_C";
- /** The channel type for ATSC-M/H (mobile/handheld). */
+ /**
+ * The channel type for ATSC-M/H (mobile/handheld).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_ATSC_M_H = "TYPE_ATSC_M_H";
- /** The channel type for ISDB-T (terrestrial). */
+ /**
+ * The channel type for ISDB-T (terrestrial).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_ISDB_T = "TYPE_ISDB_T";
- /** The channel type for ISDB-Tb (Brazil). */
+ /**
+ * The channel type for ISDB-Tb (Brazil).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_ISDB_TB = "TYPE_ISDB_TB";
- /** The channel type for ISDB-S (satellite). */
+ /**
+ * The channel type for ISDB-S (satellite).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_ISDB_S = "TYPE_ISDB_S";
- /** The channel type for ISDB-C (cable). */
+ /**
+ * The channel type for ISDB-C (cable).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_ISDB_C = "TYPE_ISDB_C";
- /** The channel type for 1seg (handheld). */
+ /**
+ * The channel type for 1seg (handheld).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_1SEG = "TYPE_1SEG";
- /** The channel type for DTMB (terrestrial). */
+ /**
+ * The channel type for DTMB (terrestrial).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_DTMB = "TYPE_DTMB";
- /** The channel type for CMMB (handheld). */
+ /**
+ * The channel type for CMMB (handheld).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_CMMB = "TYPE_CMMB";
- /** The channel type for T-DMB (terrestrial). */
+ /**
+ * The channel type for T-DMB (terrestrial).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_T_DMB = "TYPE_T_DMB";
- /** The channel type for S-DMB (satellite). */
+ /**
+ * The channel type for S-DMB (satellite).
+ *
+ * @see #COLUMN_TYPE
+ */
public static final String TYPE_S_DMB = "TYPE_S_DMB";
/** A generic service type. */
@@ -540,16 +639,35 @@ public final class TvContract {
public static final String COLUMN_INPUT_ID = "input_id";
/**
- * The predefined type of this TV channel.
- *
- * <p>This is primarily used to indicate which broadcast standard (e.g. ATSC, DVB or ISDB)
- * the current channel conforms to. The value should match to one of the followings:
- * {@link #TYPE_OTHER}, {@link #TYPE_DVB_T}, {@link #TYPE_DVB_T2}, {@link #TYPE_DVB_S},
- * {@link #TYPE_DVB_S2}, {@link #TYPE_DVB_C}, {@link #TYPE_DVB_C2}, {@link #TYPE_DVB_H},
- * {@link #TYPE_DVB_SH}, {@link #TYPE_ATSC_T}, {@link #TYPE_ATSC_C},
- * {@link #TYPE_ATSC_M_H}, {@link #TYPE_ISDB_T}, {@link #TYPE_ISDB_TB},
- * {@link #TYPE_ISDB_S}, {@link #TYPE_ISDB_C}, {@link #TYPE_1SEG}, {@link #TYPE_DTMB},
- * {@link #TYPE_CMMB}, {@link #TYPE_T_DMB}, {@link #TYPE_S_DMB}
+ * The broadcast system type of this TV channel.
+ *
+ * <p>This is used to indicate the broadcast standard (e.g. ATSC, DVB or ISDB) the current
+ * channel conforms to. Use {@link #TYPE_OTHER} for streaming-based channels, which is the
+ * default channel type. The value should match to one of the followings:
+ * {@link #TYPE_1SEG},
+ * {@link #TYPE_ATSC_C},
+ * {@link #TYPE_ATSC_M_H},
+ * {@link #TYPE_ATSC_T},
+ * {@link #TYPE_CMMB},
+ * {@link #TYPE_DTMB},
+ * {@link #TYPE_DVB_C},
+ * {@link #TYPE_DVB_C2},
+ * {@link #TYPE_DVB_H},
+ * {@link #TYPE_DVB_S},
+ * {@link #TYPE_DVB_S2},
+ * {@link #TYPE_DVB_SH},
+ * {@link #TYPE_DVB_T},
+ * {@link #TYPE_DVB_T2},
+ * {@link #TYPE_ISDB_C},
+ * {@link #TYPE_ISDB_S},
+ * {@link #TYPE_ISDB_T},
+ * {@link #TYPE_ISDB_TB},
+ * {@link #TYPE_NTSC},
+ * {@link #TYPE_OTHER},
+ * {@link #TYPE_PAL},
+ * {@link #TYPE_SECAM},
+ * {@link #TYPE_S_DMB}, and
+ * {@link #TYPE_T_DMB}.
*
* <p>This is a required field.
*
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
index 57c14e98727c..b82f8dd3d7a3 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
@@ -86,17 +86,26 @@ public class FilesActivity extends BaseActivity {
if (mState.restored) {
if (DEBUG) Log.d(TAG, "Stack already resolved for uri: " + intent.getData());
} else if (!mState.stack.isEmpty()) {
- // If a non-empty stack is present in our state it was read (presumably)
+ // If a non-empty stack is present in our state, it was read (presumably)
// from EXTRA_STACK intent extra. In this case, we'll skip other means of
- // loading or restoring the stack.
+ // loading or restoring the stack (like URI).
//
- // When restoring from a stack, if a URI is present, it should only ever
- // be a launch URI, or a fake Uri from notifications.
- // Launch URIs support sensible activity management, but don't specify a real
- // content target.
- if (DEBUG) Log.d(TAG, "Launching with non-empty stack.");
- assert(uri == null || uri.getAuthority() == null ||
- LauncherActivity.isLaunchUri(uri));
+ // When restoring from a stack, if a URI is present, it should only ever be:
+ // -- a launch URI: Launch URIs support sensible activity management,
+ // but don't specify a real content target)
+ // -- a fake Uri from notifications. These URIs have no authority (TODO: details).
+ //
+ // Any other URI is *sorta* unexpected...except when browsing an archive
+ // in downloads.
+ if(uri != null
+ && uri.getAuthority() != null
+ && !uri.equals(mState.stack.peek())
+ && !LauncherActivity.isLaunchUri(uri)) {
+ if (DEBUG) Log.w(TAG,
+ "Launching with non-empty stack. Ignoring unexpected uri: " + uri);
+ } else {
+ if (DEBUG) Log.d(TAG, "Launching with non-empty stack.");
+ }
refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
assert(uri != null);
diff --git a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
index 40c11cfcffc1..8d411453b5ae 100644
--- a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
+++ b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
@@ -16,15 +16,18 @@
package com.android.keyguard;
+import android.app.ActivityManagerNative;
import android.app.ActivityOptions;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.PowerManager;
+import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
import android.telecom.TelecomManager;
import android.util.AttributeSet;
+import android.util.Slog;
import android.view.View;
import android.widget.Button;
@@ -47,6 +50,8 @@ public class EmergencyButton extends Button {
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ private static final String LOG_TAG = "EmergencyButton";
+
KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
@Override
@@ -122,6 +127,11 @@ public class EmergencyButton extends Button {
// TODO: implement a shorter timeout once new PowerManager API is ready.
// should be the equivalent to the old userActivity(EMERGENCY_CALL_TIMEOUT)
mPowerManager.userActivity(SystemClock.uptimeMillis(), true);
+ try {
+ ActivityManagerNative.getDefault().stopSystemLockTaskMode();
+ } catch (RemoteException e) {
+ Slog.w(LOG_TAG, "Failed to stop app pinning");
+ }
if (isInCall()) {
resumeCall();
if (mEmergencyButtonCallback != null) {
diff --git a/packages/PrintSpooler/res/layout/print_activity_controls.xml b/packages/PrintSpooler/res/layout/print_activity_controls.xml
index 248d0c05934a..69d4f914a453 100644
--- a/packages/PrintSpooler/res/layout/print_activity_controls.xml
+++ b/packages/PrintSpooler/res/layout/print_activity_controls.xml
@@ -239,7 +239,7 @@
android:singleLine="true"
android:ellipsize="end"
android:visibility="visible"
- android:inputType="number"
+ android:inputType="textNoSuggestions"
android:digits="0123456789 ,-">
</com.android.printspooler.widget.CustomErrorEditText>
diff --git a/packages/SettingsLib/res/values-be-rBY/strings.xml b/packages/SettingsLib/res/values-be-rBY/strings.xml
index 1acd3b43c1b2..9bc9b7b613b1 100644
--- a/packages/SettingsLib/res/values-be-rBY/strings.xml
+++ b/packages/SettingsLib/res/values-be-rBY/strings.xml
@@ -242,7 +242,7 @@
<string name="transition_animation_scale_title" msgid="387527540523595875">"Маштаб перадачы анімацыі"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Шкала працягласці анiматара"</string>
<string name="overlay_display_devices_title" msgid="5364176287998398539">"Мадэляванне другасных дысплеяў"</string>
- <string name="debug_applications_category" msgid="4206913653849771549">"Прыкладаннi"</string>
+ <string name="debug_applications_category" msgid="4206913653849771549">"Праграмы"</string>
<string name="immediately_destroy_activities" msgid="1579659389568133959">"Не захоўваць дзеянні"</string>
<string name="immediately_destroy_activities_summary" msgid="3592221124808773368">"Знішч. кож.дзеянне, як толькі карыст.пакідае яго"</string>
<string name="app_process_limit_title" msgid="4280600650253107163">"Ліміт фонавага працэсу"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 4df39d2e4f9a..8f8d7a6623d7 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -237,7 +237,7 @@
<string name="force_msaa" msgid="7920323238677284387">"Tving 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"Aktivér 4x MSAA i apps med OpenGL ES 2.0"</string>
<string name="show_non_rect_clip" msgid="505954950474595172">"Fejlfind på ikke-rektangulære klippehandlinger"</string>
- <string name="track_frame_time" msgid="6146354853663863443">"GPU-gengivelse for profil"</string>
+ <string name="track_frame_time" msgid="6146354853663863443">"GPU-profilgengivelse"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Animationsskala for vindue"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Overgangsanimationsskala"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animatorvarighedsskala"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 148065efc288..974af2c1576e 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -282,7 +282,7 @@
<string name="select_webview_provider_toast_text" msgid="5466970498308266359">"Taj izbor više nije važeći. Pokušajte ponovo."</string>
<string name="convert_to_file_encryption" msgid="3060156730651061223">"Pretvori u enkripciju datoteka"</string>
<string name="convert_to_file_encryption_enabled" msgid="2861258671151428346">"Pretvori…"</string>
- <string name="convert_to_file_encryption_done" msgid="7859766358000523953">"Enkripcija datoteka već je izvršena"</string>
+ <string name="convert_to_file_encryption_done" msgid="7859766358000523953">"Datoteke su već šifrirane"</string>
<string name="title_convert_fbe" msgid="1263622876196444453">"Pretvaranje u enkripciju datoteka"</string>
<string name="convert_to_fbe_warning" msgid="6139067817148865527">"Pretvorite podatkovnu particiju u enkripciju datoteka.\n Upozorenje! Time će se izbrisati svi vaši podaci.\n Značajka je u alfa verziji i možda neće funkcionirati pravilno.\n Pritisnite \"Izbriši i pretvori...\" da biste nastavili."</string>
<string name="button_convert_fbe" msgid="5152671181309826405">"Izbriši i pretvori…"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index d8af0d4d28c6..059a8bbf95eb 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -226,7 +226,7 @@
<string name="enable_opengl_traces_title" msgid="6790444011053219871">"OpenGL nyomon követése"</string>
<string name="usb_audio_disable_routing" msgid="8114498436003102671">"Hangátirányítás tiltása"</string>
<string name="usb_audio_disable_routing_summary" msgid="980282760277312264">"Hangátirányítás tiltása az USB-s hangeszközöknél"</string>
- <string name="debug_layout" msgid="5981361776594526155">"Elrendezéshatár mutatása"</string>
+ <string name="debug_layout" msgid="5981361776594526155">"Elrendezéshatárok"</string>
<string name="debug_layout_summary" msgid="2001775315258637682">"Kliphatárok, margók stb. megjelenítése."</string>
<string name="force_rtl_layout_all_locales" msgid="2259906643093138978">"Elrendezés jobbról balra"</string>
<string name="force_rtl_layout_all_locales_summary" msgid="9192797796616132534">"Elrendezés jobbról balra minden nyelvnél"</string>
@@ -237,7 +237,7 @@
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA kényszerítése"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"A 4x MSAA engedélyezése az OpenGL ES 2.0-nál"</string>
<string name="show_non_rect_clip" msgid="505954950474595172">"Nem négyzetes kivágási műveletek hibakeresése"</string>
- <string name="track_frame_time" msgid="6146354853663863443">"Profil GPU-renderelésről"</string>
+ <string name="track_frame_time" msgid="6146354853663863443">"GPU-renderelési profil"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"Ablakanimáció tempója"</string>
<string name="transition_animation_scale_title" msgid="387527540523595875">"Áttűnési animáció tempója"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"Animáció tempója"</string>
diff --git a/packages/SettingsLib/res/values-kn-rIN/strings.xml b/packages/SettingsLib/res/values-kn-rIN/strings.xml
index 170a928d745d..9b322c83bb1f 100644
--- a/packages/SettingsLib/res/values-kn-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-kn-rIN/strings.xml
@@ -166,7 +166,7 @@
<string name="wifi_display_certification" msgid="8611569543791307533">"ವೈರ್‌ಲೆಸ್ ಪ್ರದರ್ಶನ ಪ್ರಮಾಣೀಕರಣ"</string>
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi ವೆರ್ಬೋಸ್ ಲಾಗಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"ಸೆಲ್ಯುಲರ್‌ ಹಸ್ತಾಂತರಿಸಲು ಆಕ್ರಮಣಕಾರಿ Wi‑Fi"</string>
- <string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi-Fi ರೋಮ್ ಸ್ಕ್ಯಾನ್‌ಗಳನ್ನು ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ"</string>
+ <string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"ವೈ-ಫೈ ರೋಮ್ ಸ್ಕ್ಯಾನ್‌ಗಳನ್ನು ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"ಸೆಲ್ಯುಲರ್ ಡೇಟಾ ಯಾವಾಗಲೂ ಸಕ್ರಿಯ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ಸಂಪೂರ್ಣ ವಾಲ್ಯೂಮ್‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"ವೈರ್‌ಲೆಸ್‌‌‌ ಪ್ರದರ್ಶನ ಪ್ರಮಾಣೀಕರಣಕ್ಕಾಗಿ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸು"</string>
@@ -181,7 +181,7 @@
<string name="allow_mock_location_summary" msgid="317615105156345626">"ಅಣಕು ಸ್ಥಾನಗಳನ್ನು ಅನುಮತಿಸು"</string>
<string name="debug_view_attributes" msgid="6485448367803310384">"ವೀಕ್ಷಣೆ ಆಟ್ರಿಬ್ಯೂಟ್ ಪರಿಶೀಲನೆ"</string>
<string name="legacy_dhcp_client_summary" msgid="163383566317652040">"ಹೊಸ Android DHCP ಕ್ಲೈಂಟ್ ಬದಲಾಗಿ Lollipop ನಿಂದ DHCP ಕ್ಲೈಂಟ್ ಬಳಸಿ."</string>
- <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"Wi-Fi ಸಕ್ರಿಯವಾಗಿರುವಾಗಲೂ, ಯಾವಾಗಲೂ ಮೊಬೈಲ್‌ ಡೇಟಾ ಸಕ್ರಿಯವಾಗಿರಿಸಿ (ವೇಗವಾಗಿ ನೆಟ್‌ವರ್ಕ್‌ ಬದಲಾಯಿಸಲು)."</string>
+ <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"ವೈ-ಫೈ ಸಕ್ರಿಯವಾಗಿರುವಾಗಲೂ, ಯಾವಾಗಲೂ ಮೊಬೈಲ್‌ ಡೇಟಾ ಸಕ್ರಿಯವಾಗಿರಿಸಿ (ವೇಗವಾಗಿ ನೆಟ್‌ವರ್ಕ್‌ ಬದಲಾಯಿಸಲು)."</string>
<string name="adb_warning_title" msgid="6234463310896563253">"USB ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಅನುಮತಿಸುವುದೇ?"</string>
<string name="adb_warning_message" msgid="7316799925425402244">"USB ಡೀಬಗ್ ಮಾಡುವಿಕೆಯು ಅಭಿವೃದ್ಧಿ ಉದ್ದೇಶಗಳಿಗೆ ಮಾತ್ರ ಆಗಿದೆ. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಮತ್ತು ನಿಮ್ಮ ಸಾಧನದ ನಡುವೆ ಡೇಟಾವನ್ನು ನಕಲಿಸಲು, ಅಧಿಸೂಚನೆ ಇಲ್ಲದೆ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಮತ್ತು ಲಾಗ್ ಡೇಟಾ ಓದಲು ಅದನ್ನು ಬಳಸಿ."</string>
<string name="adb_keys_warning_message" msgid="5659849457135841625">"ನೀವು ಹಿಂದೆ ಅಧಿಕೃತಗೊಳಿಸಿದ ಎಲ್ಲ ಕಂಪ್ಯೂಟರ್‌ಗಳಿಂದ USB ಡೀಬಗ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ರದ್ದುಗೊಳಿಸುವುದೇ?"</string>
diff --git a/packages/SettingsLib/res/values-uz-rUZ/strings.xml b/packages/SettingsLib/res/values-uz-rUZ/strings.xml
index 7d41acb8b35c..13fdb05cc2d1 100644
--- a/packages/SettingsLib/res/values-uz-rUZ/strings.xml
+++ b/packages/SettingsLib/res/values-uz-rUZ/strings.xml
@@ -152,7 +152,7 @@
<string name="bugreport_in_power" msgid="7923901846375587241">"Xatoliklar hisoboti"</string>
<string name="bugreport_in_power_summary" msgid="1778455732762984579">"Menyuda xatoliklar hisobotini yuborish tugmasi ko‘rsatilsin"</string>
<string name="keep_screen_on" msgid="1146389631208760344">"Ekranning yoniq turishi"</string>
- <string name="keep_screen_on_summary" msgid="2173114350754293009">"Qurilmani quvvatlash vaqtida ekran doim yoniq turadi"</string>
+ <string name="keep_screen_on_summary" msgid="2173114350754293009">"Qurilma quvvat olayotganda ekran doim yoniq turadi"</string>
<string name="bt_hci_snoop_log" msgid="3340699311158865670">"Bluetooth HCI amallari translatsiyasi jurnali"</string>
<string name="bt_hci_snoop_log_summary" msgid="730247028210113851">"Barcha Bluetooth HCI paketlarini bitta faylga saqlash"</string>
<string name="oem_unlock_enable" msgid="6040763321967327691">"Zavod qulfini yechish"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java
index 8e43bffbbfdc..2265d4214af1 100644
--- a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java
@@ -701,8 +701,8 @@ public class RestrictedLockUtils {
if (userId != other.userId) {
return false;
}
- if ((component == null && other == null) ||
- (component != null && component.equals(other))) {
+ if ((component == null && other.component == null) ||
+ (component != null && component.equals(other.component))) {
return true;
}
return false;
diff --git a/packages/SystemUI/res/layout/keyguard_status_bar.xml b/packages/SystemUI/res/layout/keyguard_status_bar.xml
index b5f917a4e574..a2dfc0dd115d 100644
--- a/packages/SystemUI/res/layout/keyguard_status_bar.xml
+++ b/packages/SystemUI/res/layout/keyguard_status_bar.xml
@@ -27,7 +27,7 @@
<com.android.systemui.statusbar.phone.MultiUserSwitch android:id="@+id/multi_user_switch"
android:layout_width="@dimen/multi_user_switch_width_keyguard"
- android:layout_height="@dimen/status_bar_header_height_keyguard"
+ android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:background="@drawable/ripple_drawable"
android:layout_marginEnd="@dimen/multi_user_switch_keyguard_margin">
@@ -43,7 +43,7 @@
android:layout_height="@dimen/status_bar_header_height"
android:layout_toStartOf="@id/multi_user_switch"
android:layout_alignWithParentIfMissing="true"
- android:layout_marginStart="16dp"
+ android:layout_marginStart="@dimen/system_icons_super_container_margin_start"
android:paddingEnd="@dimen/system_icons_keyguard_padding_end">
<FrameLayout android:id="@+id/system_icons_container"
android:layout_width="wrap_content"
@@ -67,7 +67,7 @@
<com.android.keyguard.CarrierText
android:id="@+id/keyguard_carrier_text"
android:layout_width="match_parent"
- android:layout_height="@dimen/status_bar_header_height_keyguard"
+ android:layout_height="match_parent"
android:layout_marginStart="@dimen/keyguard_carrier_text_margin"
android:layout_toStartOf="@id/system_icons_super_container"
android:gravity="center_vertical"
diff --git a/packages/SystemUI/res/layout/zen_mode_button.xml b/packages/SystemUI/res/layout/zen_mode_button.xml
new file mode 100644
index 000000000000..f25131b6b360
--- /dev/null
+++ b/packages/SystemUI/res/layout/zen_mode_button.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 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.
+-->
+<RadioButton
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@android:id/checkbox"
+ android:layout_width="40dp"
+ android:layout_marginStart="7dp"
+ android:layout_marginEnd="4dp"
+ android:layout_height="48dp"
+ android:layout_alignParentStart="true"
+ android:gravity="center"
+ android:paddingTop="10dp"
+ android:paddingBottom="10dp">
+
+</RadioButton> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/zen_mode_condition.xml b/packages/SystemUI/res/layout/zen_mode_condition.xml
index 53f39083acd1..ca4f7278a5ae 100644
--- a/packages/SystemUI/res/layout/zen_mode_condition.xml
+++ b/packages/SystemUI/res/layout/zen_mode_condition.xml
@@ -18,18 +18,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
- android:layout_marginBottom="@dimen/zen_mode_condition_detail_item_spacing"
android:layout_marginStart="1dp"
- android:layout_marginEnd="0dp" >
-
- <RadioButton
- android:id="@android:id/checkbox"
- android:layout_width="40dp"
- android:layout_marginStart="7dp"
- android:layout_marginEnd="4dp"
- android:layout_height="48dp"
- android:layout_alignParentStart="true"
- android:gravity="center" />
+ android:layout_marginEnd="0dp"
+ android:layout_weight="1"
+ android:gravity="center_vertical" >
<LinearLayout
android:id="@android:id/content"
diff --git a/packages/SystemUI/res/layout/zen_mode_panel.xml b/packages/SystemUI/res/layout/zen_mode_panel.xml
index 43ab4bb4e1db..906b8679931b 100644
--- a/packages/SystemUI/res/layout/zen_mode_panel.xml
+++ b/packages/SystemUI/res/layout/zen_mode_panel.xml
@@ -94,9 +94,18 @@
android:layout_marginTop="8dp"
android:layout_marginEnd="4dp"
android:layout_marginStart="4dp"
- android:orientation="vertical"
- android:paddingBottom="@dimen/zen_mode_condition_detail_bottom_padding" />
-
+ android:paddingBottom="@dimen/zen_mode_condition_detail_bottom_padding"
+ android:orientation="horizontal" >
+ <RadioGroup
+ android:id="@+id/zen_radio_buttons"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+ <LinearLayout
+ android:id="@+id/zen_radio_buttons_content"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"/>
+ </LinearLayout>
<TextView
android:id="@+id/zen_alarm_warning"
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 9c5c9ec7fb66..4f40c635efc0 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Liggingversoeke aktief"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Verwyder alle kennisgewings."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Kennisgewingsinstellings"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>-instellings"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Die skerm sal outomaties draai."</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 44894160fe20..6900bb71066b 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"የአካባቢ ጥያቄዎች ነቅተዋል"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ሁሉንም ማሳወቂያዎች አጽዳ"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"የማሳወቂያ ቅንብሮች"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"የ<xliff:g id="APP_NAME">%s</xliff:g> ቅንብሮች"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ማያ ገጽ በራስ ሰር ይዞራል።"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 88e3d90fbda4..edda177a3160 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -249,6 +249,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"طلبات الموقع نشطة"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"محو جميع الإشعارات."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"و<xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"إعدادات الإشعارات"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"إعدادات <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"سيتم تدوير الشاشة تلقائيًا."</string>
diff --git a/packages/SystemUI/res/values-az-rAZ/strings.xml b/packages/SystemUI/res/values-az-rAZ/strings.xml
index 683651dd9aca..57f6bfd87b3e 100644
--- a/packages/SystemUI/res/values-az-rAZ/strings.xml
+++ b/packages/SystemUI/res/values-az-rAZ/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Məkan sorğuları arxivi"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Bütün bildirişləri sil."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Bildiriş ayarları"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ayarları"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran avtomatik döndəriləcək."</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index b382cc897119..27120305c214 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -246,6 +246,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Ima aktivnih zahteva za lokaciju"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Obriši sva obaveštenja."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"i još <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Podešavanja obaveštenja"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Podešavanja za <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran će se automatski rotirati."</string>
diff --git a/packages/SystemUI/res/values-be-rBY/strings.xml b/packages/SystemUI/res/values-be-rBY/strings.xml
index bc1259a3ddf8..1445a80bdf3a 100644
--- a/packages/SystemUI/res/values-be-rBY/strings.xml
+++ b/packages/SystemUI/res/values-be-rBY/strings.xml
@@ -249,6 +249,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Ёсць актыўныя запыты пра месцазнаходжанне"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Выдалiць усе апавяшчэннi."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Налады апавяшчэнняў"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Налады <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран паварочваецца аўтаматычна."</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 41f3bbdb9a7a..0962c2a9590f 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Активни заявки за местоположение"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Изчистване на всички известия."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Настройки за известия"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Настройки за <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екранът ще се завърта автоматично."</string>
diff --git a/packages/SystemUI/res/values-bn-rBD/strings.xml b/packages/SystemUI/res/values-bn-rBD/strings.xml
index 70530301f0bf..71039e570b89 100644
--- a/packages/SystemUI/res/values-bn-rBD/strings.xml
+++ b/packages/SystemUI/res/values-bn-rBD/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"অবস্থান অনুরোধ সক্রিয় রয়েছে"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"সমস্ত বিজ্ঞপ্তি সাফ করুন৷"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>টি"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"বিজ্ঞপ্তির সেটিংস"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> সেটিংস"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"স্ক্রীন স্বয়ংক্রিয়ভাবে ঘুরে যাবে৷"</string>
@@ -514,7 +515,7 @@
<string name="night_mode_disclaimer" msgid="598914896926759578">"Android OS এর মূল অংশগুলিতে গাঢ় থিম প্রয়োগ করা হয়েছে যেটা সাধারণত একটি হালকা থিমে প্রদর্শিত হয়, যেমন সেটিংস৷"</string>
<string name="color_apply" msgid="9212602012641034283">"প্রয়োগ করুন"</string>
<string name="color_revert_title" msgid="4746666545480534663">"সেটিংস নিশ্চিত করুন"</string>
- <string name="color_revert_message" msgid="9116001069397996691">"কিছু রঙের সেটিংস এই ডিভাইসকে ব্যবহারের অযোগ্য করে দিতে পারে৷ এই রঙের সেটিংস নিশ্চিত করতে ওকে এ ক্লিক করুন, অন্যথায় ১০ সেকেন্ড পরে এই সেটিংস পুনরায় সেট হবে৷"</string>
+ <string name="color_revert_message" msgid="9116001069397996691">"কিছু রঙের সেটিংস এই ডিভাইসকে ব্যবহারের অযোগ্য করে দিতে পারে৷ এই রঙের সেটিংস নিশ্চিত করতে ঠিক আছে এ ক্লিক করুন, অন্যথায় ১০ সেকেন্ড পরে এই সেটিংস পুনরায় সেট হবে৷"</string>
<string name="battery_panel_title" msgid="7944156115535366613">"ব্যাটারির ব্যবহার"</string>
<string name="battery_detail_charging_summary" msgid="1279095653533044008">"চার্জ করার সময় ব্যাটারি সেভার উপলব্ধ নয়"</string>
<string name="battery_detail_switch_title" msgid="6285872470260795421">"ব্যাটারি সেভার"</string>
diff --git a/packages/SystemUI/res/values-bs-rBA/strings.xml b/packages/SystemUI/res/values-bs-rBA/strings.xml
index ef9926f86bdd..c903534d4f99 100644
--- a/packages/SystemUI/res/values-bs-rBA/strings.xml
+++ b/packages/SystemUI/res/values-bs-rBA/strings.xml
@@ -97,7 +97,7 @@
<string name="voice_assist_label" msgid="3956854378310019854">"otvori glasovnu pomoć"</string>
<string name="camera_label" msgid="7261107956054836961">"otvori kameru"</string>
<string name="recents_caption_resize" msgid="3517056471774958200">"Izaberite novi raspored zadataka"</string>
- <string name="cancel" msgid="6442560571259935130">"Prekini"</string>
+ <string name="cancel" msgid="6442560571259935130">"Otkaži"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Dugme za uvećavanje u slučaju nekompatibilnosti."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Uvećani prikaz manjeg ekrana na većem ekranu."</string>
<string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth je povezan."</string>
@@ -246,6 +246,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktiviran je zahtjev za lokaciju"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Uklanjanje svih obavještenja."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Postavke obavještenja"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Postavke aplikacije <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran će se automatski rotirati."</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index cb765fb1d0e9..e90257c34084 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Sol·licituds d\'ubicació actives"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Esborra totes les notificacions."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configuració de les notificacions"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configuració de l\'aplicació <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girarà automàticament."</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 2f1db1b659e1..b23fad04e4af 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -249,6 +249,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktivní žádosti o polohu"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazat všechna oznámení."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"a ještě <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Nastavení oznámení"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Nastavení aplikace <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Obrazovka se automaticky otočí."</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 7d3ca4fcfa5b..9c483b22a532 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktive placeringsanmodninger"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ryd alle underretninger."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> mere"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Underretningsindstillinger"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Indstillinger for <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skærmen roterer automatisk."</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index f2133122f14b..f1ef1c016b91 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Standortanfragen aktiv"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle Benachrichtigungen löschen"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Benachrichtigungseinstellungen"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Einstellungen von <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Bildschirm wird automatisch gedreht."</string>
@@ -594,7 +595,7 @@
<string name="clipboard_description" msgid="3819919243940546364">"Elemente können direkt in die Zwischenablage gezogen werden. Ebenso können sie direkt aus der Zwischenablage gezogen werden, sofern diese geöffnet ist."</string>
<string name="accessibility_key" msgid="5701989859305675896">"Benutzerdefinierte Navigationsschaltfläche"</string>
<string name="keycode" msgid="7335281375728356499">"Keycode"</string>
- <string name="keycode_description" msgid="1403795192716828949">"Mit den Keycode-Schaltflächen können der Navigationsleiste Tasten hinzugefügt werden. Wird eine Keycode-Schaltfläche ausgewählt, führt sie die Aktion der entsprechenden Taste aus. Wählen Sie zuerst die Taste für die Schaltfläche aus und anschließend ein Bild, das auf der Schaltfläche erscheinen soll."</string>
+ <string name="keycode_description" msgid="1403795192716828949">"Mit den Keycode-Schaltflächen kann man der Navigationsleiste Tasten hinzufügen. Wird eine Keycode-Schaltfläche ausgewählt, führt sie die Aktion der entsprechenden Taste aus. Wähle zuerst die Taste für die Schaltfläche aus und dann ein Bild, das auf der Schaltfläche erscheinen soll."</string>
<string name="select_keycode" msgid="7413765103381924584">"Taste auswählen"</string>
<string name="preview" msgid="9077832302472282938">"Vorschau"</string>
<string name="drag_to_add_tiles" msgid="7058945779098711293">"Zum Hinzufügen von Kacheln ziehen"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index cd6181641bf8..92e443fc204f 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Τα αιτήματα τοποθεσίας έχουν ενεργοποιηθεί"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Εκκαθάριση όλων των ειδοποιήσεων."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ρυθμίσεις ειδοποιήσεων"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Ρυθμίσεις <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Θα γίνεται αυτόματη περιστροφή της οθόνης."</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 803c7a279581..bc1c37847d8b 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Location requests active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+<xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Notification settings"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> settings"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
@@ -316,7 +317,7 @@
<string name="recents_empty_message" msgid="808480104164008572">"No recent items"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"You\'ve cleared everything"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string>
- <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"screen pinning"</string>
+ <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"screen-pinning"</string>
<string name="recents_search_bar_label" msgid="8074997400187836677">"search"</string>
<string name="recents_launch_error_message" msgid="2969287838120550506">"Could not start <xliff:g id="APP">%s</xliff:g>."</string>
<string name="recents_launch_disabled_message" msgid="1624523193008871793">"<xliff:g id="APP">%s</xliff:g> is disabled in safe-mode."</string>
@@ -498,7 +499,7 @@
<string name="notification_importance_high" msgid="1729480727023990427">"Always peek. No full screen interruption."</string>
<string name="notification_importance_max" msgid="2508384624461849111">"Always peek, and allow full screen interruption."</string>
<string name="notification_more_settings" msgid="816306283396553571">"More settings"</string>
- <string name="notification_done" msgid="5279426047273930175">"Finished"</string>
+ <string name="notification_done" msgid="5279426047273930175">"Done"</string>
<string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> notification controls"</string>
<string name="color_and_appearance" msgid="1254323855964993144">"Colour and appearance"</string>
<string name="night_mode" msgid="3540405868248625488">"Night mode"</string>
@@ -597,7 +598,7 @@
<string name="preview" msgid="9077832302472282938">"Preview"</string>
<string name="drag_to_add_tiles" msgid="7058945779098711293">"Drag to add tiles"</string>
<string name="drag_to_remove_tiles" msgid="3361212377437088062">"Drag here to remove"</string>
- <string name="qs_edit" msgid="2232596095725105230">"(edit)"</string>
+ <string name="qs_edit" msgid="2232596095725105230">"Edit"</string>
<string name="tuner_time" msgid="6572217313285536011">"Time"</string>
<string-array name="clock_options">
<item msgid="5965318737560463480">"Show hours, minutes and seconds"</item>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 803c7a279581..bc1c37847d8b 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Location requests active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+<xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Notification settings"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> settings"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
@@ -316,7 +317,7 @@
<string name="recents_empty_message" msgid="808480104164008572">"No recent items"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"You\'ve cleared everything"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string>
- <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"screen pinning"</string>
+ <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"screen-pinning"</string>
<string name="recents_search_bar_label" msgid="8074997400187836677">"search"</string>
<string name="recents_launch_error_message" msgid="2969287838120550506">"Could not start <xliff:g id="APP">%s</xliff:g>."</string>
<string name="recents_launch_disabled_message" msgid="1624523193008871793">"<xliff:g id="APP">%s</xliff:g> is disabled in safe-mode."</string>
@@ -498,7 +499,7 @@
<string name="notification_importance_high" msgid="1729480727023990427">"Always peek. No full screen interruption."</string>
<string name="notification_importance_max" msgid="2508384624461849111">"Always peek, and allow full screen interruption."</string>
<string name="notification_more_settings" msgid="816306283396553571">"More settings"</string>
- <string name="notification_done" msgid="5279426047273930175">"Finished"</string>
+ <string name="notification_done" msgid="5279426047273930175">"Done"</string>
<string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> notification controls"</string>
<string name="color_and_appearance" msgid="1254323855964993144">"Colour and appearance"</string>
<string name="night_mode" msgid="3540405868248625488">"Night mode"</string>
@@ -597,7 +598,7 @@
<string name="preview" msgid="9077832302472282938">"Preview"</string>
<string name="drag_to_add_tiles" msgid="7058945779098711293">"Drag to add tiles"</string>
<string name="drag_to_remove_tiles" msgid="3361212377437088062">"Drag here to remove"</string>
- <string name="qs_edit" msgid="2232596095725105230">"(edit)"</string>
+ <string name="qs_edit" msgid="2232596095725105230">"Edit"</string>
<string name="tuner_time" msgid="6572217313285536011">"Time"</string>
<string-array name="clock_options">
<item msgid="5965318737560463480">"Show hours, minutes and seconds"</item>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 803c7a279581..bc1c37847d8b 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Location requests active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+<xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Notification settings"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> settings"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
@@ -316,7 +317,7 @@
<string name="recents_empty_message" msgid="808480104164008572">"No recent items"</string>
<string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"You\'ve cleared everything"</string>
<string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string>
- <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"screen pinning"</string>
+ <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"screen-pinning"</string>
<string name="recents_search_bar_label" msgid="8074997400187836677">"search"</string>
<string name="recents_launch_error_message" msgid="2969287838120550506">"Could not start <xliff:g id="APP">%s</xliff:g>."</string>
<string name="recents_launch_disabled_message" msgid="1624523193008871793">"<xliff:g id="APP">%s</xliff:g> is disabled in safe-mode."</string>
@@ -498,7 +499,7 @@
<string name="notification_importance_high" msgid="1729480727023990427">"Always peek. No full screen interruption."</string>
<string name="notification_importance_max" msgid="2508384624461849111">"Always peek, and allow full screen interruption."</string>
<string name="notification_more_settings" msgid="816306283396553571">"More settings"</string>
- <string name="notification_done" msgid="5279426047273930175">"Finished"</string>
+ <string name="notification_done" msgid="5279426047273930175">"Done"</string>
<string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> notification controls"</string>
<string name="color_and_appearance" msgid="1254323855964993144">"Colour and appearance"</string>
<string name="night_mode" msgid="3540405868248625488">"Night mode"</string>
@@ -597,7 +598,7 @@
<string name="preview" msgid="9077832302472282938">"Preview"</string>
<string name="drag_to_add_tiles" msgid="7058945779098711293">"Drag to add tiles"</string>
<string name="drag_to_remove_tiles" msgid="3361212377437088062">"Drag here to remove"</string>
- <string name="qs_edit" msgid="2232596095725105230">"(edit)"</string>
+ <string name="qs_edit" msgid="2232596095725105230">"Edit"</string>
<string name="tuner_time" msgid="6572217313285536011">"Time"</string>
<string-array name="clock_options">
<item msgid="5965318737560463480">"Show hours, minutes and seconds"</item>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 1bed37835d48..5a4e0e7d136e 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitudes de ubicación activas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas las notificaciones"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> más"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configuración de notificaciones"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configuración de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girará automáticamente."</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index da7d87294177..425076f6c48e 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitudes de ubicación activas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Borrar todas las notificaciones"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> más"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ajustes de notificaciones"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Ajustes de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girará automáticamente."</string>
diff --git a/packages/SystemUI/res/values-et-rEE/strings.xml b/packages/SystemUI/res/values-et-rEE/strings.xml
index 72cd8179fe19..8a72dbfb6288 100644
--- a/packages/SystemUI/res/values-et-rEE/strings.xml
+++ b/packages/SystemUI/res/values-et-rEE/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Asukoha taotlused on aktiivsed"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Kustuta kõik teatised."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Märguandeseaded"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Rakenduse <xliff:g id="APP_NAME">%s</xliff:g> seaded"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekraani pööramine toimub automaatselt."</string>
diff --git a/packages/SystemUI/res/values-eu-rES/strings.xml b/packages/SystemUI/res/values-eu-rES/strings.xml
index 84a360657be0..4d118ab653dd 100644
--- a/packages/SystemUI/res/values-eu-rES/strings.xml
+++ b/packages/SystemUI/res/values-eu-rES/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aplikazioen kokapen-eskaerak aktibo daude"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Garbitu jakinarazpen guztiak."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Jakinarazpen-ezarpenak"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ezarpenak"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Pantaila automatikoki biratuko da."</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 52c45bbf7ba0..2f190a9e4b00 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"درخواست‌های موقعیت مکانی فعال است"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"پاک کردن تمام اعلان‌ها"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"تنظیمات اعلان"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"تنظیمات <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"صفحه به صورت خودکار می‌چرخد."</string>
@@ -340,7 +341,7 @@
<string name="zen_silence_introduction" msgid="3137882381093271568">"این کار «همه» صداها و لرزش‌ها از جمله هشدارها، موسیقی، ویدیوها و بازی‌ها را مسدود می‌کند."</string>
<string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
<string name="speed_bump_explanation" msgid="1288875699658819755">"اعلان‌های کمتر فوری در زیر"</string>
- <string name="notification_tap_again" msgid="7590196980943943842">"برای باز کردن دوباره ضربه بزنید"</string>
+ <string name="notification_tap_again" msgid="7590196980943943842">"دوباره ضربه بزنید تا باز شود"</string>
<string name="keyguard_unlock" msgid="8043466894212841998">"برای باز کردن قفل سریع به بالا بکشید"</string>
<string name="phone_hint" msgid="4872890986869209950">"انگشتتان را از نماد تلفن تند بکشید"</string>
<string name="voice_hint" msgid="8939888732119726665">"برای «دستیار صوتی»، تند بکشید"</string>
@@ -399,15 +400,15 @@
<string name="disable_vpn" msgid="4435534311510272506">"‏غیرفعال کردن VPN"</string>
<string name="disconnect_vpn" msgid="1324915059568548655">"‏قطع اتصال VPN"</string>
<string name="monitoring_description_device_owned" msgid="5780988291898461883">"مدیریت دستگاه شما توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nسرپرستتان می‌تواند تنظیمات، دسترسی شرکت، برنامه‌ها داده‌های مرتبط با دستگاهتان و اطلاعات مکان دستگاهتان را کنترل و مدیریت کند. برای دریافت اطلاعات بیشتر، با سرپرستتان تماس بگیرید."</string>
- <string name="monitoring_description_vpn" msgid="4445150119515393526">"‏شما به برنامه‌ای برای تنظیم اتصال VPN اجازه دادید.\n\n این برنامه می‌تواند دستگاه و فعالیت شبکه‌تان را کنترل کند، از جمله ایمیل‌، برنامه‌ و وب‌سایت‌ها."</string>
+ <string name="monitoring_description_vpn" msgid="4445150119515393526">"‏شما به برنامه‌ای برای تنظیم اتصال VPN اجازه دادید.\n\n این برنامه می‌تواند دستگاه و فعالیت شبکه‌تان را کنترل کند، از جمله رایانامه‌، برنامه‌ و وب‌سایت‌ها."</string>
<string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"‏دستگاهتان توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت می‌شود.\n\nسرپرستتان می‌تواند تنظیمات، دسترسی شرکت، برنامه‌ها، داده‌های مرتبط با دستگاهتان و اطلاعات مکان دستگاهتان را کنترل و مدیریت کند.\n\nشما به یک VPN وصل هستید که می‌تواند فعالیت شبکه شما را کنترل کند، از جمله ایمیل‌ها، برنامه‌ها و وب‌سایت‌ها.\n\nبرای دریافت اطلاعات بیشتر، با سرپرستتان تماس بگیرید."</string>
- <string name="monitoring_description_vpn_profile_owned" msgid="2054949132145039290">"‏نمایه کاری شما توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت می‌شود.\n\nسرپرستتان می‌تواند فعالیت شبکه‌تان از جمله ایمیل‌، برنامه‌ و وب‌‌سایت‌ها را کنترل کند.\n\nبرای دریافت اطلاعات بیشتر با سرپرستتان تماس بگیرید.\n\nهمچنین به یک VPN وصل هستید که می‌تواند فعالیت شبکه شما را کنترل کند."</string>
+ <string name="monitoring_description_vpn_profile_owned" msgid="2054949132145039290">"‏نمایه کاری شما توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت می‌شود.\n\nسرپرستتان می‌تواند فعالیت شبکه‌تان از جمله رایانامه‌، برنامه‌ و وب‌‌سایت‌ها را کنترل کند.\n\nبرای دریافت اطلاعات بیشتر با سرپرستتان تماس بگیرید.\n\nهمچنین به یک VPN وصل هستید که می‌تواند فعالیت شبکه شما را کنترل کند."</string>
<string name="legacy_vpn_name" msgid="6604123105765737830">"VPN"</string>
- <string name="monitoring_description_app" msgid="6259179342284742878">"شما به <xliff:g id="APPLICATION">%1$s</xliff:g> وصل شده‌اید، که می‌تواند فعالیت شبکه شما از جمله ایمیل‌، برنامه‌ و وب‌سایت‌ها را کنترل کند."</string>
- <string name="monitoring_description_app_personal" msgid="484599052118316268">"شما به <xliff:g id="APPLICATION">%1$s</xliff:g> وصل شده‌اید، که می‌تواند فعالیت شبکه شخصی شما از جمله ایمیل‌، برنامه‌ و وب‌سایت‌ها را کنترل کند."</string>
- <string name="monitoring_description_app_work" msgid="1754325860918060897">"نمایه کاری‌تان توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت می‌شود. این به <xliff:g id="APPLICATION">%2$s</xliff:g> وصل است که فعالیت شبکه کاری‌تان از جمله ایمیل، برنامه و وب‌سایت‌ها را کنترل می‌کند.\n\nبرای دریافت اطلاعات بیشتر، با سرپرستتان تماس بگیرید."</string>
- <string name="monitoring_description_app_personal_work" msgid="4946600443852045903">"نمایه کاری شما توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت می‌شود. این به <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> متصل است که می‌تواند فعالیت شبکه کاری‌تان از جمله ایمیل، برنامه و وب‌سایت‌ها را کنترل کند.\n\nشما همچنین به <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> متصل هستید که می‌تواند فعالیت شبکه شخصی‌تان را کنترل کند."</string>
- <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"دستگاهتان توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت می‌شود.\n\nسرپرستتان می‌تواند تنظیمات، دسترسی شرکت، برنامه‌ها، داده‌های مرتبط با دستگاهتان و اطلاعات مکان دستگاهتان را کنترل و مدیریت کند.\n\nشما به <xliff:g id="APPLICATION">%2$s</xliff:g> وصل هستید که می‌تواند فعالیت شبکه شما را کنترل کند، از جمله ایمیل‌، برنامه‌ و وب‌سایت‌ها.\n\nبرای دریافت اطلاعات بیشتر، با سرپرستتان تماس بگیرید."</string>
+ <string name="monitoring_description_app" msgid="6259179342284742878">"شما به <xliff:g id="APPLICATION">%1$s</xliff:g> وصل شده‌اید، که می‌تواند فعالیت شبکه شما از جمله رایانامه‌، برنامه‌ و وب‌سایت‌ها را کنترل کند."</string>
+ <string name="monitoring_description_app_personal" msgid="484599052118316268">"شما به <xliff:g id="APPLICATION">%1$s</xliff:g> وصل شده‌اید، که می‌تواند فعالیت شبکه شخصی شما از جمله رایانامه‌، برنامه‌ و وب‌سایت‌ها را کنترل کند."</string>
+ <string name="monitoring_description_app_work" msgid="1754325860918060897">"نمایه کاری‌تان توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت می‌شود. این به <xliff:g id="APPLICATION">%2$s</xliff:g> وصل است که فعالیت شبکه کاری‌تان از جمله رایانامه، برنامه و وب‌سایت‌ها را کنترل می‌کند.\n\nبرای دریافت اطلاعات بیشتر، با سرپرستتان تماس بگیرید."</string>
+ <string name="monitoring_description_app_personal_work" msgid="4946600443852045903">"نمایه کاری شما توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت می‌شود. این به <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> متصل است که می‌تواند فعالیت شبکه کاری‌تان از جمله رایانامه، برنامه و وب‌سایت‌ها را کنترل کند.\n\nشما همچنین به <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> متصل هستید که می‌تواند فعالیت شبکه شخصی‌تان را کنترل کند."</string>
+ <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"دستگاهتان توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت می‌شود.\n\nسرپرستتان می‌تواند تنظیمات، دسترسی شرکت، برنامه‌ها، داده‌های مرتبط با دستگاهتان و اطلاعات مکان دستگاهتان را کنترل و مدیریت کند.\n\nشما به <xliff:g id="APPLICATION">%2$s</xliff:g> وصل هستید که می‌تواند فعالیت شبکه شما را کنترل کند، از جمله رایانامه‌، برنامه‌ و وب‌سایت‌ها.\n\nبرای دریافت اطلاعات بیشتر، با سرپرستتان تماس بگیرید."</string>
<string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"دستگاه قفل باقی می‌ماند تا زمانی که قفل آن را به صورت دستی باز کنید"</string>
<string name="hidden_notifications_title" msgid="7139628534207443290">"دریافت سریع‌تر اعلان‌ها"</string>
<string name="hidden_notifications_text" msgid="2326409389088668981">"قبل از باز کردن قفل آنها را مشاهده کنید"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 2516fcf8f2e6..490cbf71419a 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Sijaintipyynnöt aktiiviset"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tyhjennä kaikki ilmoitukset."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ilmoitusasetukset"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Asetukset – <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ruutu kääntyy automaattisesti."</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 732abb3d60c0..91e1ab4d6265 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Demandes de localisation actives"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Supprimer toutes les notifications"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Paramètres de notification"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Paramètres de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"L\'écran pivote automatiquement."</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 00cb2a14c3d3..f15edc16a163 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Demandes de localisation actives"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Supprimer toutes les notifications"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> autres"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Paramètres de notification"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Paramètres de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"L\'écran pivote automatiquement."</string>
diff --git a/packages/SystemUI/res/values-gl-rES/strings.xml b/packages/SystemUI/res/values-gl-rES/strings.xml
index ae4a850d9434..55816078d0c4 100644
--- a/packages/SystemUI/res/values-gl-rES/strings.xml
+++ b/packages/SystemUI/res/values-gl-rES/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitudes de localización activas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas as notificacións."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configuración das notificacións"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configuración de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A pantalla xirará automaticamente."</string>
diff --git a/packages/SystemUI/res/values-gu-rIN/strings.xml b/packages/SystemUI/res/values-gu-rIN/strings.xml
index 6743e83cacc7..971440a2019d 100644
--- a/packages/SystemUI/res/values-gu-rIN/strings.xml
+++ b/packages/SystemUI/res/values-gu-rIN/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"સ્થાન વિનંતીઓ સક્રિય"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"બધા સૂચનો સાફ કરો."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"સૂચનાઓની સેટિંગ્સ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> સેટિંગ્સ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"સ્ક્રીન આપમેળે ફરશે."</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 5d5db684bb0e..f5c32cc7bb6d 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"स्थान अनुरोध सक्रिय"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"सभी सूचनाएं साफ़ करें."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"नोटिफिकेशन सेटिंग"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> सेटिंग"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्‍क्रीन स्‍वचालित रूप से घूमेगी."</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 699294039198..f1ed4725b117 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -246,6 +246,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Zahtjevi za lokaciju aktivni su"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Brisanje svih obavijesti."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"još <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Postavke obavijesti"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Postavke aplikacije <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Zaslon će se automatski zakrenuti."</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 022b76a868cc..4ee085236f72 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktív helylekérések"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Minden értesítés törlése"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Értesítési beállítások"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> beállításai"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A képernyő automatikusan forogni fog."</string>
diff --git a/packages/SystemUI/res/values-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml
index b7a333b0e832..c39af932ad6c 100644
--- a/packages/SystemUI/res/values-hy-rAM/strings.xml
+++ b/packages/SystemUI/res/values-hy-rAM/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Տեղադրության հարցումներն ակտիվ են"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Մաքրել բոլոր ծանուցումները:"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ծանուցման կարգավորումներ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>-ի կարգավորումներ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Էկրանը ինքնաշխատ կպտտվի:"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index b9aa766eb2da..d632e2e91543 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -187,7 +187,7 @@
<string name="accessibility_quick_settings_wifi" msgid="5518210213118181692">"<xliff:g id="SIGNAL">%1$s</xliff:g>."</string>
<string name="accessibility_quick_settings_wifi_changed_off" msgid="8716484460897819400">"Wi-Fi dinonaktifkan."</string>
<string name="accessibility_quick_settings_wifi_changed_on" msgid="6440117170789528622">"Wi-Fi diaktifkan."</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Seluler <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
+ <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Ponsel <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
<string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Baterai <xliff:g id="STATE">%s</xliff:g>."</string>
<string name="accessibility_quick_settings_airplane_off" msgid="7786329360056634412">"Mode pesawat nonaktif."</string>
<string name="accessibility_quick_settings_airplane_on" msgid="6406141469157599296">"Mode pesawat aktif."</string>
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Permintaan lokasi aktif"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Menghapus semua pemberitahuan."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Setelan pemberitahuan"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> setelan"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Layar akan diputar secara otomatis."</string>
@@ -378,7 +379,7 @@
<string name="user_logout_notification_text" msgid="3350262809611876284">"Keluarkan pengguna saat ini"</string>
<string name="user_logout_notification_action" msgid="1195428991423425062">"KELUARKAN PENGGUNA"</string>
<string name="user_add_user_title" msgid="4553596395824132638">"Tambahkan pengguna baru?"</string>
- <string name="user_add_user_message_short" msgid="2161624834066214559">"Saat Anda menambahkan pengguna baru, orang tersebut perlu menyiapkan ruangnya sendiri.\n\n1Pengguna mana pun dapat memperbarui aplikasi untuk semua pengguna lain."</string>
+ <string name="user_add_user_message_short" msgid="2161624834066214559">"Saat Anda menambahkan pengguna baru, orang tersebut perlu menyiapkan ruangnya sendiri.\n\nPengguna mana pun dapat memperbarui aplikasi untuk semua pengguna lain."</string>
<string name="user_remove_user_title" msgid="4681256956076895559">"Hapus pengguna?"</string>
<string name="user_remove_user_message" msgid="1453218013959498039">"Semua aplikasi dan data pengguna ini akan dihapus."</string>
<string name="user_remove_user_remove" msgid="7479275741742178297">"Hapus"</string>
diff --git a/packages/SystemUI/res/values-is-rIS/strings.xml b/packages/SystemUI/res/values-is-rIS/strings.xml
index 45a07c1c1357..b752ae3b3359 100644
--- a/packages/SystemUI/res/values-is-rIS/strings.xml
+++ b/packages/SystemUI/res/values-is-rIS/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Staðsetningarbeiðnir virkar"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Hreinsa allar tilkynningar."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Tilkynningastillingar"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Stillingar fyrir <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skjárinn snýst sjálfkrafa."</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index f352d50ca3d0..6b5418ed460b 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Richieste di accesso alla posizione attive"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Cancella tutte le notifiche."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Impostazioni di notifica"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Impostazioni di <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Lo schermo ruoterà automaticamente."</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 087d933de732..0377d451f025 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"בקשות מיקום פעילות"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"נקה את כל ההתראות."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"הגדרות עבור הודעות"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"הגדרות <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"המסך יסתובב באופן אוטומטי."</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index aa27fffd6998..12b7236c2ec1 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"現在地リクエストがアクティブ"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"通知をすべて消去。"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"他 <xliff:g id="NUMBER">%s</xliff:g> 件"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"通知設定"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>の設定"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"画面は自動的に回転します。"</string>
diff --git a/packages/SystemUI/res/values-ka-rGE/strings.xml b/packages/SystemUI/res/values-ka-rGE/strings.xml
index 24fc4a1f00d7..aaeae2783d0d 100644
--- a/packages/SystemUI/res/values-ka-rGE/strings.xml
+++ b/packages/SystemUI/res/values-ka-rGE/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"მდებარეობის მოთხოვნები აქტიურია"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ყველა შეტყობინების წაშლა"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"შეტყობინების პარამეტრები"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> პარამეტრები"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ეკრანი შეტრიალდება ავტომატურად."</string>
diff --git a/packages/SystemUI/res/values-kk-rKZ/strings.xml b/packages/SystemUI/res/values-kk-rKZ/strings.xml
index c91e8a53ad53..c37ac6906ef1 100644
--- a/packages/SystemUI/res/values-kk-rKZ/strings.xml
+++ b/packages/SystemUI/res/values-kk-rKZ/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Орын өтініштері қосылған"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Барлық хабарларды жойыңыз."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Хабарландыру параметрлері"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> параметрлері"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран автоматты түрде бұрылады."</string>
diff --git a/packages/SystemUI/res/values-km-rKH/strings.xml b/packages/SystemUI/res/values-km-rKH/strings.xml
index 57da1574078b..c66c9721d0fb 100644
--- a/packages/SystemUI/res/values-km-rKH/strings.xml
+++ b/packages/SystemUI/res/values-km-rKH/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"សំណើ​ទីតាំង​សកម្ម"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"សម្អាត​ការ​ជូន​ដំណឹង​ទាំងអស់។"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"​កំណត់​ការ​ជូនដំណឹង"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"ការ​កំណត់ <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"នឹង​បង្វិល​អេក្រង់​ស្វ័យ​ប្រវត្តិ។"</string>
diff --git a/packages/SystemUI/res/values-kn-rIN/strings.xml b/packages/SystemUI/res/values-kn-rIN/strings.xml
index 1c295e6dc32f..73ac69fb19b3 100644
--- a/packages/SystemUI/res/values-kn-rIN/strings.xml
+++ b/packages/SystemUI/res/values-kn-rIN/strings.xml
@@ -43,7 +43,7 @@
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ಆನ್ ಮಾಡು"</string>
<string name="battery_saver_start_action" msgid="5576697451677486320">"ಬ್ಯಾಟರಿ ಉಳಿತಾಯವನ್ನು ಆನ್ ಮಾಡಿ"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
+ <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"ವೈ-ಫೈ"</string>
<string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"ಪರದೆಯನ್ನು ಸ್ವಯಂ-ತಿರುಗಿಸಿ"</string>
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"ಮ್ಯೂಟ್"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ಸ್ವಯಂ"</string>
@@ -147,7 +147,7 @@
<string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
<string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ರೋಮಿಂಗ್"</string>
<string name="accessibility_data_connection_edge" msgid="4477457051631979278">"ಎಡ್ಜ್‌"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
+ <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"ವೈ-ಫೈ"</string>
<string name="accessibility_no_sim" msgid="8274017118472455155">"ಯಾವುದೇ ಸಿಮ್‌ ಇಲ್ಲ."</string>
<string name="accessibility_cell_data" msgid="7080312242791850520">"ಸೆಲ್ಯುಲರ್ ಡೇಟಾ"</string>
<string name="accessibility_cell_data_on" msgid="4310018593519761767">"ಸೆಲ್ಯುಲರ್ ಡೇಟಾ ಆನ್ ಆಗಿದೆ"</string>
@@ -239,12 +239,13 @@
<string name="data_usage_disabled_dialog" msgid="8453242888903772524">"ಏಕೆಂದರೆ ನಿಮ್ಮ ಹೊಂದಾಣಿಕೆ ಡೇಟಾ ಮೀತಿಯನ್ನು ತಲುಪಿದೆ, ಈ ಆವರ್ತನೆಯ ಉಳಿದ ಭಾಗಕ್ಕೆ ಸಾಧನವು ಡೇಟಾ ಬಳಕೆಯನ್ನು ವಿರಾಮಗೊಳಿಸಿದೆ.\n\nಮುಂದುವರೆಯುವಿಕೆಯು ನಿಮ್ಮ ವಾಹಕದ ಶುಲ್ಕಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು."</string>
<string name="data_usage_disabled_dialog_enable" msgid="1412395410306390593">"ಮುಂದುವರಿಸು"</string>
<string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವಿಲ್ಲ"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"ವೈ-ಫೈ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS ಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"ಸ್ಥಾನವನ್ನು GPS ಮೂಲಕ ಹೊಂದಿಸಲಾಗಿದೆ"</string>
<string name="accessibility_location_active" msgid="2427290146138169014">"ಸ್ಥಾನ ವಿನಂತಿಗಳು ಸಕ್ರಿಯವಾಗಿವೆ"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ಎಲ್ಲಾ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೆರವುಗೊಳಿಸು."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"ಅಧಿಸೂಚನೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ಪರದೆಯು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತಿರುಗುತ್ತದೆ."</string>
@@ -282,10 +283,10 @@
<string name="quick_settings_user_label" msgid="5238995632130897840">"ನಾನು"</string>
<string name="quick_settings_user_title" msgid="4467690427642392403">"ಬಳಕೆದಾರ"</string>
<string name="quick_settings_user_new_user" msgid="9030521362023479778">"ಹೊಸ ಬಳಕೆದಾರರು"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
+ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"ವೈ-ಫೈ"</string>
<string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ನೆಟ್‌ವರ್ಕ್ ಇಲ್ಲ"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ಆಫ್"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"ವೈ-ಫೈ ಆಫ್"</string>
<string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"ವೈ-ಫೈ ಆನ್ ಆಗಿದೆ"</string>
<string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"ಯಾವುದೇ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="quick_settings_cast_title" msgid="7709016546426454729">"ಬಿತ್ತರಿಸುವಿಕೆ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 9eba95604edb..790e7ff2f007 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"위치 요청 있음"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"모든 알림 지우기"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g>개 더보기"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"알림 설정"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> 설정"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"화면이 자동으로 회전됩니다."</string>
diff --git a/packages/SystemUI/res/values-ky-rKG/strings.xml b/packages/SystemUI/res/values-ky-rKG/strings.xml
index 1dd663649052..7b5496e8b2d0 100644
--- a/packages/SystemUI/res/values-ky-rKG/strings.xml
+++ b/packages/SystemUI/res/values-ky-rKG/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Жайгаштыруу талаптары иштелүүдө"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Бардык эскертмелерди тазалоо."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Эскертме жөндөөлөрү"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> жөндөөлөрү"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран автоматтык түрдө бурулат."</string>
diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml
index 4fd8485eff0c..f09f6479ffc3 100644
--- a/packages/SystemUI/res/values-lo-rLA/strings.xml
+++ b/packages/SystemUI/res/values-lo-rLA/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"ການຮ້ອງຂໍສະຖານທີ່ທີ່ເຮັດວຽກຢູ່"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ລຶບການແຈ້ງເຕືອນທັງໝົດ."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ແຈ້ງ​ເຕືອນ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"ການ​ຕັ້ງ​ຄ່າ <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ໜ້າຈໍຈະໝຸນໂດຍອັດຕະໂນມັດ."</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 72af899d1ede..566073a7a630 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Vietovės užklausos aktyvios"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Išvalyti visus pranešimus."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"Dar <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Pranešimų nustatymai"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"„<xliff:g id="APP_NAME">%s</xliff:g>“ nustatymai"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekranas bus sukamas automatiškai."</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 27542686f763..016c74ab76b6 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -246,6 +246,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktīvi atrašanās vietu pieprasījumi"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Notīrīt visus paziņojumus"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"vēl <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Paziņojumu iestatījumi"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> iestatījumi"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekrāns tiks pagriezts automātiski."</string>
diff --git a/packages/SystemUI/res/values-mk-rMK/strings.xml b/packages/SystemUI/res/values-mk-rMK/strings.xml
index 8f0e3ab6440c..13e2ed870ab9 100644
--- a/packages/SystemUI/res/values-mk-rMK/strings.xml
+++ b/packages/SystemUI/res/values-mk-rMK/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Активни барања за локација"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Исчисти ги сите известувања."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Поставки на известувања"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Поставки на <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екранот ќе ротира автоматски."</string>
diff --git a/packages/SystemUI/res/values-ml-rIN/strings.xml b/packages/SystemUI/res/values-ml-rIN/strings.xml
index 8631fd574b41..d52ea5f5c81e 100644
--- a/packages/SystemUI/res/values-ml-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ml-rIN/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"ലൊക്കേഷൻ അഭ്യർത്ഥനകൾ സജീവമാണ്"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"എല്ലാ വിവരങ്ങളും മായ്‌ക്കുക."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"അറിയിപ്പ് ക്രമീകരണങ്ങൾ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ക്രമീകരണം"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"സ്‌ക്രീൻ സ്വയമേവ തിരിയും."</string>
@@ -326,7 +327,7 @@
<string name="recents_multistack_add_stack_dialog_split_horizontal" msgid="8848514474543427332">"തിരശ്ചീനമായി വേർതിരിക്കുക"</string>
<string name="recents_multistack_add_stack_dialog_split_vertical" msgid="9075292233696180813">"ലംബമായി വേർതിരിക്കുക"</string>
<string name="recents_multistack_add_stack_dialog_split_custom" msgid="4177837597513701943">"ഇഷ്‌ടാനുസൃതമായി വേർതിരിക്കുക"</string>
- <string name="expanded_header_battery_charged" msgid="5945855970267657951">"ചാർജ്ജുചെയ്‌തു"</string>
+ <string name="expanded_header_battery_charged" msgid="5945855970267657951">"ചാർജായി"</string>
<string name="expanded_header_battery_charging" msgid="205623198487189724">"ചാർജ്ജുചെയ്യുന്നു"</string>
<string name="expanded_header_battery_charging_with_time" msgid="457559884275395376">"പൂർണ്ണമായും ചാർജ്ജാകുന്നതിന്, <xliff:g id="CHARGING_TIME">%s</xliff:g>"</string>
<string name="expanded_header_battery_not_charging" msgid="4798147152367049732">"ചാർജ്ജുചെയ്യുന്നില്ല"</string>
diff --git a/packages/SystemUI/res/values-mn-rMN/strings.xml b/packages/SystemUI/res/values-mn-rMN/strings.xml
index 278468afeb42..c373b78090a7 100644
--- a/packages/SystemUI/res/values-mn-rMN/strings.xml
+++ b/packages/SystemUI/res/values-mn-rMN/strings.xml
@@ -243,6 +243,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Байршлын хүсэлтүүд идэвхтэй"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Бүх мэдэгдлийг цэвэрлэх."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Мэдэгдлийн тохиргоо"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> тохиргоо"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Дэлгэц автоматаар эргэнэ."</string>
diff --git a/packages/SystemUI/res/values-mr-rIN/strings.xml b/packages/SystemUI/res/values-mr-rIN/strings.xml
index 3aef30befbd4..9d71a2f1faeb 100644
--- a/packages/SystemUI/res/values-mr-rIN/strings.xml
+++ b/packages/SystemUI/res/values-mr-rIN/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"स्थान विनंत्या सक्रिय"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"सर्व सूचना साफ करा."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"सूचना सेटिंग्ज"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> सेटिंग्ज"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्क्रीन स्वयंचलितपणे फिरेल."</string>
diff --git a/packages/SystemUI/res/values-ms-rMY/strings.xml b/packages/SystemUI/res/values-ms-rMY/strings.xml
index 3c3e7a50335b..e9abfa363db3 100644
--- a/packages/SystemUI/res/values-ms-rMY/strings.xml
+++ b/packages/SystemUI/res/values-ms-rMY/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Permintaan lokasi aktif"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Padamkan semua pemberitahuan."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Tetapan pemberitahuan"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> tetapan"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skrin akan berputar secara automatik."</string>
diff --git a/packages/SystemUI/res/values-my-rMM/strings.xml b/packages/SystemUI/res/values-my-rMM/strings.xml
index 15a5fbf49426..62c26d38ed40 100644
--- a/packages/SystemUI/res/values-my-rMM/strings.xml
+++ b/packages/SystemUI/res/values-my-rMM/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="7164937344850004466">"စနစ်၏UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"ရှင်းလင်းရန်"</string>
+ <string name="status_bar_clear_all_button" msgid="7774721344716731603">"ဖယ်ရှားရန်"</string>
<string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"စာရင်းမှ ဖယ်မည်"</string>
<string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"အပ်ပလီကေးရှင်း အချက်အလက်များ"</string>
<string name="status_bar_no_recent_apps" msgid="7374907845131203189">"သင်၏ မကြာမီက မျက်နှာပြင်များ ဒီမှာ ပေါ်လာကြမည်"</string>
@@ -96,7 +96,7 @@
<string name="voice_assist_label" msgid="3956854378310019854">"အသံ အကူအညီအား ဖွင့်ရန်"</string>
<string name="camera_label" msgid="7261107956054836961">"ကင်မရာ ဖွင့်ရန်"</string>
<string name="recents_caption_resize" msgid="3517056471774958200">"အလုပ်သစ်စီစဥ်မှုကို ရွေးပါ။"</string>
- <string name="cancel" msgid="6442560571259935130">"ဖျက်သိမ်းရန်"</string>
+ <string name="cancel" msgid="6442560571259935130">"မလုပ်တော့ပါ"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"အံ့ဝင်သောချုံ့ချဲ့ခလုတ်"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"ဖန်သားပြင်ပေါ်တွင် အသေးမှအကြီးသို့ချဲ့ခြင်း"</string>
<string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"ဘလူးတုသ်ချိတ်ဆက်ထားမှု"</string>
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"တည်နေရာပြ တောင်းဆိုချက်များ အသက်ဝင်ရန်"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"သတိပေးချက်အားလုံးအား ဖယ်ရှားခြင်း။"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"အကြောင်းကြားချက် ဆက်တင်များ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ဆက်တင်များ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ဖန်သားပြင်ပေါ်မှာ ပြသမှုက အလိုအလျောက် လှည့်သွားပါမည်"</string>
@@ -320,7 +321,7 @@
<string name="recents_search_bar_label" msgid="8074997400187836677">"ရှာဖွေရန်"</string>
<string name="recents_launch_error_message" msgid="2969287838120550506">"<xliff:g id="APP">%s</xliff:g> ကို မစနိုင်ပါ။"</string>
<string name="recents_launch_disabled_message" msgid="1624523193008871793">"<xliff:g id="APP">%s</xliff:g> ကို ဘေးကင်းလုံခြုံသည့်မုဒ်တွင် ပိတ်ထားပါသည်။"</string>
- <string name="recents_stack_action_button_label" msgid="6593727103310426253">"အားလုံး ရှင်းလင်းပါ"</string>
+ <string name="recents_stack_action_button_label" msgid="6593727103310426253">"အားလုံး ဖယ်ရှားပါ"</string>
<string name="recents_incompatible_app_message" msgid="5075812958564082451">"အက်ပ်သည် မျက်နှာပြင်ခွဲ၍ ပြသခြင်းကို ပံ့ပိုးမထားပါ"</string>
<string name="recents_drag_hint_message" msgid="2649739267073203985">"မျက်နှာပြင် ခွဲခြမ်းပြသခြင်းကို အသုံးပြုရန် ဤနေရာသို့ ပွတ်၍ဆွဲထည့်ပါ"</string>
<string name="recents_multistack_add_stack_dialog_split_horizontal" msgid="8848514474543427332">"ရေပြင်ညီ ပိုင်းမည်"</string>
@@ -387,7 +388,7 @@
<string name="battery_saver_notification_action_text" msgid="109158658238110382">"ဘက်ထရီ ချွေတာမှုကို ပိတ်ထားရန်"</string>
<string name="media_projection_dialog_text" msgid="3071431025448218928">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> က သင်၏ မျက်နှာပြင် ပေါ်မှာ ပြသထားသည့် အရာတိုင်းကို စတင် ဖမ်းယူမည်။"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"နောက်ထပ် မပြပါနှင့်"</string>
- <string name="clear_all_notifications_text" msgid="814192889771462828">"အားလုံး ရှင်းလင်းရန်"</string>
+ <string name="clear_all_notifications_text" msgid="814192889771462828">"အားလုံး ဖယ်ရှားရန်"</string>
<string name="media_projection_action_text" msgid="8470872969457985954">"ယခု စတင်ပါ"</string>
<string name="empty_shade_text" msgid="708135716272867002">"အကြောင်းကြားချက်များ မရှိ"</string>
<string name="device_owned_footer" msgid="3802752663326030053">"ကိရိယာကို စောင့်ကြပ် နိုင်ပါသည်"</string>
@@ -419,8 +420,8 @@
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ခေါက်သိမ်းရန်..."</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"မျက်နှာပြင် ပင်ထိုးပြီးပါပြီ"</string>
<string name="screen_pinning_description" msgid="7238941806855968768">"သင်က ပင်မဖြုတ်မချင်း ၎င်းကိုပြသထားပါမည်။ ပင်ဖြုတ်ရန် \'နောက်သို့\' ကိုထိပြီး ဖိထားပါ။"</string>
- <string name="screen_pinning_positive" msgid="3783985798366751226">"အဲဒါ ရပြီ"</string>
- <string name="screen_pinning_negative" msgid="3741602308343880268">"မလို ကျေးဇူးပဲ"</string>
+ <string name="screen_pinning_positive" msgid="3783985798366751226">"အဲဒါ ရပါပြီ"</string>
+ <string name="screen_pinning_negative" msgid="3741602308343880268">"မလိုတော့ပါ"</string>
<string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> ဝှက်မည်လား?"</string>
<string name="quick_settings_reset_confirmation_message" msgid="2235970126803317374">"နောက်တစ်ကြိမ်သင် ချိန်ညှိချက်များဖွင့်လျှင် ၎င်းပေါ်လာပါမည်။"</string>
<string name="quick_settings_reset_confirmation_button" msgid="2660339101868367515">"ဖျောက်ထားမည်"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index eb575da3b005..156af7844928 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktive stedsforespørsler"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Fjern alle varslinger."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Varselinnstillinger"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>-innstillinger"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skjermen roterer automatisk."</string>
diff --git a/packages/SystemUI/res/values-ne-rNP/strings.xml b/packages/SystemUI/res/values-ne-rNP/strings.xml
index f473d8e8b313..7ff0ff2fa4cd 100644
--- a/packages/SystemUI/res/values-ne-rNP/strings.xml
+++ b/packages/SystemUI/res/values-ne-rNP/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"स्थान अनुरोधहरू सक्रिय"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"सबै सूचनाहरू हटाउनुहोस्।"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"अधिसूचना सेटिङ्हरू"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> सेटिङ्हरू"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्क्रिन स्वतः घुम्ने छ।"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 727285eb631c..d5e0c54d33d4 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Locatieverzoeken actief"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle meldingen wissen."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Instellingen voor meldingen"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>-instellingen"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Scherm wordt automatisch geroteerd."</string>
diff --git a/packages/SystemUI/res/values-pa-rIN/strings.xml b/packages/SystemUI/res/values-pa-rIN/strings.xml
index e124fa2cdb64..59a92e62e520 100644
--- a/packages/SystemUI/res/values-pa-rIN/strings.xml
+++ b/packages/SystemUI/res/values-pa-rIN/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"ਨਿਰਧਾਰਿਤ ਸਥਾਨ ਸੇਵਾ ਬੇਨਤੀਆਂ ਸਕਿਰਿਆ"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ਸਾਰੀਆਂ ਸੂਚਨਾਵਾਂ ਹਟਾਓ।"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"ਸੂਚਨਾ ਸੈਟਿੰਗਾਂ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ਸੈਟਿੰਗਾਂ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ਸਕ੍ਰੀਨ ਆਟੋਮੈਟਿਕਲੀ ਰੋਟੇਟ ਕਰੇਗੀ।"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index dd7e4e6cdab5..eb137552339e 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Prośby o lokalizację są aktywne"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Usuń wszystkie powiadomienia."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ustawienia powiadomień"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Ustawienia aplikacji <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran zostanie obrócony automatycznie."</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index a315ceca63e2..16d9ac2859fa 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitações de localização ativas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"Mais <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configurações de notificação"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configurações de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A tela girará automaticamente."</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 07604b12731f..489e4d2d2c75 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Pedidos de localização ativos"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Definições de notificação"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Definições do <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"O ecrã será rodado automaticamente."</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index a315ceca63e2..16d9ac2859fa 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitações de localização ativas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"Mais <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configurações de notificação"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configurações de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A tela girará automaticamente."</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 9b52ffd7d6f2..76a0bf1182c1 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -248,6 +248,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitări locație active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ștergeți toate notificările."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Setări pentru notificări"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Setări <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ecranul se va roti în mod automat."</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 978684ee4337..180cfbd49c11 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -249,6 +249,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Есть активные запросы на определение местоположения"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Удалить все уведомления"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Настройки уведомлений"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Настройки приложения \"<xliff:g id="APP_NAME">%s</xliff:g>\""</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран будет поворачиваться автоматически."</string>
diff --git a/packages/SystemUI/res/values-si-rLK/strings.xml b/packages/SystemUI/res/values-si-rLK/strings.xml
index c845a38468e2..f76685ca8782 100644
--- a/packages/SystemUI/res/values-si-rLK/strings.xml
+++ b/packages/SystemUI/res/values-si-rLK/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"පිහිටීම් ඉල්ලීම් සක්‍රියයි"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"සියලු දැනුම්දීම් හිස් කරන්න."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"දැනුම්දීම් සැකසීම්"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> සැකසීම්"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"තිරය ස්වයංක්‍රීයව කරකැවේ."</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 65e2a92fd136..27441d9366a3 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -249,6 +249,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Žiadosti o polohu sú aktívne"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazať všetky upozornenia."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Nastavenia upozornení"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Nastavenia aplikácie <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Obrazovka sa automaticky otočí."</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 66334d42b30e..3db3f2321307 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -249,6 +249,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktivne zahteve za lokacijo"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Izbriši vsa obvestila."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"in <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Nastavitve obvestil"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Nastavitve aplikacije <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Zaslon se bo samodejno zasukal."</string>
diff --git a/packages/SystemUI/res/values-sq-rAL/strings.xml b/packages/SystemUI/res/values-sq-rAL/strings.xml
index 14f840e03f70..2f838781a5b6 100644
--- a/packages/SystemUI/res/values-sq-rAL/strings.xml
+++ b/packages/SystemUI/res/values-sq-rAL/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Kërkesat për vendodhje janë aktive"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Pastro të gjitha njoftimet."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Cilësimet e njoftimeve"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Cilësimet e <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekrani do të rrotullohet automatikisht."</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 437a4d8a9725..37d0627f0a94 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -246,6 +246,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Има активних захтева за локацију"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Обриши сва обавештења."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"и још <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Подешавања обавештења"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Подешавања за <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екран ће се аутоматски ротирати."</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index e20986acb4b8..59fb237d0420 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Det finns aktiva platsbegäranden"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ta bort alla meddelanden."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> till"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Aviseringsinställningar"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Inställningar för <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skärmen roteras automatiskt."</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 3fe37b95f1f7..3303f6aa4065 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Maombi ya eneo yanatumika"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Futa arifa zote."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Mipangilio ya arifa"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Mipangilio ya <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skrini itazunguka kiotomatiki."</string>
diff --git a/packages/SystemUI/res/values-ta-rIN/strings.xml b/packages/SystemUI/res/values-ta-rIN/strings.xml
index d385ce007dc8..fe70b0770c1e 100644
--- a/packages/SystemUI/res/values-ta-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ta-rIN/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"இருப்பிடக் கோரிக்கைகள் இயக்கப்பட்டன"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"எல்லா அறிவிப்புகளையும் அழி."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"அறிவிப்பு அமைப்புகள்"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> அமைப்புகள்"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"திரை தானாகச் சுழலும்."</string>
diff --git a/packages/SystemUI/res/values-te-rIN/strings.xml b/packages/SystemUI/res/values-te-rIN/strings.xml
index 5e195642f40e..016c22dbee9f 100644
--- a/packages/SystemUI/res/values-te-rIN/strings.xml
+++ b/packages/SystemUI/res/values-te-rIN/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"స్థాన అభ్యర్థనలు సక్రియంగా ఉన్నాయి"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"అన్ని నోటిఫికేషన్‌లను క్లియర్ చేయండి."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"నోటిఫికేషన్ సెట్టింగ్‌లు"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> సెట్టింగ్‌లు"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"స్క్రీన్ స్వయంచాలకంగా తిప్పబడుతుంది."</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index c4b51525bb5d..363a8fc9bfcb 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"คำขอตำแหน่งที่มีการใช้งาน"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ล้างการแจ้งเตือนทั้งหมด"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"การตั้งค่าการแจ้งเตือน"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"การตั้งค่า <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"หน้าจอจะหมุนโดยอัตโนมัติ"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index d618073058b1..7731a584ed94 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktibo ang mga kahilingan ng lokasyon"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"I-clear ang lahat ng notification."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Mga setting ng notification"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Mg setting ng <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Awtomatikong iikot ang screen."</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 2763468ee89e..980a14c0468e 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Konum bilgisi istekleri etkin"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tüm bildirimleri temizle"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Bildirim ayarları"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ayarları"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran otomatik olarak dönecektir."</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 9d7cb9106695..6c4df691acb4 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -249,6 +249,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Запити про місцезнаходження активні"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Очистити всі сповіщення."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Налаштування сповіщень"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Налаштування додатка <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екран обертатиметься автоматично."</string>
diff --git a/packages/SystemUI/res/values-ur-rPK/strings.xml b/packages/SystemUI/res/values-ur-rPK/strings.xml
index 682ca3c3ae5f..49a1e78aac8e 100644
--- a/packages/SystemUI/res/values-ur-rPK/strings.xml
+++ b/packages/SystemUI/res/values-ur-rPK/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"مقام کی درخواستیں فعال ہیں"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"سبھی اطلاعات صاف کریں۔"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> +"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"اطلاع کی ترتیبات"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ترتیبات"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"اسکرین خود بخود گردش کرے گی۔"</string>
diff --git a/packages/SystemUI/res/values-uz-rUZ/strings.xml b/packages/SystemUI/res/values-uz-rUZ/strings.xml
index d5156e4c6ce4..b577bad81d81 100644
--- a/packages/SystemUI/res/values-uz-rUZ/strings.xml
+++ b/packages/SystemUI/res/values-uz-rUZ/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Joylashuv so‘rovlari yoniq"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Barcha eslatmalarni tozalash."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Bildirishnoma sozlamalari"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> sozlamalari"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran avtomatik buriladi."</string>
@@ -278,7 +279,7 @@
<string name="quick_settings_location_off_label" msgid="7464544086507331459">"Joylashuv xizmati o‘chiq"</string>
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Media qurilma"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Favqulodda qo‘ng‘iroqlar"</string>
+ <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Favqulodda chaqiruvlar"</string>
<string name="quick_settings_settings_label" msgid="5326556592578065401">"Sozlamalar"</string>
<string name="quick_settings_time_label" msgid="4635969182239736408">"Vaqt"</string>
<string name="quick_settings_user_label" msgid="5238995632130897840">"Men"</string>
@@ -535,7 +536,7 @@
<string name="keyboard_key_backspace" msgid="1559580097512385854">"Backspace"</string>
<string name="keyboard_key_media_play_pause" msgid="3861975717393887428">"Ijro/Pauza"</string>
<string name="keyboard_key_media_stop" msgid="2859963958595908962">"To‘xtatish"</string>
- <string name="keyboard_key_media_next" msgid="1894394911630345607">"Keyingi"</string>
+ <string name="keyboard_key_media_next" msgid="1894394911630345607">"Keyingisi"</string>
<string name="keyboard_key_media_previous" msgid="4256072387192967261">"Avvalgi"</string>
<string name="keyboard_key_media_rewind" msgid="2654808213360820186">"Orqaga qaytarish"</string>
<string name="keyboard_key_media_fast_forward" msgid="3849417047738200605">"Oldinga o‘tkazish"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 9ded699100ba..7638819a4d86 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Yêu cầu về thông tin vị trí đang hoạt động"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Xóa tất cả thông báo."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Cài đặt thông báo"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Cài đặt <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Màn hình sẽ xoay tự động."</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index a11dc0eabd3d..b5c6be8c64ed 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"应用发出了有效位置信息请求"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"通知设置"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>设置"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"屏幕会自动旋转。"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index dd7db867a2ba..ab9059d99360 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -247,6 +247,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"位置要求啟動中"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"通知設定"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>設定"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"螢幕會自動旋轉。"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 7764073a7df7..dc6eebd747d5 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"有位置資訊要求"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"通知設定"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>設定"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"螢幕會自動旋轉。"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 0fecc0a1ce9f..aa5be57ed209 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -245,6 +245,7 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Izicelo zendawo ziyasebenza"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Susa zonke izaziso."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <!-- no translation found for notification_group_overflow_description (4579313201268495404) -->
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Izilungiselelo zesaziso"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> izilungiselelo"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Isikrini sizophenduka ngokuzenzakalela."</string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index cbb3c0ab52c7..2a4752a6a086 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -138,6 +138,9 @@
<!-- Height of the status bar header bar when on Keyguard -->
<dimen name="status_bar_header_height_keyguard">40dp</dimen>
+ <!-- Margin start of the system icons super container -->
+ <dimen name="system_icons_super_container_margin_start">16dp</dimen>
+
<!-- Width for the notification panel and related windows -->
<dimen name="match_parent">-1px</dimen>
<dimen name="standard_notification_panel_width">416dp</dimen>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 27585513bf71..f7a169cb4d5b 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -594,6 +594,12 @@
<!-- The overflow indicator shown when a group has more notification inside the group than the visible ones. An example is "+ 3" [CHAR LIMIT=5] -->
<string name="notification_group_overflow_indicator">+ <xliff:g id="number" example="3">%s</xliff:g></string>
+ <!-- Content description describing how many more notifications are in a group [CHAR LIMIT=NONE] -->
+ <plurals name="notification_group_overflow_description">
+ <item quantity="one"><xliff:g id="number" example="1">%s</xliff:g> more notification inside.</item>
+ <item quantity="other"><xliff:g id="number" example="3">%s</xliff:g> more notifications inside.</item>
+ </plurals>
+
<!-- Content description of button in notification inspector for system settings relating to
notifications from this application [CHAR LIMIT=NONE] -->
<string name="status_bar_notification_inspect_item_title">Notification settings</string>
diff --git a/packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java b/packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java
index 15e1c96324b9..c204d94916a4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java
@@ -24,8 +24,6 @@ import android.widget.ScrollView;
*/
public class NonInterceptingScrollView extends ScrollView {
- private float mInitialY;
-
public NonInterceptingScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@@ -35,14 +33,7 @@ public class NonInterceptingScrollView extends ScrollView {
int action = ev.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
- mInitialY = ev.getY();
- break;
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_CANCEL:
- requestDisallowInterceptTouchEvent(false);
- break;
- default:
- if (canScrollVertically(ev.getY() > mInitialY ? -1 : 1)) {
+ if (canScrollVertically(1)) {
requestDisallowInterceptTouchEvent(true);
}
break;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
index f07e8fccd894..cf96457ce09c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
@@ -31,6 +31,10 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
private View mDecorGroup;
private PageListener mPageListener;
+ private int mPosition;
+ private boolean mOffPage;
+ private boolean mListening;
+
public PagedTileLayout(Context context, AttributeSet attrs) {
super(context, attrs);
setAdapter(mAdapter);
@@ -48,6 +52,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
if (mPageIndicator == null) return;
+ setCurrentPage(position, positionOffset != 0);
mPageIndicator.setLocation(position + positionOffset);
if (mPageListener != null) {
mPageListener.onPageChanged(positionOffsetPixels == 0 &&
@@ -78,6 +83,52 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
}
@Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ if (mListening) {
+ mPages.get(mPosition).setListening(listening);
+ if (mOffPage) {
+ mPages.get(mPosition + 1).setListening(listening);
+ }
+ } else {
+ // Make sure no pages are listening.
+ for (int i = 0; i < mPages.size(); i++) {
+ mPages.get(i).setListening(false);
+ }
+ }
+ }
+
+ /**
+ * Sets individual pages to listening or not. If offPage it will set
+ * the next page after position to listening as well since we are in between
+ * pages.
+ */
+ private void setCurrentPage(int position, boolean offPage) {
+ if (mPosition == position && mOffPage == offPage) return;
+ if (mListening) {
+ if (mPosition != position) {
+ // Clear out the last pages from listening.
+ mPages.get(mPosition).setListening(false);
+ if (mOffPage) {
+ mPages.get(mPosition + 1).setListening(false);
+ }
+ // Set the new pages to listening
+ mPages.get(position).setListening(true);
+ if (offPage) {
+ mPages.get(position + 1).setListening(true);
+ }
+ } else if (mOffPage != offPage) {
+ // Whether we are showing position + 1 has changed.
+ mPages.get(mPosition + 1).setListening(offPage);
+ }
+ }
+ // Save the current state.
+ mPosition = position;
+ mOffPage = offPage;
+ }
+
+ @Override
public boolean hasOverlappingRendering() {
return false;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainer.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainer.java
index ef7556267e0c..8d6e17e2622b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainer.java
@@ -60,6 +60,7 @@ public class QSContainer extends FrameLayout {
private QSAnimator mQSAnimator;
private QSCustomizer mQSCustomizer;
private NotificationPanelView mPanelView;
+ private boolean mListening;
public QSContainer(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -209,6 +210,7 @@ public class QSContainer extends FrameLayout {
public void setExpanded(boolean expanded) {
if (DEBUG) Log.d(TAG, "setExpanded " + expanded);
mQsExpanded = expanded;
+ mQSPanel.setListening(mListening && mQsExpanded);
updateQsState();
}
@@ -227,8 +229,9 @@ public class QSContainer extends FrameLayout {
public void setListening(boolean listening) {
if (DEBUG) Log.d(TAG, "setListening " + listening);
- mQSPanel.setListening(listening);
+ mListening = listening;
mHeader.setListening(listening);
+ mQSPanel.setListening(mListening && mQsExpanded);
}
public void setQsExpansion(float expansion, float headerTranslation) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSIconView.java b/packages/SystemUI/src/com/android/systemui/qs/QSIconView.java
index 6c224f70f42f..9c4a1498e9e5 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSIconView.java
@@ -80,7 +80,7 @@ public class QSIconView extends ViewGroup {
Drawable d = state.icon != null
? iv.isShown() && mAnimationEnabled ? state.icon.getDrawable(mContext)
: state.icon.getInvisibleDrawable(mContext) : null;
- int padding = state.icon != null ? state.icon.getPadding() : null;
+ int padding = state.icon != null ? state.icon.getPadding() : 0;
if (d != null && state.autoMirrorDrawable) {
d.setAutoMirrored(true);
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 0e8d76ac50bd..6945176be7d3 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -57,7 +57,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
private int mPanelPaddingBottom;
private int mBrightnessPaddingTop;
private boolean mExpanded;
- private boolean mListening;
+ protected boolean mListening;
private Callback mCallback;
private BrightnessController mBrightnessController;
@@ -102,6 +102,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
protected void setupTileLayout() {
mTileLayout = (QSTileLayout) LayoutInflater.from(mContext).inflate(
R.layout.qs_paged_tile_layout, this, false);
+ mTileLayout.setListening(mListening);
addView((View) mTileLayout);
findViewById(android.R.id.edit).setOnClickListener(view ->
mHost.startRunnableDismissingKeyguard(() -> showEdit(view)));
@@ -230,8 +231,8 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
public void setListening(boolean listening) {
if (mListening == listening) return;
mListening = listening;
- for (TileRecord r : mRecords) {
- r.tile.setListening(mListening);
+ if (mTileLayout != null) {
+ mTileLayout.setListening(listening);
}
mFooter.setListening(mListening);
if (mListening) {
@@ -343,7 +344,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
}
};
r.tileView.init(click, longClick);
- r.tile.setListening(mListening);
callback.onStateChanged(r.tile.getState());
r.tile.refreshState();
mRecords.add(r);
@@ -533,5 +533,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
void removeTile(TileRecord tile);
int getOffsetTop(TileRecord tile);
boolean updateResources();
+
+ void setListening(boolean listening);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
index 0cc30a8642ea..8d9f23fb9242 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
@@ -24,6 +24,7 @@ import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.util.ArraySet;
import android.util.Log;
import android.util.SparseArray;
import android.view.View;
@@ -63,7 +64,7 @@ import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
* handleUpdateState. Callbacks affecting state should use refreshState to trigger another
* state update pass on tile looper.
*/
-public abstract class QSTile<TState extends State> implements Listenable {
+public abstract class QSTile<TState extends State> {
protected final String TAG = "Tile." + getClass().getSimpleName();
protected static final boolean DEBUG = Log.isLoggable("Tile", Log.DEBUG);
@@ -71,6 +72,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
protected final Context mContext;
protected final H mHandler;
protected final Handler mUiHandler = new Handler(Looper.getMainLooper());
+ private final ArraySet<Object> mListeners = new ArraySet<>();
private final ArrayList<Callback> mCallbacks = new ArrayList<>();
protected TState mState = newTileState();
@@ -97,6 +99,24 @@ public abstract class QSTile<TState extends State> implements Listenable {
mHandler = new H(host.getLooper());
}
+ /**
+ * Adds or removes a listening client for the tile. If the tile has one or more
+ * listening client it will go into the listening state.
+ */
+ public void setListening(Object listener, boolean listening) {
+ if (listening) {
+ if (mListeners.add(listener) && mListeners.size() == 1) {
+ if (DEBUG) Log.d(TAG, "setListening " + true);
+ mHandler.obtainMessage(H.SET_LISTENING, 1, 0).sendToTarget();
+ }
+ } else {
+ if (mListeners.remove(listener) && mListeners.size() == 0) {
+ if (DEBUG) Log.d(TAG, "setListening " + false);
+ mHandler.obtainMessage(H.SET_LISTENING, 0, 0).sendToTarget();
+ }
+ }
+ }
+
public String getTileSpec() {
return mTileSpec;
}
@@ -279,6 +299,8 @@ public abstract class QSTile<TState extends State> implements Listenable {
handleRefreshState(null);
}
+ protected abstract void setListening(boolean listening);
+
protected void handleDestroy() {
setListening(false);
mCallbacks.clear();
@@ -312,6 +334,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
private static final int DESTROY = 10;
private static final int CLEAR_STATE = 11;
private static final int REMOVE_CALLBACKS = 12;
+ private static final int SET_LISTENING = 13;
private H(Looper looper) {
super(looper);
@@ -364,6 +387,9 @@ public abstract class QSTile<TState extends State> implements Listenable {
} else if (msg.what == CLEAR_STATE) {
name = "handleClearState";
handleClearState();
+ } else if (msg.what == SET_LISTENING) {
+ name = "setListening";
+ setListening(msg.arg1 != 0);
} else {
throw new IllegalArgumentException("Unknown msg: " + msg.what);
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
index 4accc8b7d1ef..b28d0f200e2a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
@@ -55,6 +55,7 @@ public class QuickQSPanel extends QSPanel {
removeView((View) mTileLayout);
}
mTileLayout = new HeaderTileLayout(context);
+ mTileLayout.setListening(mListening);
addView((View) mTileLayout, 1 /* Between brightness and footer */);
}
@@ -147,6 +148,7 @@ public class QuickQSPanel extends QSPanel {
private final Space mEndSpacer;
protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
+ private boolean mListening;
public HeaderTileLayout(Context context) {
super(context);
@@ -176,6 +178,15 @@ public class QuickQSPanel extends QSPanel {
}
@Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ for (TileRecord record : mRecords) {
+ record.tile.setListening(this, mListening);
+ }
+ }
+
+ @Override
public void addTile(TileRecord tile) {
addView(tile.tileView, getChildCount() - 1 /* Leave icon at end */,
generateLayoutParams());
@@ -183,6 +194,7 @@ public class QuickQSPanel extends QSPanel {
addView(new Space(mContext), getChildCount() - 1 /* Leave icon at end */,
generateSpaceParams());
mRecords.add(tile);
+ tile.tile.setListening(this, mListening);
}
private LayoutParams generateSpaceParams() {
@@ -208,6 +220,7 @@ public class QuickQSPanel extends QSPanel {
// Remove its spacer as well.
removeViewAt(childIndex);
mRecords.remove(tile);
+ tile.tile.setListening(this, false);
}
private int getChildIndex(QSTileBaseView tileView) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
index a578e6c9cb9e..a5a1eaaf6662 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
@@ -25,6 +25,7 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
private int mCellMarginTop;
+ private boolean mListening;
public TileLayout(Context context) {
this(context, null);
@@ -41,18 +42,32 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
return getTop();
}
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ for (TileRecord record : mRecords) {
+ record.tile.setListening(this, mListening);
+ }
+ }
+
public void addTile(TileRecord tile) {
mRecords.add(tile);
+ tile.tile.setListening(this, mListening);
addView(tile.tileView);
}
@Override
public void removeTile(TileRecord tile) {
mRecords.remove(tile);
+ tile.tile.setListening(this, false);
removeView(tile.tileView);
}
public void removeAllViews() {
+ for (TileRecord record : mRecords) {
+ record.tile.setListening(this, false);
+ }
mRecords.clear();
super.removeAllViews();
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java
index fb76918c644d..8ec6a2f66e1a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java
@@ -66,10 +66,10 @@ public class TileQueryHelper {
if (tile == null || !tile.isAvailable()) {
continue;
}
- tile.setListening(true);
+ tile.setListening(this, true);
tile.clearState();
tile.refreshState();
- tile.setListening(false);
+ tile.setListening(this, false);
qsHandler.post(new Runnable() {
@Override
public void run() {
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
index d09587bbd3e4..998f50f205d7 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
@@ -1064,6 +1064,14 @@ public class DividerView extends FrameLayout implements OnTouchListener,
int position = DockedDividerUtils.calculatePositionForBounds(event.initialRect,
mDockSide, mDividerSize);
mEntranceAnimationRunning = true;
+
+ // Insets might not have been fetched yet, so fetch manually if needed.
+ if (mStableInsets.isEmpty()) {
+ SystemServicesProxy.getInstance(mContext).getStableInsets(mStableInsets);
+ mSnapAlgorithm = null;
+ initializeSnapAlgorithm();
+ }
+
resizeStack(position, mSnapAlgorithm.getMiddleTarget().position,
mSnapAlgorithm.getMiddleTarget());
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
index 71f74cdcbdeb..42c9a126ca14 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
@@ -98,6 +98,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
private boolean mDark;
private int mBgTint = 0;
+ private float mBgAlpha = 1f;
/**
* Flag to indicate that the notification has been touched once and the second touch will
@@ -392,6 +393,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
public void setDimmed(boolean dimmed, boolean fade) {
if (mDimmed != dimmed) {
mDimmed = dimmed;
+ resetBackgroundAlpha();
if (fade) {
fadeDimmedBackground();
} else {
@@ -594,14 +596,28 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
mBackgroundAnimator.start();
}
+ protected void updateBackgroundAlpha(float transformationAmount) {
+ mBgAlpha = isChildInGroup() && mDimmed ? transformationAmount : 1f;
+ mBackgroundDimmed.setAlpha(mBgAlpha);
+ }
+
+ protected void resetBackgroundAlpha() {
+ updateBackgroundAlpha(0f /* transformationAmount */);
+ }
+
protected void updateBackground() {
cancelFadeAnimations();
if (shouldHideBackground()) {
mBackgroundDimmed.setVisibility(View.INVISIBLE);
mBackgroundNormal.setVisibility(View.INVISIBLE);
} else if (mDimmed) {
- mBackgroundDimmed.setVisibility(View.VISIBLE);
- mBackgroundNormal.setVisibility(mActivated ? View.VISIBLE : View.INVISIBLE);
+ // When groups are animating to the expanded state from the lockscreen, show the
+ // normal background instead of the dimmed background
+ final boolean dontShowDimmed = isGroupExpansionChanging() && isChildInGroup();
+ mBackgroundDimmed.setVisibility(dontShowDimmed ? View.INVISIBLE : View.VISIBLE);
+ mBackgroundNormal.setVisibility((mActivated || dontShowDimmed)
+ ? View.VISIBLE
+ : View.INVISIBLE);
} else {
mBackgroundDimmed.setVisibility(View.INVISIBLE);
mBackgroundNormal.setVisibility(View.VISIBLE);
@@ -876,6 +892,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
public void reset() {
setTintColor(0);
+ resetBackgroundAlpha();
setShowingLegacyBackground(false);
setBelowSpeedBump(false);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
index 6e9e8303f905..760f4328e4e3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
@@ -18,10 +18,9 @@ package com.android.systemui.statusbar;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
-import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
-import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.annotation.Nullable;
import android.content.Context;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.AnimationDrawable;
@@ -181,6 +180,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
return object.getTranslation();
}
};
+ private OnClickListener mOnClickListener;
public boolean isGroupExpansionChanging() {
if (isChildInGroup()) {
@@ -381,7 +381,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
boolean childInGroup = BaseStatusBar.ENABLE_CHILD_NOTIFICATIONS && isChildInGroup;
mNotificationParent = childInGroup ? parent : null;
mPrivateLayout.setIsChildInGroup(childInGroup);
+ resetBackgroundAlpha();
updateBackgroundForGroupState();
+ updateClickAndFocus();
if (mNotificationParent != null) {
mNotificationParent.updateBackgroundForGroupState();
}
@@ -593,6 +595,24 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
mOnExpandClickListener = onExpandClickListener;
}
+ @Override
+ public void setOnClickListener(@Nullable OnClickListener l) {
+ super.setOnClickListener(l);
+ mOnClickListener = l;
+ updateClickAndFocus();
+ }
+
+ private void updateClickAndFocus() {
+ boolean normalChild = !isChildInGroup() || isGroupExpanded();
+ boolean clickable = mOnClickListener != null && normalChild;
+ if (isFocusable() != normalChild) {
+ setFocusable(normalChild);
+ }
+ if (isClickable() != clickable) {
+ setClickable(clickable);
+ }
+ }
+
public void setHeadsUpManager(HeadsUpManager headsUpManager) {
mHeadsUpManager = headsUpManager;
}
@@ -1053,7 +1073,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
mPrivateLayout.setUserExpanding(userLocked);
if (mIsSummaryWithChildren) {
mChildrenContainer.setUserLocked(userLocked);
- if (userLocked) {
+ if (userLocked || (!userLocked && !isGroupExpanded())) {
updateBackgroundForGroupState();
}
}
@@ -1315,6 +1335,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
if (mChildrenContainer != null) {
mChildrenContainer.setChildrenExpanded(expanded);
}
+ updateClickAndFocus();
}
public static void applyTint(View v, int color) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
index d6c02e481b7d..21fed3c47689 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
@@ -277,15 +277,25 @@ public class NotificationContentView extends FrameLayout {
mContractedChild.animate().cancel();
removeView(mContractedChild);
}
- mPreviousExpandedRemoteInputIntent =
- mExpandedRemoteInput != null ? mExpandedRemoteInput.getPendingIntent() : null;
+ mPreviousExpandedRemoteInputIntent = null;
+ if (mExpandedRemoteInput != null) {
+ mExpandedRemoteInput.onNotificationUpdateOrReset();
+ if (mExpandedRemoteInput.isActive()) {
+ mPreviousExpandedRemoteInputIntent = mExpandedRemoteInput.getPendingIntent();
+ }
+ }
if (mExpandedChild != null) {
mExpandedChild.animate().cancel();
removeView(mExpandedChild);
mExpandedRemoteInput = null;
}
- mPreviousHeadsUpRemoteInputIntent =
- mHeadsUpRemoteInput != null ? mHeadsUpRemoteInput.getPendingIntent() : null;
+ mPreviousHeadsUpRemoteInputIntent = null;
+ if (mHeadsUpRemoteInput != null) {
+ mHeadsUpRemoteInput.onNotificationUpdateOrReset();
+ if (mHeadsUpRemoteInput.isActive()) {
+ mPreviousHeadsUpRemoteInputIntent = mHeadsUpRemoteInput.getPendingIntent();
+ }
+ }
if (mHeadsUpChild != null) {
mHeadsUpChild.animate().cancel();
removeView(mHeadsUpChild);
@@ -462,6 +472,7 @@ public class NotificationContentView extends FrameLayout {
endColor = NotificationUtils.interpolateColors(startColor, endColor,
transformationAmount);
}
+ mContainingNotification.updateBackgroundAlpha(transformationAmount);
mContainingNotification.setContentBackground(endColor, false, this);
}
@@ -594,6 +605,7 @@ public class NotificationContentView extends FrameLayout {
public void updateBackgroundColor(boolean animate) {
int customBackgroundColor = getBackgroundColor(mVisibleType);
+ mContainingNotification.resetBackgroundAlpha();
mContainingNotification.setContentBackground(customBackgroundColor, animate, this);
}
@@ -908,7 +920,7 @@ public class NotificationContentView extends FrameLayout {
view.findViewWithTag(RemoteInputView.VIEW_TAG);
if (existing != null) {
- existing.onNotificationUpdate();
+ existing.onNotificationUpdateOrReset();
}
if (existing == null && hasRemoteInput) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridGroupManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridGroupManager.java
index 8f2c81f0726b..737360750182 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridGroupManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridGroupManager.java
@@ -112,6 +112,10 @@ public class HybridGroupManager {
if (!text.equals(reusableView.getText())) {
reusableView.setText(text);
}
+ String contentDescription = String.format(mContext.getResources().getQuantityString(
+ R.plurals.notification_group_overflow_description, number), number);
+
+ reusableView.setContentDescription(contentDescription);
return reusableView;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index 8d74536c7643..772c76642b9e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -230,6 +230,24 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
mIndicationText.setTextSize(TypedValue.COMPLEX_UNIT_PX,
getResources().getDimensionPixelSize(
com.android.internal.R.dimen.text_size_small_material));
+
+ ViewGroup.LayoutParams lp = mCameraImageView.getLayoutParams();
+ lp.width = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_width);
+ lp.height = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_height);
+ mCameraImageView.setLayoutParams(lp);
+ mCameraImageView.setImageDrawable(mContext.getDrawable(R.drawable.ic_camera_alt_24dp));
+
+ lp = mLockIcon.getLayoutParams();
+ lp.width = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_width);
+ lp.height = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_height);
+ mLockIcon.setLayoutParams(lp);
+ mLockIcon.update(true /* force */);
+
+ lp = mLeftAffordanceView.getLayoutParams();
+ lp.width = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_width);
+ lp.height = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_height);
+ mLeftAffordanceView.setLayoutParams(lp);
+ updateLeftAffordanceIcon();
}
public void setActivityStarter(ActivityStarter activityStarter) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
index e08b945493c9..7db2870620a0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
@@ -58,6 +58,7 @@ public class KeyguardStatusBarView extends RelativeLayout
private KeyguardUserSwitcher mKeyguardUserSwitcher;
private int mSystemIconsSwitcherHiddenExpandedMargin;
+ private View mSystemIconsContainer;
public KeyguardStatusBarView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -67,6 +68,7 @@ public class KeyguardStatusBarView extends RelativeLayout
protected void onFinishInflate() {
super.onFinishInflate();
mSystemIconsSuperContainer = findViewById(R.id.system_icons_super_container);
+ mSystemIconsContainer = findViewById(R.id.system_icons_container);
mMultiUserSwitch = (MultiUserSwitch) findViewById(R.id.multi_user_switch);
mMultiUserAvatar = (ImageView) findViewById(R.id.multi_user_avatar);
mBatteryLevel = (TextView) findViewById(R.id.battery_level);
@@ -79,17 +81,58 @@ public class KeyguardStatusBarView extends RelativeLayout
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- // Respect font size setting.
- mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getResources().getDimensionPixelSize(
- com.android.internal.R.dimen.text_size_small_material));
- mBatteryLevel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
- getResources().getDimensionPixelSize(R.dimen.battery_level_text_size));
-
MarginLayoutParams lp = (MarginLayoutParams) mMultiUserAvatar.getLayoutParams();
lp.width = lp.height = getResources().getDimensionPixelSize(
R.dimen.multi_user_avatar_keyguard_size);
mMultiUserAvatar.setLayoutParams(lp);
+
+ lp = (MarginLayoutParams) mMultiUserSwitch.getLayoutParams();
+ lp.width = getResources().getDimensionPixelSize(
+ R.dimen.multi_user_switch_width_keyguard);
+ lp.setMarginEnd(getResources().getDimensionPixelSize(
+ R.dimen.multi_user_switch_keyguard_margin));
+ mMultiUserSwitch.setLayoutParams(lp);
+
+ lp = (MarginLayoutParams) mSystemIconsSuperContainer.getLayoutParams();
+ lp.height = getResources().getDimensionPixelSize(
+ R.dimen.status_bar_header_height);
+ lp.setMarginStart(getResources().getDimensionPixelSize(
+ R.dimen.system_icons_super_container_margin_start));
+ mSystemIconsSuperContainer.setLayoutParams(lp);
+ mSystemIconsSuperContainer.setPaddingRelative(mSystemIconsSuperContainer.getPaddingStart(),
+ mSystemIconsSuperContainer.getPaddingTop(),
+ getResources().getDimensionPixelSize(R.dimen.system_icons_keyguard_padding_end),
+ mSystemIconsSuperContainer.getPaddingBottom());
+
+ lp = (MarginLayoutParams) mSystemIconsContainer.getLayoutParams();
+ lp.height = getResources().getDimensionPixelSize(
+ R.dimen.status_bar_height);
+ mSystemIconsContainer.setLayoutParams(lp);
+
+ lp = (MarginLayoutParams) mBatteryLevel.getLayoutParams();
+ lp.setMarginStart(
+ getResources().getDimensionPixelSize(R.dimen.header_battery_margin_keyguard));
+ mBatteryLevel.setLayoutParams(lp);
+ mBatteryLevel.setPaddingRelative(mBatteryLevel.getPaddingStart(),
+ mBatteryLevel.getPaddingTop(),
+ getResources().getDimensionPixelSize(R.dimen.battery_level_padding_end),
+ mBatteryLevel.getPaddingBottom());
+ mBatteryLevel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
+ getResources().getDimensionPixelSize(R.dimen.battery_level_text_size));
+
+ // Respect font size setting.
+ mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
+ getResources().getDimensionPixelSize(
+ com.android.internal.R.dimen.text_size_small_material));
+ lp = (MarginLayoutParams) mCarrierLabel.getLayoutParams();
+ lp.setMarginStart(
+ getResources().getDimensionPixelSize(R.dimen.keyguard_carrier_text_margin));
+ mCarrierLabel.setLayoutParams(lp);
+
+ lp = (MarginLayoutParams) getLayoutParams();
+ lp.height = getResources().getDimensionPixelSize(
+ R.dimen.status_bar_header_height_keyguard);
+ setLayoutParams(lp);
}
private void loadDimens() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
index 8e58d14a6e14..ab5ee932f50d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.phone;
import android.content.Context;
+import android.content.res.Configuration;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
@@ -46,10 +47,11 @@ public class LockIcon extends KeyguardAffordanceView {
private boolean mDeviceInteractive;
private boolean mScreenOn;
private boolean mLastScreenOn;
- private final TrustDrawable mTrustDrawable;
+ private TrustDrawable mTrustDrawable;
private final UnlockMethodCache mUnlockMethodCache;
private AccessibilityController mAccessibilityController;
private boolean mHasFingerPrintIcon;
+ private int mDensity;
public LockIcon(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -89,7 +91,24 @@ public class LockIcon extends KeyguardAffordanceView {
update();
}
+ @Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ final int density = newConfig.densityDpi;
+ if (density != mDensity) {
+ mDensity = density;
+ mTrustDrawable.stop();
+ mTrustDrawable = new TrustDrawable(getContext());
+ setBackground(mTrustDrawable);
+ update();
+ }
+ }
+
public void update() {
+ update(false /* force */);
+ }
+
+ public void update(boolean force) {
boolean visible = isShown()
&& KeyguardUpdateMonitor.getInstance(mContext).isDeviceInteractive();
if (visible) {
@@ -103,7 +122,7 @@ public class LockIcon extends KeyguardAffordanceView {
boolean useAdditionalPadding = anyFingerprintIcon;
boolean trustHidden = anyFingerprintIcon;
if (state != mLastState || mDeviceInteractive != mLastDeviceInteractive
- || mScreenOn != mLastScreenOn) {
+ || mScreenOn != mLastScreenOn || force) {
boolean isAnim = true;
int iconRes = getAnimationResForTransition(mLastState, state, mLastDeviceInteractive,
mDeviceInteractive, mLastScreenOn, mScreenOn);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 522f2502e256..5064d8eb1d4c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -1735,7 +1735,7 @@ public class NotificationPanelView extends PanelView implements
public void onQsHeightChanged() {
mQsMaxExpansionHeight = mQsContainer.getDesiredHeight();
- if (mQsExpanded) {
+ if (mQsExpanded && mQsFullyExpanded) {
mQsExpansionHeight = mQsMaxExpansionHeight;
requestScrollerTopPaddingUpdate(false /* animate */);
requestPanelHeightUpdate();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index d9a8a3f99481..de5e06ced860 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -997,7 +997,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private void inflateSignalClusters() {
SignalClusterView signalClusterView = reinflateSignalCluster(mStatusBarView);
mIconController.setSignalCluster(signalClusterView);
- reinflateSignalCluster(mKeyguardStatusView);
+ reinflateSignalCluster(mKeyguardStatusBar);
}
private SignalClusterView reinflateSignalCluster(View view) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
index 40ff05124644..7704a07449ac 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
@@ -227,7 +227,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
updateSendButton();
}
- public void onNotificationUpdate() {
+ public void onNotificationUpdateOrReset() {
boolean sending = mProgressBar.getVisibility() == VISIBLE;
if (sending) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
index a0f1bc2ceaf0..ba191cd1d31e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
@@ -670,6 +670,11 @@ public class NotificationChildrenContainer extends ViewGroup {
if (mNotificationHeader != null) {
mNotificationHeader.setExpanded(childrenExpanded);
}
+ final int count = mChildren.size();
+ for (int childIdx = 0; childIdx < count; childIdx++) {
+ ExpandableNotificationRow child = mChildren.get(childIdx);
+ child.setChildrenExpanded(childrenExpanded, false);
+ }
}
public void setNotificationParent(ExpandableNotificationRow parent) {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
index fda57eb188ff..a67299e95327 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
@@ -48,6 +48,7 @@ import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
+import android.widget.RadioGroup;
import android.widget.TextView;
import com.android.internal.logging.MetricsLogger;
@@ -102,6 +103,8 @@ public class ZenModePanel extends LinearLayout {
private TextView mZenIntroductionCustomize;
protected LinearLayout mZenConditions;
private TextView mZenAlarmWarning;
+ private RadioGroup mZenRadioGroup;
+ private LinearLayout mZenRadioGroupContent;
private Callback mCallback;
private ZenModeController mController;
@@ -117,7 +120,6 @@ public class ZenModePanel extends LinearLayout {
private Condition mSessionExitCondition;
private Condition[] mConditions;
private Condition mTimeCondition;
- private Condition mTimeUntilAlarmCondition;
private boolean mVoiceCapable;
public ZenModePanel(Context context, AttributeSet attrs) {
@@ -190,6 +192,8 @@ public class ZenModePanel extends LinearLayout {
mZenConditions = (LinearLayout) findViewById(R.id.zen_conditions);
mZenAlarmWarning = (TextView) findViewById(R.id.zen_alarm_warning);
+ mZenRadioGroup = (RadioGroup) findViewById(R.id.zen_radio_buttons);
+ mZenRadioGroupContent = (LinearLayout) findViewById(R.id.zen_radio_buttons_content);
}
@Override
@@ -306,7 +310,12 @@ public class ZenModePanel extends LinearLayout {
protected void addZenConditions(int count) {
for (int i = 0; i < count; i++) {
- mZenConditions.addView(mInflater.inflate(R.layout.zen_mode_condition, this, false));
+ final View rb = mInflater.inflate(R.layout.zen_mode_button, this, false);
+ rb.setId(i);
+ mZenRadioGroup.addView(rb);
+ final View rbc = mInflater.inflate(R.layout.zen_mode_condition, this, false);
+ rbc.setId(i + count);
+ mZenRadioGroupContent.addView(rbc);
}
}
@@ -385,7 +394,7 @@ public class ZenModePanel extends LinearLayout {
final ConditionTag tag = getConditionTagAt(i);
if (tag != null) {
if (sameConditionId(tag.condition, mExitCondition)) {
- bind(exitCondition, mZenConditions.getChildAt(i), i);
+ bind(exitCondition, mZenRadioGroupContent.getChildAt(i), i);
}
}
}
@@ -481,11 +490,11 @@ public class ZenModePanel extends LinearLayout {
final int conditionCount = mConditions == null ? 0 : mConditions.length;
if (DEBUG) Log.d(mTag, "handleUpdateConditions conditionCount=" + conditionCount);
// forever
- bind(forever(), mZenConditions.getChildAt(FOREVER_CONDITION_INDEX),
+ bind(forever(), mZenRadioGroupContent.getChildAt(FOREVER_CONDITION_INDEX),
FOREVER_CONDITION_INDEX);
// countdown
if (mCountdownConditionSupported && mTimeCondition != null) {
- bind(mTimeCondition, mZenConditions.getChildAt(COUNTDOWN_CONDITION_INDEX),
+ bind(mTimeCondition, mZenRadioGroupContent.getChildAt(COUNTDOWN_CONDITION_INDEX),
COUNTDOWN_CONDITION_INDEX);
}
// countdown until alarm
@@ -493,7 +502,7 @@ public class ZenModePanel extends LinearLayout {
Condition nextAlarmCondition = getTimeUntilNextAlarmCondition();
if (nextAlarmCondition != null) {
bind(nextAlarmCondition,
- mZenConditions.getChildAt(COUNTDOWN_ALARM_CONDITION_INDEX),
+ mZenRadioGroupContent.getChildAt(COUNTDOWN_ALARM_CONDITION_INDEX),
COUNTDOWN_ALARM_CONDITION_INDEX);
}
}
@@ -541,22 +550,22 @@ public class ZenModePanel extends LinearLayout {
}
private ConditionTag getConditionTagAt(int index) {
- return (ConditionTag) mZenConditions.getChildAt(index).getTag();
+ return (ConditionTag) mZenRadioGroupContent.getChildAt(index).getTag();
}
private int getVisibleConditions() {
int rt = 0;
- final int N = mZenConditions.getChildCount();
+ final int N = mZenRadioGroupContent.getChildCount();
for (int i = 0; i < N; i++) {
- rt += mZenConditions.getChildAt(i).getVisibility() == VISIBLE ? 1 : 0;
+ rt += mZenRadioGroupContent.getChildAt(i).getVisibility() == VISIBLE ? 1 : 0;
}
return rt;
}
private void hideAllConditions() {
- final int N = mZenConditions.getChildCount();
+ final int N = mZenRadioGroupContent.getChildCount();
for (int i = 0; i < N; i++) {
- mZenConditions.getChildAt(i).setVisibility(GONE);
+ mZenRadioGroupContent.getChildAt(i).setVisibility(GONE);
}
}
@@ -576,27 +585,14 @@ public class ZenModePanel extends LinearLayout {
if (DEBUG) Log.d(mTag, "Selecting a default");
final int favoriteIndex = mPrefs.getMinuteIndex();
if (favoriteIndex == -1 || !mCountdownConditionSupported) {
- setChecked(foreverTag.rb, true);
+ foreverTag.rb.setChecked(true);
} else {
mTimeCondition = ZenModeConfig.toTimeCondition(mContext,
MINUTE_BUCKETS[favoriteIndex], ActivityManager.getCurrentUser());
mBucketIndex = favoriteIndex;
- bind(mTimeCondition, mZenConditions.getChildAt(COUNTDOWN_CONDITION_INDEX),
+ bind(mTimeCondition, mZenRadioGroupContent.getChildAt(COUNTDOWN_CONDITION_INDEX),
COUNTDOWN_CONDITION_INDEX);
- setChecked(getConditionTagAt(COUNTDOWN_CONDITION_INDEX).rb, true);
- }
- }
-
- private void setChecked(RadioButton rb, boolean checked) {
- final int N = getVisibleConditions();
- for (int i = 0; i < N; i++) {
- final ConditionTag tag = getConditionTagAt(i);
- if (tag != null && tag.rb.isChecked() && !Objects.equals(tag.rb, rb)) {
- tag.rb.setChecked(false);
- }
- }
- if (rb.isChecked() != checked) {
- rb.setChecked(checked);
+ getConditionTagAt(COUNTDOWN_CONDITION_INDEX).rb.setChecked(true);
}
}
@@ -616,18 +612,18 @@ public class ZenModePanel extends LinearLayout {
row.setTag(tag);
final boolean first = tag.rb == null;
if (tag.rb == null) {
- tag.rb = (RadioButton) row.findViewById(android.R.id.checkbox);
+ tag.rb = (RadioButton) mZenRadioGroup.getChildAt(rowId);
}
tag.condition = condition;
final Uri conditionId = getConditionId(tag.condition);
- if (DEBUG) Log.d(mTag, "bind i=" + mZenConditions.indexOfChild(row) + " first=" + first
- + " condition=" + conditionId);
+ if (DEBUG) Log.d(mTag, "bind i=" + mZenRadioGroupContent.indexOfChild(row) + " first="
+ + first + " condition=" + conditionId);
tag.rb.setEnabled(enabled);
tag.rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (mExpanded && isChecked) {
- setChecked(tag.rb, isChecked);
+ tag.rb.setChecked(true);
if (DEBUG) Log.d(mTag, "onCheckedChanged " + conditionId);
MetricsLogger.action(mContext, MetricsEvent.QS_DND_CONDITION_SELECT);
select(tag.condition);
@@ -678,7 +674,7 @@ public class ZenModePanel extends LinearLayout {
tag.lines.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- setChecked(tag.rb, true);
+ tag.rb.setChecked(true);
}
});
@@ -767,7 +763,7 @@ public class ZenModePanel extends LinearLayout {
}
mTimeCondition = newCondition;
bind(mTimeCondition, row, rowId);
- setChecked(tag.rb, true);
+ tag.rb.setChecked(true);
select(mTimeCondition);
announceConditionSelection(tag);
}
diff --git a/services/core/java/com/android/server/AttributeCache.java b/services/core/java/com/android/server/AttributeCache.java
index 427dbc091ced..57f18c086c56 100644
--- a/services/core/java/com/android/server/AttributeCache.java
+++ b/services/core/java/com/android/server/AttributeCache.java
@@ -24,10 +24,12 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.os.UserHandle;
+import android.util.ArrayMap;
import android.util.SparseArray;
-import java.util.HashMap;
-import java.util.WeakHashMap;
+import com.android.internal.annotations.GuardedBy;
+
+import java.lang.ref.WeakReference;
/**
* TODO: This should be better integrated into the system so it doesn't need
@@ -35,17 +37,18 @@ import java.util.WeakHashMap;
*/
public final class AttributeCache {
private static AttributeCache sInstance = null;
-
+
private final Context mContext;
- private final WeakHashMap<String, Package> mPackages =
- new WeakHashMap<String, Package>();
+
+ @GuardedBy("this")
+ private final ArrayMap<String, WeakReference<Package>> mPackages = new ArrayMap<>();
+ @GuardedBy("this")
private final Configuration mConfiguration = new Configuration();
-
+
public final static class Package {
public final Context context;
- private final SparseArray<HashMap<int[], Entry>> mMap
- = new SparseArray<HashMap<int[], Entry>>();
-
+ private final SparseArray<ArrayMap<int[], Entry>> mMap = new SparseArray<>();
+
public Package(Context c) {
context = c;
}
@@ -59,6 +62,12 @@ public final class AttributeCache {
context = c;
array = ta;
}
+
+ void recycle() {
+ if (array != null) {
+ array.recycle();
+ }
+ }
}
public static void init(Context context) {
@@ -74,13 +83,27 @@ public final class AttributeCache {
public AttributeCache(Context context) {
mContext = context;
}
-
+
public void removePackage(String packageName) {
synchronized (this) {
- mPackages.remove(packageName);
+ final WeakReference<Package> ref = mPackages.remove(packageName);
+ final Package pkg = (ref != null) ? ref.get() : null;
+ if (pkg != null) {
+ if (pkg.mMap != null) {
+ for (int i = 0; i < pkg.mMap.size(); i++) {
+ final ArrayMap<int[], Entry> map = pkg.mMap.valueAt(i);
+ for (int j = 0; j < map.size(); j++) {
+ map.valueAt(j).recycle();
+ }
+ }
+ }
+
+ final Resources res = pkg.context.getResources();
+ res.flushLayoutCache();
+ }
}
}
-
+
public void updateConfiguration(Configuration config) {
synchronized (this) {
int changes = mConfiguration.updateFrom(config);
@@ -97,8 +120,9 @@ public final class AttributeCache {
public Entry get(String packageName, int resId, int[] styleable, int userId) {
synchronized (this) {
- Package pkg = mPackages.get(packageName);
- HashMap<int[], Entry> map = null;
+ WeakReference<Package> ref = mPackages.get(packageName);
+ Package pkg = (ref != null) ? ref.get() : null;
+ ArrayMap<int[], Entry> map = null;
Entry ent = null;
if (pkg != null) {
map = pkg.mMap.get(resId);
@@ -120,11 +144,11 @@ public final class AttributeCache {
return null;
}
pkg = new Package(context);
- mPackages.put(packageName, pkg);
+ mPackages.put(packageName, new WeakReference<>(pkg));
}
if (map == null) {
- map = new HashMap<int[], Entry>();
+ map = new ArrayMap<>();
pkg.mMap.put(resId, map);
}
diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java
index 4db60d536bdd..7f3eb15c6ebf 100644
--- a/services/core/java/com/android/server/VibratorService.java
+++ b/services/core/java/com/android/server/VibratorService.java
@@ -306,7 +306,6 @@ public class VibratorService extends IVibratorService.Stub
synchronized (mVibrations) {
removeVibrationLocked(token);
doCancelVibrateLocked();
- mCurrentVibration = vib;
addToPreviousVibrationsLocked(vib);
startVibrationLocked(vib);
}
@@ -368,7 +367,6 @@ public class VibratorService extends IVibratorService.Stub
} else {
// A negative repeat means that this pattern is not meant
// to repeat. Treat it like a simple vibration.
- mCurrentVibration = vib;
startVibrationLocked(vib);
}
addToPreviousVibrationsLocked(vib);
@@ -443,8 +441,7 @@ public class VibratorService extends IVibratorService.Stub
mCurrentVibration = null;
return;
}
- mCurrentVibration = mVibrations.getFirst();
- startVibrationLocked(mCurrentVibration);
+ startVibrationLocked(mVibrations.getFirst());
}
// Lock held on mVibrations
@@ -466,7 +463,9 @@ public class VibratorService extends IVibratorService.Stub
mode = mAppOpsService.startOperation(AppOpsManager.getToken(mAppOpsService),
AppOpsManager.OP_VIBRATE, vib.mUid, vib.mOpPkg);
}
- if (mode != AppOpsManager.MODE_ALLOWED) {
+ if (mode == AppOpsManager.MODE_ALLOWED) {
+ mCurrentVibration = vib;
+ } else {
if (mode == AppOpsManager.MODE_ERRORED) {
Slog.w(TAG, "Would be an error: vibrate from uid " + vib.mUid);
}
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 6a8c8b053ea7..dcd9b0c7e643 100755
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -2201,11 +2201,11 @@ public final class ActiveServices {
// If the app is null, then it was probably removed because the process died,
// otherwise wtf
if (r.app != null) {
- Slog.wtfStack(TAG, "Service done with onDestroy, but not inDestroying: "
+ Slog.w(TAG, "Service done with onDestroy, but not inDestroying: "
+ r + ", app=" + r.app);
}
} else if (r.executeNesting != 1) {
- Slog.wtfStack(TAG, "Service done with onDestroy, but executeNesting="
+ Slog.w(TAG, "Service done with onDestroy, but executeNesting="
+ r.executeNesting + ": " + r);
// Fake it to keep from ANR due to orphaned entry.
r.executeNesting = 1;
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 264a495959a9..9229b28e6cb7 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -199,6 +199,7 @@ import android.provider.Settings;
import android.service.voice.IVoiceInteractionSession;
import android.service.voice.VoiceInteractionManagerInternal;
import android.service.voice.VoiceInteractionSession;
+import android.telecom.TelecomManager;
import android.text.format.DateUtils;
import android.text.format.Time;
import android.text.style.SuggestionSpan;
@@ -10167,6 +10168,10 @@ public final class ActivityManagerService extends ActivityManagerNative
mStackSupervisor.setLockTaskModeLocked(null, ActivityManager.LOCK_TASK_MODE_NONE,
"stopLockTask", true);
}
+ TelecomManager tm = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
+ if (tm != null) {
+ tm.showInCallScreen(false);
+ }
} finally {
Binder.restoreCallingIdentity(ident);
}
@@ -11267,6 +11272,9 @@ public final class ActivityManagerService extends ActivityManagerNative
} catch (RemoteException e) {
Log.w(TAG, "Content provider dead retrieving " + uri, e);
return null;
+ } catch (Exception e) {
+ Log.w(TAG, "Exception while determining type of " + uri, e);
+ return null;
} finally {
// We need to clear the identity to call removeContentProviderExternalUnchecked
if (!clearedIdentity) {
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index ba044cc4c2a1..b77381c6bae2 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -73,7 +73,6 @@ import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE;
import static com.android.server.am.ActivityRecord.STARTING_WINDOW_REMOVED;
import static com.android.server.am.ActivityRecord.STARTING_WINDOW_SHOWN;
import static com.android.server.am.ActivityStackSupervisor.FindTaskResult;
-import static com.android.server.am.ActivityStackSupervisor.MOVING;
import static com.android.server.am.ActivityStackSupervisor.ON_TOP;
import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS;
import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_CLOSE;
@@ -4464,6 +4463,7 @@ final class ActivityStack {
// Short circuit: if the two configurations are equal (the common case), then there is
// nothing to do.
final Configuration newConfig = mService.mConfiguration;
+ r.task.sanitizeOverrideConfiguration(newConfig);
final Configuration taskConfig = r.task.mOverrideConfig;
if (r.configuration.equals(newConfig)
&& r.taskConfigOverride.equals(taskConfig)
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 197d9eccefa0..637061d09023 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -3525,7 +3525,9 @@ public final class ActivityStackSupervisor implements DisplayListener {
}
void showLockTaskToast() {
- mLockTaskNotify.showToast(mLockTaskModeState);
+ if (mLockTaskNotify != null) {
+ mLockTaskNotify.showToast(mLockTaskModeState);
+ }
}
void showLockTaskEscapeMessageLocked(TaskRecord task) {
diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java
index 8e9af40ba924..578fc44e7832 100644
--- a/services/core/java/com/android/server/am/TaskRecord.java
+++ b/services/core/java/com/android/server/am/TaskRecord.java
@@ -73,6 +73,8 @@ import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER;
import static android.content.pm.ActivityInfo.RESIZE_MODE_CROP_WINDOWS;
import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE;
import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
+import static android.content.res.Configuration.SCREENLAYOUT_LONG_MASK;
+import static android.content.res.Configuration.SCREENLAYOUT_SIZE_MASK;
import static android.provider.Settings.Secure.USER_SETUP_COMPLETE;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ADD_REMOVE;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK;
@@ -1574,6 +1576,29 @@ final class TaskRecord {
return bounds;
}
+ /**
+ * Update fields that are not overridden for task from global configuration.
+ *
+ * @param globalConfig global configuration to update from.
+ */
+ void sanitizeOverrideConfiguration(Configuration globalConfig) {
+ // If it's fullscreen, the override config should be empty and we should leave it alone.
+ if (mFullscreen) {
+ return;
+ }
+
+ // screenLayout field is set in #calculateOverrideConfig but only part of it is really
+ // overridden - aspect ratio and size. Other flags (like layout direction) can be updated
+ // separately in global config and they also must be updated in override config.
+ int overrideScreenLayout = mOverrideConfig.screenLayout;
+ int newScreenLayout = globalConfig.screenLayout;
+ newScreenLayout = (newScreenLayout & ~SCREENLAYOUT_LONG_MASK)
+ | (overrideScreenLayout & SCREENLAYOUT_LONG_MASK);
+ newScreenLayout = (newScreenLayout & ~SCREENLAYOUT_SIZE_MASK)
+ | (overrideScreenLayout & SCREENLAYOUT_SIZE_MASK);
+ mOverrideConfig.screenLayout = newScreenLayout;
+ }
+
static Rect validateBounds(Rect bounds) {
if (bounds != null && bounds.isEmpty()) {
Slog.wtf(TAG, "Received strange task bounds: " + bounds, new Throwable());
diff --git a/services/core/java/com/android/server/job/JobPackageTracker.java b/services/core/java/com/android/server/job/JobPackageTracker.java
index eb5edd38d8a9..ba96b7494bba 100644
--- a/services/core/java/com/android/server/job/JobPackageTracker.java
+++ b/services/core/java/com/android/server/job/JobPackageTracker.java
@@ -105,6 +105,8 @@ public final class JobPackageTracker {
final long mStartElapsedTime;
final long mStartClockTime;
long mSummedTime;
+ int mMaxTotalActive;
+ int mMaxFgActive;
public DataSet(DataSet otherTimes) {
mStartUptimeTime = otherTimes.mStartUptimeTime;
@@ -257,6 +259,12 @@ public final class JobPackageTracker {
}
}
}
+ if (mMaxTotalActive > out.mMaxTotalActive) {
+ out.mMaxTotalActive = mMaxTotalActive;
+ }
+ if (mMaxFgActive > out.mMaxFgActive) {
+ out.mMaxFgActive = mMaxFgActive;
+ }
}
void printDuration(PrintWriter pw, long period, long duration, int count, String suffix) {
@@ -317,6 +325,9 @@ public final class JobPackageTracker {
pw.println();
}
}
+ pw.print(prefix); pw.print(" Max concurrency: ");
+ pw.print(mMaxTotalActive); pw.print(" total, ");
+ pw.print(mMaxFgActive); pw.println(" foreground");
}
}
@@ -366,6 +377,15 @@ public final class JobPackageTracker {
addEvent(EVENT_STOP_JOB, job.getSourceUid(), job.getBatteryName());
}
+ public void noteConcurrency(int totalActive, int fgActive) {
+ if (totalActive > mCurDataSet.mMaxTotalActive) {
+ mCurDataSet.mMaxTotalActive = totalActive;
+ }
+ if (fgActive > mCurDataSet.mMaxFgActive) {
+ mCurDataSet.mMaxFgActive = fgActive;
+ }
+ }
+
public float getLoadFactor(JobStatus job) {
final int uid = job.getSourceUid();
final String pkg = job.getSourcePackageName();
diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java
index 1b8eccb431f5..27b3aa2280c0 100644
--- a/services/core/java/com/android/server/job/JobSchedulerService.java
+++ b/services/core/java/com/android/server/job/JobSchedulerService.java
@@ -23,6 +23,8 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
@@ -37,6 +39,7 @@ import android.app.job.JobService;
import android.app.job.IJobScheduler;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -44,6 +47,7 @@ import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.database.ContentObserver;
import android.net.Uri;
import android.os.BatteryStats;
import android.os.Binder;
@@ -57,6 +61,8 @@ import android.os.ResultReceiver;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.KeyValueListParser;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseIntArray;
@@ -98,17 +104,12 @@ public final class JobSchedulerService extends com.android.server.SystemService
public static final boolean DEBUG = false;
/** The maximum number of concurrent jobs we run at one time. */
- private static final int MAX_JOB_CONTEXTS_COUNT = 12;
- /** The number of MAX_JOB_CONTEXTS_COUNT we reserve for the foreground app. */
- private static final int FG_JOB_CONTEXTS_COUNT = 4;
+ private static final int MAX_JOB_CONTEXTS_COUNT = 16;
/** Enforce a per-app limit on scheduled jobs? */
private static final boolean ENFORCE_MAX_JOBS = true;
/** The maximum number of jobs that we allow an unprivileged app to schedule */
private static final int MAX_JOBS_PER_APP = 100;
- /** This is the job execution factor that is considered to be heavy use of the system. */
- private static final float HEAVY_USE_FACTOR = .9f;
- /** This is the job execution factor that is considered to be moderate use of the system. */
- private static final float MODERATE_USE_FACTOR = .5f;
+
/** Global local for all job scheduler state. */
final Object mLock = new Object();
@@ -122,34 +123,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
static final int MSG_STOP_JOB = 2;
static final int MSG_CHECK_JOB_GREEDY = 3;
- // Policy constants
- /**
- * Minimum # of idle jobs that must be ready in order to force the JMS to schedule things
- * early.
- */
- static final int MIN_IDLE_COUNT = 1;
- /**
- * Minimum # of charging jobs that must be ready in order to force the JMS to schedule things
- * early.
- */
- static final int MIN_CHARGING_COUNT = 1;
- /**
- * Minimum # of connectivity jobs that must be ready in order to force the JMS to schedule
- * things early.
- */
- static final int MIN_CONNECTIVITY_COUNT = 1; // Run connectivity jobs as soon as ready.
- /**
- * Minimum # of content trigger jobs that must be ready in order to force the JMS to schedule
- * things early.
- */
- static final int MIN_CONTENT_COUNT = 1;
- /**
- * Minimum # of jobs (with no particular constraints) for which the JMS will be happy running
- * some work early.
- * This is correlated with the amount of batching we'll be able to do.
- */
- static final int MIN_READY_JOBS_COUNT = 2;
-
/**
* Track Services that have currently active or pending jobs. The index is provided by
* {@link JobStatus#getServiceToken()}
@@ -186,7 +159,7 @@ public final class JobSchedulerService extends com.android.server.SystemService
* Current limit on the number of concurrent JobServiceContext entries we want to
* keep actively running a job.
*/
- int mMaxActiveJobs = MAX_JOB_CONTEXTS_COUNT - FG_JOB_CONTEXTS_COUNT;
+ int mMaxActiveJobs = 1;
/**
* Which uids are currently in the foreground.
@@ -212,6 +185,211 @@ public final class JobSchedulerService extends com.android.server.SystemService
int[] mTmpAssignPreferredUidForContext = new int[MAX_JOB_CONTEXTS_COUNT];
/**
+ * All times are in milliseconds. These constants are kept synchronized with the system
+ * global Settings. Any access to this class or its fields should be done while
+ * holding the JobSchedulerService.mLock lock.
+ */
+ private final class Constants extends ContentObserver {
+ // Key names stored in the settings value.
+ private static final String KEY_MIN_IDLE_COUNT = "min_idle_count";
+ private static final String KEY_MIN_CHARGING_COUNT = "min_charging_count";
+ private static final String KEY_MIN_CONNECTIVITY_COUNT = "min_connectivity_count";
+ private static final String KEY_MIN_CONTENT_COUNT = "min_content_count";
+ private static final String KEY_MIN_READY_JOBS_COUNT = "min_ready_jobs_count";
+ private static final String KEY_HEAVY_USE_FACTOR = "heavy_use_factor";
+ private static final String KEY_MODERATE_USE_FACTOR = "moderate_use_factor";
+ private static final String KEY_FG_JOB_COUNT = "fg_job_count";
+ private static final String KEY_BG_NORMAL_JOB_COUNT = "bg_normal_job_count";
+ private static final String KEY_BG_MODERATE_JOB_COUNT = "bg_moderate_job_count";
+ private static final String KEY_BG_LOW_JOB_COUNT = "bg_low_job_count";
+ private static final String KEY_BG_CRITICAL_JOB_COUNT = "bg_critical_job_count";
+
+ private static final int DEFAULT_MIN_IDLE_COUNT = 1;
+ private static final int DEFAULT_MIN_CHARGING_COUNT = 1;
+ private static final int DEFAULT_MIN_CONNECTIVITY_COUNT = 1;
+ private static final int DEFAULT_MIN_CONTENT_COUNT = 1;
+ private static final int DEFAULT_MIN_READY_JOBS_COUNT = 1;
+ private static final float DEFAULT_HEAVY_USE_FACTOR = .9f;
+ private static final float DEFAULT_MODERATE_USE_FACTOR = .5f;
+ private static final int DEFAULT_FG_JOB_COUNT = 4;
+ private static final int DEFAULT_BG_NORMAL_JOB_COUNT = 6;
+ private static final int DEFAULT_BG_MODERATE_JOB_COUNT = 4;
+ private static final int DEFAULT_BG_LOW_JOB_COUNT = 2;
+ private static final int DEFAULT_BG_CRITICAL_JOB_COUNT = 1;
+
+ /**
+ * Minimum # of idle jobs that must be ready in order to force the JMS to schedule things
+ * early.
+ */
+ int MIN_IDLE_COUNT = DEFAULT_MIN_IDLE_COUNT;
+ /**
+ * Minimum # of charging jobs that must be ready in order to force the JMS to schedule
+ * things early.
+ */
+ int MIN_CHARGING_COUNT = DEFAULT_MIN_CHARGING_COUNT;
+ /**
+ * Minimum # of connectivity jobs that must be ready in order to force the JMS to schedule
+ * things early. 1 == Run connectivity jobs as soon as ready.
+ */
+ int MIN_CONNECTIVITY_COUNT = DEFAULT_MIN_CONNECTIVITY_COUNT;
+ /**
+ * Minimum # of content trigger jobs that must be ready in order to force the JMS to
+ * schedule things early.
+ */
+ int MIN_CONTENT_COUNT = DEFAULT_MIN_CONTENT_COUNT;
+ /**
+ * Minimum # of jobs (with no particular constraints) for which the JMS will be happy
+ * running some work early. This (and thus the other min counts) is now set to 1, to
+ * prevent any batching at this level. Since we now do batching through doze, that is
+ * a much better mechanism.
+ */
+ int MIN_READY_JOBS_COUNT = DEFAULT_MIN_READY_JOBS_COUNT;
+ /**
+ * This is the job execution factor that is considered to be heavy use of the system.
+ */
+ float HEAVY_USE_FACTOR = DEFAULT_HEAVY_USE_FACTOR;
+ /**
+ * This is the job execution factor that is considered to be moderate use of the system.
+ */
+ float MODERATE_USE_FACTOR = DEFAULT_MODERATE_USE_FACTOR;
+ /**
+ * The number of MAX_JOB_CONTEXTS_COUNT we reserve for the foreground app.
+ */
+ int FG_JOB_COUNT = DEFAULT_FG_JOB_COUNT;
+ /**
+ * The maximum number of background jobs we allow when the system is in a normal
+ * memory state.
+ */
+ int BG_NORMAL_JOB_COUNT = DEFAULT_BG_NORMAL_JOB_COUNT;
+ /**
+ * The maximum number of background jobs we allow when the system is in a moderate
+ * memory state.
+ */
+ int BG_MODERATE_JOB_COUNT = DEFAULT_BG_MODERATE_JOB_COUNT;
+ /**
+ * The maximum number of background jobs we allow when the system is in a low
+ * memory state.
+ */
+ int BG_LOW_JOB_COUNT = DEFAULT_BG_LOW_JOB_COUNT;
+ /**
+ * The maximum number of background jobs we allow when the system is in a critical
+ * memory state.
+ */
+ int BG_CRITICAL_JOB_COUNT = DEFAULT_BG_CRITICAL_JOB_COUNT;
+
+ private ContentResolver mResolver;
+ private final KeyValueListParser mParser = new KeyValueListParser(',');
+
+ public Constants(Handler handler) {
+ super(handler);
+ }
+
+ public void start(ContentResolver resolver) {
+ mResolver = resolver;
+ mResolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.JOB_SCHEDULER_CONSTANTS), false, this);
+ updateConstants();
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ updateConstants();
+ }
+
+ private void updateConstants() {
+ synchronized (mLock) {
+ try {
+ mParser.setString(Settings.Global.getString(mResolver,
+ Settings.Global.ALARM_MANAGER_CONSTANTS));
+ } catch (IllegalArgumentException e) {
+ // Failed to parse the settings string, log this and move on
+ // with defaults.
+ Slog.e(TAG, "Bad device idle settings", e);
+ }
+
+ MIN_IDLE_COUNT = mParser.getInt(KEY_MIN_IDLE_COUNT,
+ DEFAULT_MIN_IDLE_COUNT);
+ MIN_CHARGING_COUNT = mParser.getInt(KEY_MIN_CHARGING_COUNT,
+ DEFAULT_MIN_CHARGING_COUNT);
+ MIN_CONNECTIVITY_COUNT = mParser.getInt(KEY_MIN_CONNECTIVITY_COUNT,
+ DEFAULT_MIN_CONNECTIVITY_COUNT);
+ MIN_CONTENT_COUNT = mParser.getInt(KEY_MIN_CONTENT_COUNT,
+ DEFAULT_MIN_CONTENT_COUNT);
+ MIN_READY_JOBS_COUNT = mParser.getInt(KEY_MIN_READY_JOBS_COUNT,
+ DEFAULT_MIN_READY_JOBS_COUNT);
+ HEAVY_USE_FACTOR = mParser.getFloat(KEY_HEAVY_USE_FACTOR,
+ DEFAULT_HEAVY_USE_FACTOR);
+ MODERATE_USE_FACTOR = mParser.getFloat(KEY_MODERATE_USE_FACTOR,
+ DEFAULT_MODERATE_USE_FACTOR);
+ FG_JOB_COUNT = mParser.getInt(KEY_FG_JOB_COUNT,
+ DEFAULT_FG_JOB_COUNT);
+ BG_NORMAL_JOB_COUNT = mParser.getInt(KEY_BG_NORMAL_JOB_COUNT,
+ DEFAULT_BG_NORMAL_JOB_COUNT);
+ if ((FG_JOB_COUNT+BG_NORMAL_JOB_COUNT) > MAX_JOB_CONTEXTS_COUNT) {
+ BG_NORMAL_JOB_COUNT = MAX_JOB_CONTEXTS_COUNT - FG_JOB_COUNT;
+ }
+ BG_MODERATE_JOB_COUNT = mParser.getInt(KEY_BG_MODERATE_JOB_COUNT,
+ DEFAULT_BG_MODERATE_JOB_COUNT);
+ if ((FG_JOB_COUNT+BG_MODERATE_JOB_COUNT) > MAX_JOB_CONTEXTS_COUNT) {
+ BG_MODERATE_JOB_COUNT = MAX_JOB_CONTEXTS_COUNT - FG_JOB_COUNT;
+ }
+ BG_LOW_JOB_COUNT = mParser.getInt(KEY_BG_LOW_JOB_COUNT,
+ DEFAULT_BG_LOW_JOB_COUNT);
+ if ((FG_JOB_COUNT+BG_LOW_JOB_COUNT) > MAX_JOB_CONTEXTS_COUNT) {
+ BG_LOW_JOB_COUNT = MAX_JOB_CONTEXTS_COUNT - FG_JOB_COUNT;
+ }
+ BG_CRITICAL_JOB_COUNT = mParser.getInt(KEY_BG_CRITICAL_JOB_COUNT,
+ DEFAULT_BG_CRITICAL_JOB_COUNT);
+ if ((FG_JOB_COUNT+BG_CRITICAL_JOB_COUNT) > MAX_JOB_CONTEXTS_COUNT) {
+ BG_CRITICAL_JOB_COUNT = MAX_JOB_CONTEXTS_COUNT - FG_JOB_COUNT;
+ }
+ }
+ }
+
+ void dump(PrintWriter pw) {
+ pw.println(" Settings:");
+
+ pw.print(" "); pw.print(KEY_MIN_IDLE_COUNT); pw.print("=");
+ pw.print(MIN_IDLE_COUNT); pw.println();
+
+ pw.print(" "); pw.print(KEY_MIN_CHARGING_COUNT); pw.print("=");
+ pw.print(MIN_CHARGING_COUNT); pw.println();
+
+ pw.print(" "); pw.print(KEY_MIN_CONNECTIVITY_COUNT); pw.print("=");
+ pw.print(MIN_CONNECTIVITY_COUNT); pw.println();
+
+ pw.print(" "); pw.print(KEY_MIN_CONTENT_COUNT); pw.print("=");
+ pw.print(MIN_CONTENT_COUNT); pw.println();
+
+ pw.print(" "); pw.print(KEY_MIN_READY_JOBS_COUNT); pw.print("=");
+ pw.print(MIN_READY_JOBS_COUNT); pw.println();
+
+ pw.print(" "); pw.print(KEY_HEAVY_USE_FACTOR); pw.print("=");
+ pw.print(HEAVY_USE_FACTOR); pw.println();
+
+ pw.print(" "); pw.print(KEY_MODERATE_USE_FACTOR); pw.print("=");
+ pw.print(MODERATE_USE_FACTOR); pw.println();
+
+ pw.print(" "); pw.print(KEY_FG_JOB_COUNT); pw.print("=");
+ pw.print(FG_JOB_COUNT); pw.println();
+
+ pw.print(" "); pw.print(KEY_BG_NORMAL_JOB_COUNT); pw.print("=");
+ pw.print(BG_NORMAL_JOB_COUNT); pw.println();
+
+ pw.print(" "); pw.print(KEY_BG_MODERATE_JOB_COUNT); pw.print("=");
+ pw.print(BG_MODERATE_JOB_COUNT); pw.println();
+
+ pw.print(" "); pw.print(KEY_BG_LOW_JOB_COUNT); pw.print("=");
+ pw.print(BG_LOW_JOB_COUNT); pw.println();
+
+ pw.print(" "); pw.print(KEY_BG_CRITICAL_JOB_COUNT); pw.print("=");
+ pw.print(BG_CRITICAL_JOB_COUNT); pw.println();
+ }
+ }
+
+ final Constants mConstants;
+
+ /**
* Cleans up outstanding jobs when a package is removed. Even if it's being replaced later we
* still clean up. On reinstall the package will have a new uid.
*/
@@ -484,11 +662,13 @@ public final class JobSchedulerService extends com.android.server.SystemService
public void onDeviceIdleStateChanged(boolean deviceIdle) {
synchronized (mLock) {
if (deviceIdle) {
- // When becoming idle, make sure no jobs are actively running.
+ // When becoming idle, make sure no jobs are actively running,
+ // except those using the idle exemption flag.
for (int i=0; i<mActiveServices.size(); i++) {
JobServiceContext jsc = mActiveServices.get(i);
final JobStatus executing = jsc.getRunningJob();
- if (executing != null) {
+ if (executing != null
+ && (executing.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) == 0) {
jsc.cancelExecutingJob(JobParameters.REASON_DEVICE_IDLE);
}
}
@@ -539,6 +719,11 @@ public final class JobSchedulerService extends com.android.server.SystemService
*/
public JobSchedulerService(Context context) {
super(context);
+ mHandler = new JobHandler(context.getMainLooper());
+ mConstants = new Constants(mHandler);
+ mJobSchedulerStub = new JobSchedulerStub();
+ mJobs = JobStore.initAndGet(this);
+
// Create the controllers.
mControllers = new ArrayList<StateController>();
mControllers.add(ConnectivityController.get(this));
@@ -548,10 +733,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
mControllers.add(AppIdleController.get(this));
mControllers.add(ContentObserverController.get(this));
mControllers.add(DeviceIdleJobsController.get(this));
-
- mHandler = new JobHandler(context.getMainLooper());
- mJobSchedulerStub = new JobSchedulerStub();
- mJobs = JobStore.initAndGet(this);
}
@Override
@@ -563,6 +744,7 @@ public final class JobSchedulerService extends com.android.server.SystemService
@Override
public void onBootPhase(int phase) {
if (PHASE_SYSTEM_SERVICES_READY == phase) {
+ mConstants.start(getContext().getContentResolver());
// Register br for package removals and user removals.
final IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
@@ -994,11 +1176,12 @@ public final class JobSchedulerService extends com.android.server.SystemService
public void postProcess() {
if (backoffCount > 0 ||
- idleCount >= MIN_IDLE_COUNT ||
- connectivityCount >= MIN_CONNECTIVITY_COUNT ||
- chargingCount >= MIN_CHARGING_COUNT ||
- contentCount >= MIN_CONTENT_COUNT ||
- (runnableJobs != null && runnableJobs.size() >= MIN_READY_JOBS_COUNT)) {
+ idleCount >= mConstants.MIN_IDLE_COUNT ||
+ connectivityCount >= mConstants.MIN_CONNECTIVITY_COUNT ||
+ chargingCount >= mConstants.MIN_CHARGING_COUNT ||
+ contentCount >= mConstants.MIN_CONTENT_COUNT ||
+ (runnableJobs != null
+ && runnableJobs.size() >= mConstants.MIN_READY_JOBS_COUNT)) {
if (DEBUG) {
Slog.d(TAG, "maybeQueueReadyJobsForExecutionLockedH: Running jobs.");
}
@@ -1095,9 +1278,9 @@ public final class JobSchedulerService extends com.android.server.SystemService
private int adjustJobPriority(int curPriority, JobStatus job) {
if (curPriority < JobInfo.PRIORITY_TOP_APP) {
float factor = mJobPackageTracker.getLoadFactor(job);
- if (factor >= HEAVY_USE_FACTOR) {
+ if (factor >= mConstants.HEAVY_USE_FACTOR) {
curPriority += JobInfo.PRIORITY_ADJ_ALWAYS_RUNNING;
- } else if (factor >= MODERATE_USE_FACTOR) {
+ } else if (factor >= mConstants.MODERATE_USE_FACTOR) {
curPriority += JobInfo.PRIORITY_ADJ_OFTEN_RUNNING;
}
}
@@ -1135,16 +1318,16 @@ public final class JobSchedulerService extends com.android.server.SystemService
}
switch (memLevel) {
case ProcessStats.ADJ_MEM_FACTOR_MODERATE:
- mMaxActiveJobs = ((MAX_JOB_CONTEXTS_COUNT - FG_JOB_CONTEXTS_COUNT) * 2) / 3;
+ mMaxActiveJobs = mConstants.BG_MODERATE_JOB_COUNT;
break;
case ProcessStats.ADJ_MEM_FACTOR_LOW:
- mMaxActiveJobs = (MAX_JOB_CONTEXTS_COUNT - FG_JOB_CONTEXTS_COUNT) / 3;
+ mMaxActiveJobs = mConstants.BG_LOW_JOB_COUNT;
break;
case ProcessStats.ADJ_MEM_FACTOR_CRITICAL:
- mMaxActiveJobs = 1;
+ mMaxActiveJobs = mConstants.BG_CRITICAL_JOB_COUNT;
break;
default:
- mMaxActiveJobs = MAX_JOB_CONTEXTS_COUNT - FG_JOB_CONTEXTS_COUNT;
+ mMaxActiveJobs = mConstants.BG_NORMAL_JOB_COUNT;
break;
}
@@ -1152,10 +1335,15 @@ public final class JobSchedulerService extends com.android.server.SystemService
boolean[] act = mTmpAssignAct;
int[] preferredUidForContext = mTmpAssignPreferredUidForContext;
int numActive = 0;
+ int numForeground = 0;
for (int i=0; i<MAX_JOB_CONTEXTS_COUNT; i++) {
final JobServiceContext js = mActiveServices.get(i);
- if ((contextIdToJobMap[i] = js.getRunningJob()) != null) {
+ final JobStatus status = js.getRunningJob();
+ if ((contextIdToJobMap[i] = status) != null) {
numActive++;
+ if (status.lastEvaluatedPriority >= JobInfo.PRIORITY_TOP_APP) {
+ numForeground++;
+ }
}
act[i] = false;
preferredUidForContext[i] = js.getPreferredUid();
@@ -1184,13 +1372,14 @@ public final class JobSchedulerService extends com.android.server.SystemService
JobStatus job = contextIdToJobMap[j];
int preferredUid = preferredUidForContext[j];
if (job == null) {
- if ((numActive < mMaxActiveJobs || priority >= JobInfo.PRIORITY_TOP_APP) &&
+ if ((numActive < mMaxActiveJobs ||
+ (priority >= JobInfo.PRIORITY_TOP_APP &&
+ numForeground < mConstants.FG_JOB_COUNT)) &&
(preferredUid == nextPending.getUid() ||
preferredUid == JobServiceContext.NO_PREFERRED_UID)) {
// This slot is free, and we haven't yet hit the limit on
// concurrent jobs... we can just throw the job in to here.
minPriorityContextId = j;
- numActive++;
break;
}
// No job on this context, but nextPending can't run here because
@@ -1212,11 +1401,16 @@ public final class JobSchedulerService extends com.android.server.SystemService
if (minPriorityContextId != -1) {
contextIdToJobMap[minPriorityContextId] = nextPending;
act[minPriorityContextId] = true;
+ numActive++;
+ if (priority >= JobInfo.PRIORITY_TOP_APP) {
+ numForeground++;
+ }
}
}
if (DEBUG) {
Slog.d(TAG, printContextIdToJobMap(contextIdToJobMap, "running jobs final"));
}
+ mJobPackageTracker.noteConcurrency(numActive, numForeground);
for (int i=0; i<MAX_JOB_CONTEXTS_COUNT; i++) {
boolean preservePreferredUid = false;
if (act[i]) {
@@ -1569,36 +1763,49 @@ public final class JobSchedulerService extends com.android.server.SystemService
final int filterUidFinal = UserHandle.getAppId(filterUid);
final long now = SystemClock.elapsedRealtime();
synchronized (mLock) {
+ mConstants.dump(pw);
+ pw.println();
pw.println("Started users: " + Arrays.toString(mStartedUsers));
- pw.println("Registered jobs:");
+ pw.print("Registered ");
+ pw.print(mJobs.size());
+ pw.println(" jobs:");
if (mJobs.size() > 0) {
- mJobs.forEachJob(new JobStatusFunctor() {
- private int index = 0;
-
+ final List<JobStatus> jobs = mJobs.mJobSet.getAllJobs();
+ Collections.sort(jobs, new Comparator<JobStatus>() {
@Override
- public void process(JobStatus job) {
- pw.print(" Job #"); pw.print(index++); pw.print(": ");
- pw.println(job.toShortString());
-
- // Skip printing details if the caller requested a filter
- if (!job.shouldDump(filterUidFinal)) {
- return;
+ public int compare(JobStatus o1, JobStatus o2) {
+ int uid1 = o1.getUid();
+ int uid2 = o2.getUid();
+ int id1 = o1.getJobId();
+ int id2 = o2.getJobId();
+ if (uid1 != uid2) {
+ return uid1 < uid2 ? -1 : 1;
}
-
- job.dump(pw, " ", true);
- pw.print(" Ready: ");
- pw.print(mHandler.isReadyToBeExecutedLocked(job));
- pw.print(" (job=");
- pw.print(job.isReady());
- pw.print(" pending=");
- pw.print(mPendingJobs.contains(job));
- pw.print(" active=");
- pw.print(isCurrentlyActiveLocked(job));
- pw.print(" user=");
- pw.print(ArrayUtils.contains(mStartedUsers, job.getUserId()));
- pw.println(")");
+ return id1 < id2 ? -1 : (id1 > id2 ? 1 : 0);
}
});
+ for (JobStatus job : jobs) {
+ pw.print(" JOB #"); job.printUniqueId(pw); pw.print(": ");
+ pw.println(job.toShortStringExceptUniqueId());
+
+ // Skip printing details if the caller requested a filter
+ if (!job.shouldDump(filterUidFinal)) {
+ continue;
+ }
+
+ job.dump(pw, " ", true);
+ pw.print(" Ready: ");
+ pw.print(mHandler.isReadyToBeExecutedLocked(job));
+ pw.print(" (job=");
+ pw.print(job.isReady());
+ pw.print(" pending=");
+ pw.print(mPendingJobs.contains(job));
+ pw.print(" active=");
+ pw.print(isCurrentlyActiveLocked(job));
+ pw.print(" user=");
+ pw.print(ArrayUtils.contains(mStartedUsers, job.getUserId()));
+ pw.println(")");
+ }
} else {
pw.println(" None.");
}
diff --git a/services/core/java/com/android/server/job/JobServiceContext.java b/services/core/java/com/android/server/job/JobServiceContext.java
index 4fd1350b5d1a..31528e509012 100644
--- a/services/core/java/com/android/server/job/JobServiceContext.java
+++ b/services/core/java/com/android/server/job/JobServiceContext.java
@@ -223,10 +223,11 @@ public class JobServiceContext extends IJobCallback.Stub implements ServiceConne
* stop executing.
*/
JobStatus getRunningJob() {
+ final JobStatus job;
synchronized (mLock) {
- return mRunningJob == null ?
- null : new JobStatus(mRunningJob);
+ job = mRunningJob;
}
+ return job == null ? null : new JobStatus(job);
}
/** Called externally when a job that was scheduled for execution should be cancelled. */
diff --git a/services/core/java/com/android/server/job/JobStore.java b/services/core/java/com/android/server/job/JobStore.java
index 1f7d3128d655..602b9c755e88 100644
--- a/services/core/java/com/android/server/job/JobStore.java
+++ b/services/core/java/com/android/server/job/JobStore.java
@@ -844,8 +844,16 @@ public class JobStore {
// Inefficient; use only for testing
public List<JobStatus> getAllJobs() {
ArrayList<JobStatus> allJobs = new ArrayList<JobStatus>(size());
- for (int i = mJobs.size(); i >= 0; i--) {
- allJobs.addAll(mJobs.valueAt(i));
+ for (int i = mJobs.size() - 1; i >= 0; i--) {
+ ArraySet<JobStatus> jobs = mJobs.valueAt(i);
+ if (jobs != null) {
+ // Use a for loop over the ArraySet, so we don't need to make its
+ // optional collection class iterator implementation or have to go
+ // through a temporary array from toArray().
+ for (int j = jobs.size() - 1; j >= 0; j--) {
+ allJobs.add(jobs.valueAt(j));
+ }
+ }
}
return allJobs;
}
diff --git a/services/core/java/com/android/server/job/controllers/AppIdleController.java b/services/core/java/com/android/server/job/controllers/AppIdleController.java
index 759303542aec..a23af3541e19 100644
--- a/services/core/java/com/android/server/job/controllers/AppIdleController.java
+++ b/services/core/java/com/android/server/job/controllers/AppIdleController.java
@@ -18,6 +18,7 @@ package com.android.server.job.controllers;
import android.app.usage.UsageStatsManagerInternal;
import android.content.Context;
+import android.os.UserHandle;
import android.util.Slog;
import com.android.server.LocalServices;
@@ -42,6 +43,7 @@ public class AppIdleController extends StateController {
private static volatile AppIdleController sController;
private final JobSchedulerService mJobSchedulerService;
private final UsageStatsManagerInternal mUsageStatsInternal;
+ private boolean mInitializedParoleOn;
boolean mAppIdleParoleOn;
final class GlobalUpdateFunc implements JobStore.JobStatusFunctor {
@@ -100,12 +102,16 @@ public class AppIdleController extends StateController {
super(service, context, lock);
mJobSchedulerService = service;
mUsageStatsInternal = LocalServices.getService(UsageStatsManagerInternal.class);
- mAppIdleParoleOn = mUsageStatsInternal.isAppIdleParoleOn();
+ mAppIdleParoleOn = true;
mUsageStatsInternal.addAppIdleStateChangeListener(new AppIdleStateChangeListener());
}
@Override
public void maybeStartTrackingJobLocked(JobStatus jobStatus, JobStatus lastJob) {
+ if (!mInitializedParoleOn) {
+ mInitializedParoleOn = true;
+ mAppIdleParoleOn = mUsageStatsInternal.isAppIdleParoleOn();
+ }
String packageName = jobStatus.getSourcePackageName();
final boolean appIdle = !mAppIdleParoleOn && mUsageStatsInternal.isAppIdle(packageName,
jobStatus.getSourceUid(), jobStatus.getSourceUserId());
@@ -122,21 +128,24 @@ public class AppIdleController extends StateController {
@Override
public void dumpControllerStateLocked(final PrintWriter pw, final int filterUid) {
- pw.println("AppIdle");
- pw.println("Parole On: " + mAppIdleParoleOn);
+ pw.print("AppIdle: parole on = ");
+ pw.println(mAppIdleParoleOn);
mJobSchedulerService.getJobStore().forEachJob(new JobStore.JobStatusFunctor() {
@Override public void process(JobStatus jobStatus) {
// Skip printing details if the caller requested a filter
if (!jobStatus.shouldDump(filterUid)) {
return;
}
- pw.print(" ");
+ pw.print(" #");
+ jobStatus.printUniqueId(pw);
+ pw.print(" from ");
+ UserHandle.formatUid(pw, jobStatus.getSourceUid());
+ pw.print(": ");
pw.print(jobStatus.getSourcePackageName());
- pw.print(": runnable=");
+ pw.print(", runnable=");
pw.println((jobStatus.satisfiedConstraints&JobStatus.CONSTRAINT_APP_NOT_IDLE) != 0);
}
});
- pw.println();
}
void setAppIdleParoleOn(boolean isAppIdleParoleOn) {
diff --git a/services/core/java/com/android/server/job/controllers/BatteryController.java b/services/core/java/com/android/server/job/controllers/BatteryController.java
index a0cb25fb6870..f6b8ef4387b8 100644
--- a/services/core/java/com/android/server/job/controllers/BatteryController.java
+++ b/services/core/java/com/android/server/job/controllers/BatteryController.java
@@ -23,6 +23,7 @@ import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.BatteryManagerInternal;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
@@ -195,21 +196,21 @@ public class BatteryController extends StateController {
@Override
public void dumpControllerStateLocked(PrintWriter pw, int filterUid) {
- pw.println("Batt.");
- pw.println("Stable power: " + mChargeTracker.isOnStablePower());
- Iterator<JobStatus> it = mTrackedTasks.iterator();
- if (it.hasNext()) {
- JobStatus jobStatus = it.next();
- if (jobStatus.shouldDump(filterUid)) {
- pw.print(String.valueOf(jobStatus.hashCode()));
+ pw.print("Battery: stable power = ");
+ pw.println(mChargeTracker.isOnStablePower());
+ pw.print("Tracking ");
+ pw.print(mTrackedTasks.size());
+ pw.println(":");
+ for (int i = 0; i < mTrackedTasks.size(); i++) {
+ final JobStatus js = mTrackedTasks.get(i);
+ if (!js.shouldDump(filterUid)) {
+ continue;
}
+ pw.print(" #");
+ js.printUniqueId(pw);
+ pw.print(" from ");
+ UserHandle.formatUid(pw, js.getSourceUid());
+ pw.println();
}
- while (it.hasNext()) {
- JobStatus jobStatus = it.next();
- if (jobStatus.shouldDump(filterUid)) {
- pw.print("," + String.valueOf(jobStatus.hashCode()));
- }
- }
- pw.println();
}
}
diff --git a/services/core/java/com/android/server/job/controllers/ConnectivityController.java b/services/core/java/com/android/server/job/controllers/ConnectivityController.java
index 7d28633104cd..2ff880c5f19c 100644
--- a/services/core/java/com/android/server/job/controllers/ConnectivityController.java
+++ b/services/core/java/com/android/server/job/controllers/ConnectivityController.java
@@ -187,14 +187,20 @@ public class ConnectivityController extends StateController implements
@Override
public void dumpControllerStateLocked(PrintWriter pw, int filterUid) {
- pw.println("Conn.");
+ pw.println("Connectivity.");
+ pw.print("Tracking ");
+ pw.print(mTrackedJobs.size());
+ pw.println(":");
for (int i = 0; i < mTrackedJobs.size(); i++) {
final JobStatus js = mTrackedJobs.get(i);
if (js.shouldDump(filterUid)) {
- pw.println(String.valueOf(js.getJobId() + "," + js.getUid())
- + ": C=" + js.hasConnectivityConstraint()
- + ", UM=" + js.hasUnmeteredConstraint()
- + ", NR=" + js.hasNotRoamingConstraint());
+ pw.print(" #");
+ js.printUniqueId(pw);
+ pw.print(" from ");
+ UserHandle.formatUid(pw, js.getSourceUid());
+ pw.print(": C="); pw.print(js.hasConnectivityConstraint());
+ pw.print(": UM="); pw.print(js.hasUnmeteredConstraint());
+ pw.print(": NR="); pw.println(js.hasNotRoamingConstraint());
}
}
}
diff --git a/services/core/java/com/android/server/job/controllers/ContentObserverController.java b/services/core/java/com/android/server/job/controllers/ContentObserverController.java
index c1d7c5826a4f..26660e82e841 100644
--- a/services/core/java/com/android/server/job/controllers/ContentObserverController.java
+++ b/services/core/java/com/android/server/job/controllers/ContentObserverController.java
@@ -21,6 +21,7 @@ import android.content.Context;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
+import android.os.UserHandle;
import android.util.TimeUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -323,23 +324,17 @@ public class ContentObserverController extends StateController {
@Override
public void dumpControllerStateLocked(PrintWriter pw, int filterUid) {
- pw.println("Content.");
- boolean printed = false;
+ pw.println("Content:");
Iterator<JobStatus> it = mTrackedTasks.iterator();
while (it.hasNext()) {
JobStatus js = it.next();
if (!js.shouldDump(filterUid)) {
continue;
}
- if (!printed) {
- pw.print(" ");
- printed = true;
- } else {
- pw.print(",");
- }
- pw.print(System.identityHashCode(js));
- }
- if (printed) {
+ pw.print(" #");
+ js.printUniqueId(pw);
+ pw.print(" from ");
+ UserHandle.formatUid(pw, js.getSourceUid());
pw.println();
}
int N = mObservers.size();
@@ -367,8 +362,10 @@ public class ContentObserverController extends StateController {
pw.println(" Jobs:");
for (int j=0; j<M; j++) {
JobInstance inst = obs.mJobs.valueAt(j);
- pw.print(" ");
- pw.print(System.identityHashCode(inst.mJobStatus));
+ pw.print(" #");
+ inst.mJobStatus.printUniqueId(pw);
+ pw.print(" from ");
+ UserHandle.formatUid(pw, inst.mJobStatus.getSourceUid());
if (inst.mChangedAuthorities != null) {
pw.println(":");
if (inst.mTriggerPending) {
diff --git a/services/core/java/com/android/server/job/controllers/DeviceIdleJobsController.java b/services/core/java/com/android/server/job/controllers/DeviceIdleJobsController.java
index 345a032497ef..bf1297faf183 100644
--- a/services/core/java/com/android/server/job/controllers/DeviceIdleJobsController.java
+++ b/services/core/java/com/android/server/job/controllers/DeviceIdleJobsController.java
@@ -180,13 +180,16 @@ public class DeviceIdleJobsController extends StateController {
if (!jobStatus.shouldDump(filterUid)) {
return;
}
- pw.print(" ");
+ pw.print(" #");
+ jobStatus.printUniqueId(pw);
+ pw.print(" from ");
+ UserHandle.formatUid(pw, jobStatus.getSourceUid());
+ pw.print(": ");
pw.print(jobStatus.getSourcePackageName());
- pw.print(": runnable=");
+ pw.print(", runnable=");
pw.println((jobStatus.satisfiedConstraints
& JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0);
}
});
- pw.println();
}
} \ No newline at end of file
diff --git a/services/core/java/com/android/server/job/controllers/IdleController.java b/services/core/java/com/android/server/job/controllers/IdleController.java
index 5899d1647ad8..f41e1876e721 100644
--- a/services/core/java/com/android/server/job/controllers/IdleController.java
+++ b/services/core/java/com/android/server/job/controllers/IdleController.java
@@ -26,6 +26,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.util.Slog;
import com.android.server.am.ActivityManagerService;
@@ -191,15 +192,19 @@ public class IdleController extends StateController {
public void dumpControllerStateLocked(PrintWriter pw, int filterUid) {
pw.print("Idle: ");
pw.println(mIdleTracker.isIdle() ? "true" : "false");
- pw.println(mTrackedTasks.size());
+ pw.print("Tracking ");
+ pw.print(mTrackedTasks.size());
+ pw.println(":");
for (int i = 0; i < mTrackedTasks.size(); i++) {
final JobStatus js = mTrackedTasks.get(i);
if (!js.shouldDump(filterUid)) {
continue;
}
- pw.print(" ");
- pw.print(String.valueOf(js.getJobId() + "," + js.getUid()));
- pw.println("..");
+ pw.print(" #");
+ js.printUniqueId(pw);
+ pw.print(" from ");
+ UserHandle.formatUid(pw, js.getSourceUid());
+ pw.println();
}
}
}
diff --git a/services/core/java/com/android/server/job/controllers/JobStatus.java b/services/core/java/com/android/server/job/controllers/JobStatus.java
index 072787b19dc5..ded7a2f3521e 100644
--- a/services/core/java/com/android/server/job/controllers/JobStatus.java
+++ b/services/core/java/com/android/server/job/controllers/JobStatus.java
@@ -249,6 +249,12 @@ public final class JobStatus {
return job.getId();
}
+ public void printUniqueId(PrintWriter pw) {
+ UserHandle.formatUid(pw, callingUid);
+ pw.print("/");
+ pw.print(job.getId());
+ }
+
public int getNumFailures() {
return numFailures;
}
@@ -410,6 +416,10 @@ public final class JobStatus {
return true;
}
+ boolean isConstraintSatisfied(int constraint) {
+ return (satisfiedConstraints&constraint) != 0;
+ }
+
public boolean shouldDump(int filterUid) {
return filterUid == -1 || UserHandle.getAppId(getUid()) == filterUid
|| UserHandle.getAppId(getSourceUid()) == filterUid;
@@ -505,10 +515,22 @@ public final class JobStatus {
public String toShortString() {
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(System.identityHashCode(this)));
- sb.append(" jId=");
+ sb.append(" #");
+ UserHandle.formatUid(sb, callingUid);
+ sb.append("/");
sb.append(job.getId());
sb.append(' ');
- UserHandle.formatUid(sb, callingUid);
+ sb.append(batteryName);
+ return sb.toString();
+ }
+
+ /**
+ * Convenience function to identify a job uniquely without pulling all the data that
+ * {@link #toString()} returns.
+ */
+ public String toShortStringExceptUniqueId() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
sb.append(' ');
sb.append(batteryName);
return sb.toString();
diff --git a/services/core/java/com/android/server/job/controllers/TimeController.java b/services/core/java/com/android/server/job/controllers/TimeController.java
index 2f8ca7eb1f80..0b3b00fa84aa 100644
--- a/services/core/java/com/android/server/job/controllers/TimeController.java
+++ b/services/core/java/com/android/server/job/controllers/TimeController.java
@@ -20,7 +20,10 @@ import android.app.AlarmManager;
import android.app.AlarmManager.OnAlarmListener;
import android.content.Context;
import android.os.SystemClock;
+import android.os.UserHandle;
+import android.os.WorkSource;
import android.util.Slog;
+import android.util.TimeUtils;
import com.android.server.job.JobSchedulerService;
import com.android.server.job.StateChangedListener;
@@ -39,9 +42,9 @@ public class TimeController extends StateController {
private static final String TAG = "JobScheduler.Time";
/** Deadline alarm tag for logging purposes */
- private final String DEADLINE_TAG = "JobScheduler.deadline";
+ private final String DEADLINE_TAG = "*job.deadline*";
/** Delay alarm tag for logging purposes */
- private final String DELAY_TAG = "JobScheduler.delay";
+ private final String DELAY_TAG = "*job.delay*";
private long mNextJobExpiredElapsedMillis;
private long mNextDelayExpiredElapsedMillis;
@@ -91,7 +94,8 @@ public class TimeController extends StateController {
it.add(job);
maybeUpdateAlarmsLocked(
job.hasTimingDelayConstraint() ? job.getEarliestRunTime() : Long.MAX_VALUE,
- job.hasDeadlineConstraint() ? job.getLatestRunTimeElapsed() : Long.MAX_VALUE);
+ job.hasDeadlineConstraint() ? job.getLatestRunTimeElapsed() : Long.MAX_VALUE,
+ job.getSourceUid());
}
}
@@ -134,6 +138,7 @@ public class TimeController extends StateController {
private void checkExpiredDeadlinesAndResetAlarm() {
synchronized (mLock) {
long nextExpiryTime = Long.MAX_VALUE;
+ int nextExpiryUid = 0;
final long nowElapsedMillis = SystemClock.elapsedRealtime();
Iterator<JobStatus> it = mTrackedJobs.iterator();
@@ -153,10 +158,11 @@ public class TimeController extends StateController {
it.remove();
} else { // Sorted by expiry time, so take the next one and stop.
nextExpiryTime = jobDeadline;
+ nextExpiryUid = job.getSourceUid();
break;
}
}
- setDeadlineExpiredAlarmLocked(nextExpiryTime);
+ setDeadlineExpiredAlarmLocked(nextExpiryTime, nextExpiryUid);
}
}
@@ -168,6 +174,7 @@ public class TimeController extends StateController {
synchronized (mLock) {
final long nowElapsedMillis = SystemClock.elapsedRealtime();
long nextDelayTime = Long.MAX_VALUE;
+ int nextDelayUid = 0;
boolean ready = false;
Iterator<JobStatus> it = mTrackedJobs.iterator();
while (it.hasNext()) {
@@ -184,25 +191,29 @@ public class TimeController extends StateController {
if (job.isReady()) {
ready = true;
}
- } else { // Keep going through list to get next delay time.
+ } else if (!job.isConstraintSatisfied(JobStatus.CONSTRAINT_TIMING_DELAY)) {
+ // If this job still doesn't have its delay constraint satisfied,
+ // then see if it is the next upcoming delay time for the alarm.
if (nextDelayTime > jobDelayTime) {
nextDelayTime = jobDelayTime;
+ nextDelayUid = job.getSourceUid();
}
}
}
if (ready) {
mStateChangedListener.onControllerStateChanged();
}
- setDelayExpiredAlarmLocked(nextDelayTime);
+ setDelayExpiredAlarmLocked(nextDelayTime, nextDelayUid);
}
}
- private void maybeUpdateAlarmsLocked(long delayExpiredElapsed, long deadlineExpiredElapsed) {
+ private void maybeUpdateAlarmsLocked(long delayExpiredElapsed, long deadlineExpiredElapsed,
+ int uid) {
if (delayExpiredElapsed < mNextDelayExpiredElapsedMillis) {
- setDelayExpiredAlarmLocked(delayExpiredElapsed);
+ setDelayExpiredAlarmLocked(delayExpiredElapsed, uid);
}
if (deadlineExpiredElapsed < mNextJobExpiredElapsedMillis) {
- setDeadlineExpiredAlarmLocked(deadlineExpiredElapsed);
+ setDeadlineExpiredAlarmLocked(deadlineExpiredElapsed, uid);
}
}
@@ -211,11 +222,11 @@ public class TimeController extends StateController {
* delay will expire.
* This alarm <b>will</b> wake up the phone.
*/
- private void setDelayExpiredAlarmLocked(long alarmTimeElapsedMillis) {
+ private void setDelayExpiredAlarmLocked(long alarmTimeElapsedMillis, int uid) {
alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis);
mNextDelayExpiredElapsedMillis = alarmTimeElapsedMillis;
updateAlarmWithListenerLocked(DELAY_TAG, mNextDelayExpiredListener,
- mNextDelayExpiredElapsedMillis);
+ mNextDelayExpiredElapsedMillis, uid);
}
/**
@@ -223,11 +234,11 @@ public class TimeController extends StateController {
* deadline will expire.
* This alarm <b>will</b> wake up the phone.
*/
- private void setDeadlineExpiredAlarmLocked(long alarmTimeElapsedMillis) {
+ private void setDeadlineExpiredAlarmLocked(long alarmTimeElapsedMillis, int uid) {
alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis);
mNextJobExpiredElapsedMillis = alarmTimeElapsedMillis;
updateAlarmWithListenerLocked(DEADLINE_TAG, mDeadlineExpiredListener,
- mNextJobExpiredElapsedMillis);
+ mNextJobExpiredElapsedMillis, uid);
}
private long maybeAdjustAlarmTime(long proposedAlarmTimeElapsedMillis) {
@@ -239,7 +250,7 @@ public class TimeController extends StateController {
}
private void updateAlarmWithListenerLocked(String tag, OnAlarmListener listener,
- long alarmTimeElapsed) {
+ long alarmTimeElapsed, int uid) {
ensureAlarmServiceLocked();
if (alarmTimeElapsed == Long.MAX_VALUE) {
mAlarmService.cancel(listener);
@@ -248,7 +259,7 @@ public class TimeController extends StateController {
Slog.d(TAG, "Setting " + tag + " for: " + alarmTimeElapsed);
}
mAlarmService.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, alarmTimeElapsed,
- tag, listener, null);
+ AlarmManager.WINDOW_HEURISTIC, 0, tag, listener, null, new WorkSource(uid));
}
}
@@ -277,20 +288,39 @@ public class TimeController extends StateController {
@Override
public void dumpControllerStateLocked(PrintWriter pw, int filterUid) {
final long nowElapsed = SystemClock.elapsedRealtime();
- pw.println("Alarms (" + SystemClock.elapsedRealtime() + ")");
- pw.println(
- "Next delay alarm in " + (mNextDelayExpiredElapsedMillis - nowElapsed)/1000 + "s");
- pw.println("Next deadline alarm in " + (mNextJobExpiredElapsedMillis - nowElapsed)/1000
- + "s");
- pw.println("Tracking:");
+ pw.print("Alarms: now=");
+ pw.print(SystemClock.elapsedRealtime());
+ pw.println();
+ pw.print("Next delay alarm in ");
+ TimeUtils.formatDuration(mNextDelayExpiredElapsedMillis, nowElapsed, pw);
+ pw.println();
+ pw.print("Next deadline alarm in ");
+ TimeUtils.formatDuration(mNextJobExpiredElapsedMillis, nowElapsed, pw);
+ pw.println();
+ pw.print("Tracking ");
+ pw.print(mTrackedJobs.size());
+ pw.println(":");
for (JobStatus ts : mTrackedJobs) {
if (!ts.shouldDump(filterUid)) {
continue;
}
- pw.println(String.valueOf(ts.getJobId() + "," + ts.getUid())
- + ": (" + (ts.hasTimingDelayConstraint() ? ts.getEarliestRunTime() : "N/A")
- + ", " + (ts.hasDeadlineConstraint() ?ts.getLatestRunTimeElapsed() : "N/A")
- + ")");
+ pw.print(" #");
+ ts.printUniqueId(pw);
+ pw.print(" from ");
+ UserHandle.formatUid(pw, ts.getSourceUid());
+ pw.print(": Delay=");
+ if (ts.hasTimingDelayConstraint()) {
+ TimeUtils.formatDuration(ts.getEarliestRunTime(), nowElapsed, pw);
+ } else {
+ pw.print("N/A");
+ }
+ pw.print(", Deadline=");
+ if (ts.hasDeadlineConstraint()) {
+ TimeUtils.formatDuration(ts.getLatestRunTimeElapsed(), nowElapsed, pw);
+ } else {
+ pw.print("N/A");
+ }
+ pw.println();
}
}
} \ No newline at end of file
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index b5a8bf3f4d1a..a8b1a4a2cd05 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -2582,6 +2582,9 @@ public class NotificationManagerService extends SystemService {
}
if (notification.actions != null) {
for (Notification.Action action: notification.actions) {
+ if (action.actionIntent == null) {
+ continue;
+ }
am.setPendingIntentWhitelistDuration(action.actionIntent.getTarget(), duration);
setPendingIntentWhitelistDuration(am, duration, action.getExtras());
final RemoteInput[] remoteInputs = action.getRemoteInputs();
diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java
index 913c82428ec6..7b85a4f25cee 100644
--- a/services/core/java/com/android/server/pm/Installer.java
+++ b/services/core/java/com/android/server/pm/Installer.java
@@ -153,6 +153,11 @@ public final class Installer extends SystemService {
return mInstaller.mergeProfiles(uid, pkgName);
}
+ public boolean dumpProfiles(String gid, String packageName, String codePaths)
+ throws InstallerException {
+ return mInstaller.dumpProfiles(gid, packageName, codePaths);
+ }
+
public void idmap(String targetApkPath, String overlayApkPath, int uid)
throws InstallerException {
mInstaller.execute("idmap", targetApkPath, overlayApkPath, uid);
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index a2bdde41123f..3999d188b79c 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -105,6 +105,7 @@ import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.ActivityManagerNative;
import android.app.IActivityManager;
+import android.app.ResourcesManager;
import android.app.admin.DevicePolicyManagerInternal;
import android.app.admin.IDevicePolicyManager;
import android.app.admin.SecurityLog;
@@ -238,6 +239,7 @@ import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.internal.util.XmlUtils;
+import com.android.server.AttributeCache;
import com.android.server.EventLogTags;
import com.android.server.FgThread;
import com.android.server.IntentResolver;
@@ -2395,6 +2397,10 @@ public class PackageManagerService extends IPackageManager.Stub {
mPromoteSystemApps =
mIsUpgrade && ver.sdkVersion <= Build.VERSION_CODES.LOLLIPOP_MR1;
+ // When upgrading from pre-N, we need to handle package extraction like first boot,
+ // as there is no profiling data available.
+ mIsPreNUpgrade = mIsUpgrade && ver.sdkVersion < Build.VERSION_CODES.N;
+
// save off the names of pre-existing system packages prior to scanning; we don't
// want to automatically grant runtime permissions for new system apps
if (mPromoteSystemApps) {
@@ -2407,11 +2413,6 @@ public class PackageManagerService extends IPackageManager.Stub {
}
}
- // When upgrading from pre-N, we need to handle package extraction like first boot,
- // as there is no profiling data available.
- mIsPreNUpgrade = !mSettings.isNWorkDone();
- mSettings.setNWorkDone();
-
// Collect vendor overlay packages.
// (Do this before scanning any apps.)
// For security and version matching reason, only consider
@@ -2724,7 +2725,6 @@ public class PackageManagerService extends IPackageManager.Stub {
StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE
| Installer.FLAG_CLEAR_CODE_CACHE_ONLY);
}
- clearAppProfilesLIF(ps.pkg, UserHandle.USER_ALL);
}
ver.fingerprint = Build.FINGERPRINT;
}
@@ -7459,6 +7459,45 @@ public class PackageManagerService extends IPackageManager.Stub {
}
@Override
+ public void dumpProfiles(String packageName) {
+ PackageParser.Package pkg;
+ synchronized (mPackages) {
+ pkg = mPackages.get(packageName);
+ if (pkg == null) {
+ throw new IllegalArgumentException("Unknown package: " + packageName);
+ }
+ }
+ /* Only the shell or the app user should be able to dump profiles. */
+ int callingUid = Binder.getCallingUid();
+ if (callingUid != Process.SHELL_UID && callingUid != pkg.applicationInfo.uid) {
+ throw new SecurityException("dumpProfiles");
+ }
+
+ synchronized (mInstallLock) {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dump profiles");
+ final int sharedGid = UserHandle.getSharedAppGid(pkg.applicationInfo.uid);
+ try {
+ final File codeFile = new File(pkg.applicationInfo.getCodePath());
+ List<String> allCodePaths = Collections.EMPTY_LIST;
+ if (codeFile != null && codeFile.exists()) {
+ try {
+ final PackageLite codePkg = PackageParser.parsePackageLite(codeFile, 0);
+ allCodePaths = codePkg.getAllCodePaths();
+ } catch (PackageParserException e) {
+ // Well, we tried.
+ }
+ }
+ String gid = Integer.toString(sharedGid);
+ String codePaths = TextUtils.join(";", allCodePaths);
+ mInstaller.dumpProfiles(gid, packageName, codePaths);
+ } catch (InstallerException e) {
+ Slog.w(TAG, "Failed to dump profiles", e);
+ }
+ Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+ }
+ }
+
+ @Override
public void forceDexOpt(String packageName) {
enforceSystemOrRoot("forceDexOpt");
@@ -19135,6 +19174,11 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
Slog.w(TAG, "Failed to unload " + ps.codePath);
}
}
+
+ // Try very hard to release any references to this package
+ // so we don't risk the system server being killed due to
+ // open FDs
+ AttributeCache.instance().removePackage(ps.name);
}
mSettings.writeLPr();
@@ -19143,6 +19187,15 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
if (DEBUG_INSTALL) Slog.d(TAG, "Unloaded packages " + unloaded);
sendResourcesChangedBroadcast(false, false, unloaded, null);
+
+ // Try very hard to release any references to this path so we don't risk
+ // the system server being killed due to open FDs
+ ResourcesManager.getInstance().invalidatePath(vol.getPath().getAbsolutePath());
+
+ for (int i = 0; i < 3; i++) {
+ System.gc();
+ System.runFinalization();
+ }
}
/**
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index beff8fc264a5..05f5b8f1ac6c 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -105,6 +105,8 @@ class PackageManagerShellCommand extends ShellCommand {
return runInstallWrite();
case "compile":
return runCompile();
+ case "dump-profiles":
+ return runDumpProfiles();
case "list":
return runList();
case "uninstall":
@@ -387,6 +389,12 @@ class PackageManagerShellCommand extends ShellCommand {
}
}
+ private int runDumpProfiles() throws RemoteException {
+ String packageName = getNextArg();
+ mInterface.dumpProfiles(packageName);
+ return 0;
+ }
+
private int runList() throws RemoteException {
final PrintWriter pw = getOutPrintWriter();
final String type = getNextArg();
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 75bd35c0eca4..dfd6dfe1c775 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -191,7 +191,6 @@ final class Settings {
private static final String TAG_DEFAULT_BROWSER = "default-browser";
private static final String TAG_DEFAULT_DIALER = "default-dialer";
private static final String TAG_VERSION = "version";
- private static final String TAG_N_WORK = "n-work";
private static final String ATTR_NAME = "name";
private static final String ATTR_USER = "user";
@@ -398,17 +397,6 @@ final class Settings {
public final KeySetManagerService mKeySetManagerService = new KeySetManagerService(mPackages);
- /**
- * Used to track whether N+ work has been done. This is similar to the file-system level
- * and denotes that first-boot or upgrade-to-N work has been done.
- *
- * Note: the flag has been added to a) allow tracking while an API level check is impossible
- * and b) to merge upgrade as well as first boot (because the flag is false, by default).
- *
- * STOPSHIP: b/27872764
- */
- private boolean mIsNWorkDone = false;
-
Settings(Object lock) {
this(Environment.getDataDirectory(), lock);
}
@@ -2396,10 +2384,6 @@ final class Settings {
mKeySetManagerService.writeKeySetManagerServiceLPr(serializer);
- serializer.startTag(null, TAG_N_WORK);
- serializer.attribute(null, ATTR_DONE, Boolean.toString(mIsNWorkDone));
- serializer.endTag(null, TAG_N_WORK);
-
serializer.endTag(null, "packages");
serializer.endDocument();
@@ -2937,8 +2921,6 @@ final class Settings {
ver.sdkVersion = XmlUtils.readIntAttribute(parser, ATTR_SDK_VERSION);
ver.databaseVersion = XmlUtils.readIntAttribute(parser, ATTR_SDK_VERSION);
ver.fingerprint = XmlUtils.readStringAttribute(parser, ATTR_FINGERPRINT);
- } else if (TAG_N_WORK.equals(tagName)) {
- mIsNWorkDone = XmlUtils.readBooleanAttribute(parser, ATTR_DONE, false);
} else {
Slog.w(PackageManagerService.TAG, "Unknown element under <packages>: "
+ parser.getName());
@@ -4233,14 +4215,6 @@ final class Settings {
return res;
}
- public boolean isNWorkDone() {
- return mIsNWorkDone;
- }
-
- void setNWorkDone() {
- mIsNWorkDone = true;
- }
-
static void printFlags(PrintWriter pw, int val, Object[] spec) {
pw.print("[ ");
for (int i=0; i<spec.length; i+=2) {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index ff95afc995b4..08bfa2de0b83 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -2732,14 +2732,14 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return mStringNameCache;
}
- void transformFromScreenToSurfaceSpace(Rect rect) {
+ void transformClipRectFromScreenToSurfaceSpace(Rect clipRect) {
if (mHScale >= 0) {
- rect.left = (int) (rect.left / mHScale);
- rect.right = (int) (rect.right / mHScale);
+ clipRect.left = (int) (clipRect.left / mHScale);
+ clipRect.right = (int) Math.ceil(clipRect.right / mHScale);
}
if (mVScale >= 0) {
- rect.top = (int) (rect.top / mVScale);
- rect.bottom = (int) (rect.bottom / mVScale);
+ clipRect.top = (int) (clipRect.top / mVScale);
+ clipRect.bottom = (int) Math.ceil(clipRect.bottom / mVScale);
}
}
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 37d6faf5a846..3b4c3cf6863c 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1281,7 +1281,7 @@ class WindowStateAnimator {
if (DEBUG_WINDOW_CROP) Slog.d(TAG,
"win=" + w + " Clip rect after stack adjustment=" + clipRect);
- w.transformFromScreenToSurfaceSpace(clipRect);
+ w.transformClipRectFromScreenToSurfaceSpace(clipRect);
// See {@link WindowState#notifyMovedInStack} for why this is necessary.
if (w.hasJustMovedInStack() && mLastClipRect.isEmpty() && !clipRect.isEmpty()) {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 1af9ccbbcfd7..9a7e64b3a923 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -3810,12 +3810,16 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
// If caller has PO (or DO) it can change the password, so see if that's the case first.
ActiveAdmin admin = getActiveAdminWithPolicyForUidLocked(
null, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER, callingUid);
- final boolean preN = getTargetSdk(admin.info.getPackageName(),
- userHandle) <= android.os.Build.VERSION_CODES.M;
- if (admin == null) {
+ final boolean preN;
+ if (admin != null) {
+ preN = getTargetSdk(admin.info.getPackageName(),
+ userHandle) <= android.os.Build.VERSION_CODES.M;
+ } else {
// Otherwise, make sure the caller has any active admin with the right policy.
admin = getActiveAdminForCallerLocked(null,
DeviceAdminInfo.USES_POLICY_RESET_PASSWORD);
+ preN = getTargetSdk(admin.info.getPackageName(),
+ userHandle) <= android.os.Build.VERSION_CODES.M;
// As of N, password resetting to empty/null is not allowed anymore.
// TODO Should we allow DO/PO to set an empty password?