summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp3
-rw-r--r--core/api/current.txt3
-rw-r--r--core/api/removed.txt9
-rw-r--r--core/api/system-current.txt13
-rw-r--r--core/java/android/app/IUiModeManager.aidl1
-rw-r--r--core/java/android/hardware/biometrics/BiometricFaceConstants.java46
-rw-r--r--core/java/android/hardware/face/FaceDataFrame.java8
-rw-r--r--core/java/android/hardware/face/FaceManager.java2
-rw-r--r--core/java/android/os/BinderProxy.java5
-rw-r--r--core/java/android/os/HidlMemoryUtil.java14
-rw-r--r--core/java/android/os/Parcel.java5
-rw-r--r--core/java/android/service/voice/HotwordDetectionService.java14
-rw-r--r--core/java/android/service/voice/HotwordRejectedResult.java7
-rw-r--r--core/java/android/service/voice/IHotwordDetectionService.aidl2
-rw-r--r--core/java/android/view/translation/TranslationRequest.java8
-rw-r--r--core/java/android/view/translation/TranslationResponse.java3
-rw-r--r--core/java/android/view/translation/TranslationResponseValue.java30
-rw-r--r--core/jni/android_os_Parcel.cpp10
-rw-r--r--core/jni/android_util_Binder.cpp21
-rw-r--r--core/res/res/color/text_color_on_accent_device_default.xml22
-rw-r--r--core/res/res/drawable/notification_material_media_action_background.xml8
-rw-r--r--core/res/res/values/attrs.xml3
-rw-r--r--core/res/res/values/config.xml4
-rw-r--r--core/res/res/values/strings.xml2
-rw-r--r--core/res/res/values/symbols.xml1
-rw-r--r--core/res/res/values/themes_device_defaults.xml43
-rw-r--r--framework-jarjar-rules.txt4
-rw-r--r--packages/SettingsLib/AppPreference/res/layout/preference_app.xml2
-rw-r--r--packages/SettingsLib/MainSwitchPreference/Android.bp1
-rw-r--r--packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml9
-rw-r--r--packages/SettingsLib/MainSwitchPreference/res/values/colors.xml15
-rw-r--r--packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml12
-rw-r--r--packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_thumb_color.xml26
-rw-r--r--packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_track_color.xml27
-rw-r--r--packages/SettingsLib/SettingsTheme/res/drawable-v31/settingslib_switch_thumb.xml29
-rw-r--r--packages/SettingsLib/SettingsTheme/res/drawable-v31/settingslib_switch_track.xml26
-rw-r--r--packages/SettingsLib/SettingsTheme/res/values-night-v31/colors.xml27
-rw-r--r--packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml33
-rw-r--r--packages/SettingsLib/SettingsTheme/res/values-v31/styles.xml6
-rw-r--r--packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml1
-rw-r--r--packages/SettingsLib/SettingsTheme/res/values/dimens.xml1
-rw-r--r--packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java13
-rw-r--r--packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target.xml2
-rw-r--r--packages/SettingsLib/res/layout/preference_access_point.xml10
-rw-r--r--packages/SettingsLib/res/layout/preference_checkable_two_target.xml8
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java2
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java7
-rw-r--r--packages/SystemUI/res-keyguard/values-eu/strings.xml4
-rw-r--r--packages/SystemUI/res-keyguard/values-lv/strings.xml2
-rw-r--r--packages/SystemUI/res/drawable/volume_background_bottom.xml23
-rw-r--r--packages/SystemUI/res/drawable/volume_background_top.xml (renamed from packages/SystemUI/res/drawable/volume_background.xml)3
-rw-r--r--packages/SystemUI/res/drawable/volume_background_top_rounded.xml29
-rw-r--r--packages/SystemUI/res/drawable/volume_row_rounded_background.xml23
-rw-r--r--packages/SystemUI/res/layout-land-television/volume_dialog.xml2
-rw-r--r--packages/SystemUI/res/layout-land/volume_dialog.xml20
-rw-r--r--packages/SystemUI/res/layout/navigation_bar.xml6
-rw-r--r--packages/SystemUI/res/layout/navigation_layout.xml2
-rw-r--r--packages/SystemUI/res/layout/volume_dialog.xml25
-rw-r--r--packages/SystemUI/res/layout/volume_dialog_row.xml9
-rw-r--r--packages/SystemUI/res/layout/volume_ringer_drawer.xml7
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml5
-rw-r--r--packages/SystemUI/res/values-as/strings.xml30
-rw-r--r--packages/SystemUI/res/values-az/strings.xml3
-rw-r--r--packages/SystemUI/res/values-b+sr+Latn/strings.xml3
-rw-r--r--packages/SystemUI/res/values-be/strings.xml3
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml3
-rw-r--r--packages/SystemUI/res/values-bn/strings.xml27
-rw-r--r--packages/SystemUI/res/values-bs/strings.xml2
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml3
-rw-r--r--packages/SystemUI/res/values-da/strings.xml3
-rw-r--r--packages/SystemUI/res/values-de/strings.xml18
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml2
-rw-r--r--packages/SystemUI/res/values-es/strings.xml2
-rw-r--r--packages/SystemUI/res/values-et/strings.xml3
-rw-r--r--packages/SystemUI/res/values-eu/strings.xml3
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml3
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml3
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml3
-rw-r--r--packages/SystemUI/res/values-gl/strings.xml5
-rw-r--r--packages/SystemUI/res/values-gu/strings.xml36
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml3
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml3
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml3
-rw-r--r--packages/SystemUI/res/values-in/strings.xml3
-rw-r--r--packages/SystemUI/res/values-is/strings.xml3
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml20
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml3
-rw-r--r--packages/SystemUI/res/values-kk/strings.xml3
-rw-r--r--packages/SystemUI/res/values-km/strings.xml3
-rw-r--r--packages/SystemUI/res/values-kn/strings.xml27
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ky/strings.xml17
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml3
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml7
-rw-r--r--packages/SystemUI/res/values-mk/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ml/strings.xml3
-rw-r--r--packages/SystemUI/res/values-mn/strings.xml3
-rw-r--r--packages/SystemUI/res/values-mr/strings.xml18
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml3
-rw-r--r--packages/SystemUI/res/values-my/strings.xml9
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ne/strings.xml36
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml3
-rw-r--r--packages/SystemUI/res/values-or/strings.xml15
-rw-r--r--packages/SystemUI/res/values-pa/strings.xml15
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml17
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml3
-rw-r--r--packages/SystemUI/res/values-si/strings.xml3
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml3
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml3
-rw-r--r--packages/SystemUI/res/values-sq/strings.xml30
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml3
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ta/strings.xml3
-rw-r--r--packages/SystemUI/res/values-te/strings.xml3
-rw-r--r--packages/SystemUI/res/values-th/strings.xml5
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml11
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml3
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml3
-rw-r--r--packages/SystemUI/res/values-ur/strings.xml3
-rw-r--r--packages/SystemUI/res/values-uz/strings.xml3
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml3
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml3
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml3
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml3
-rw-r--r--packages/SystemUI/res/values/config.xml2
-rw-r--r--packages/SystemUI/res/values/dimens.xml2
-rw-r--r--packages/SystemUI/res/values/ids.xml1
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java41
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/TextViewTransformState.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java79
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java30
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java241
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java25
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java58
-rw-r--r--services/core/java/com/android/server/UiModeManagerService.java15
-rw-r--r--services/core/java/com/android/server/VcnManagementService.java74
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/aidl/AidlConversionUtils.java5
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java10
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/aidl/TestHal.java44
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java10
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/TestHal.java44
-rw-r--r--services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java5
-rwxr-xr-xservices/core/java/com/android/server/notification/NotificationManagerService.java4
-rw-r--r--services/core/java/com/android/server/pm/LauncherAppsService.java8
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerShellCommand.java64
-rw-r--r--services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java3
-rw-r--r--services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java3
-rw-r--r--services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java22
-rw-r--r--services/core/java/com/android/server/vcn/Vcn.java10
-rw-r--r--services/core/java/com/android/server/vcn/VcnGatewayConnection.java12
-rw-r--r--services/core/java/com/android/server/vcn/VcnNetworkProvider.java4
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java2
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java40
-rw-r--r--services/core/java/com/android/server/wm/RecentsAnimationController.java3
-rw-r--r--services/core/java/com/android/server/wm/Task.java14
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java2
-rw-r--r--telephony/java/android/telephony/ims/SipDelegateConnection.java22
-rw-r--r--telephony/java/android/telephony/ims/stub/SipDelegate.java23
170 files changed, 1424 insertions, 757 deletions
diff --git a/Android.bp b/Android.bp
index 4d8924d28859..6c5acd2b416b 100644
--- a/Android.bp
+++ b/Android.bp
@@ -273,9 +273,12 @@ java_library {
installable: false,
}
+// NOTE: This filegroup is exposed for vendor libraries to depend on and is referenced in
+// documentation. Do not remove without consulting the treble/hidl teams.
filegroup {
name: "framework-jarjar-rules",
srcs: ["framework-jarjar-rules.txt"],
+ visibility: ["//visibility:public"],
}
java_defaults {
diff --git a/core/api/current.txt b/core/api/current.txt
index d73e3a0e7af3..002b3334d731 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -52896,8 +52896,6 @@ package android.view.translation {
public static final class TranslationRequest.Builder {
ctor public TranslationRequest.Builder();
- method @Deprecated @NonNull public android.view.translation.TranslationRequest.Builder addTranslationRequestValue(@NonNull android.view.translation.TranslationRequestValue);
- method @Deprecated @NonNull public android.view.translation.TranslationRequest.Builder addViewTranslationRequest(@NonNull android.view.translation.ViewTranslationRequest);
method @NonNull public android.view.translation.TranslationRequest build();
method @NonNull public android.view.translation.TranslationRequest.Builder setFlags(int);
method @NonNull public android.view.translation.TranslationRequest.Builder setTranslationRequestValues(@NonNull java.util.List<android.view.translation.TranslationRequestValue>);
@@ -52931,7 +52929,6 @@ package android.view.translation {
method @NonNull public android.view.translation.TranslationResponse.Builder setFinalResponse(boolean);
method @NonNull public android.view.translation.TranslationResponse.Builder setTranslationResponseValue(int, @NonNull android.view.translation.TranslationResponseValue);
method @NonNull public android.view.translation.TranslationResponse.Builder setTranslationResponseValues(@NonNull android.util.SparseArray<android.view.translation.TranslationResponseValue>);
- method @Deprecated @NonNull public android.view.translation.TranslationResponse.Builder setTranslationStatus(int);
method @NonNull public android.view.translation.TranslationResponse.Builder setViewTranslationResponse(int, @NonNull android.view.translation.ViewTranslationResponse);
method @NonNull public android.view.translation.TranslationResponse.Builder setViewTranslationResponses(@NonNull android.util.SparseArray<android.view.translation.ViewTranslationResponse>);
}
diff --git a/core/api/removed.txt b/core/api/removed.txt
index cdb6a5814217..57e1598b4c33 100644
--- a/core/api/removed.txt
+++ b/core/api/removed.txt
@@ -560,6 +560,15 @@ package android.view.translation {
method @Deprecated public void removeTranslationCapabilityUpdateListener(int, int, @NonNull android.app.PendingIntent);
}
+ public static final class TranslationRequest.Builder {
+ method @Deprecated @NonNull public android.view.translation.TranslationRequest.Builder addTranslationRequestValue(@NonNull android.view.translation.TranslationRequestValue);
+ method @Deprecated @NonNull public android.view.translation.TranslationRequest.Builder addViewTranslationRequest(@NonNull android.view.translation.ViewTranslationRequest);
+ }
+
+ public static final class TranslationResponse.Builder {
+ method @Deprecated @NonNull public android.view.translation.TranslationResponse.Builder setTranslationStatus(int);
+ }
+
public final class TranslationSpec implements android.os.Parcelable {
ctor @Deprecated public TranslationSpec(@NonNull String, int);
method @Deprecated @NonNull public String getLanguage();
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 6f68e3fe902c..f23966e8d164 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -10565,6 +10565,7 @@ package android.service.voice {
method public void onDetect(@NonNull android.service.voice.AlwaysOnHotwordDetector.EventPayload, long, @NonNull android.service.voice.HotwordDetectionService.Callback);
method public void onDetect(@NonNull android.service.voice.HotwordDetectionService.Callback);
method public void onDetect(@NonNull android.os.ParcelFileDescriptor, @NonNull android.media.AudioFormat, @Nullable android.os.PersistableBundle, @NonNull android.service.voice.HotwordDetectionService.Callback);
+ method public void onStopDetection();
method public void onUpdateState(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, long, @Nullable java.util.function.IntConsumer);
field public static final int INITIALIZATION_STATUS_SUCCESS = 0; // 0x0
field public static final int INITIALIZATION_STATUS_UNKNOWN = 100; // 0x64
@@ -10604,6 +10605,12 @@ package android.service.voice {
field @NonNull public static final android.os.Parcelable.Creator<android.service.voice.HotwordRejectedResult> CREATOR;
}
+ public static final class HotwordRejectedResult.Builder {
+ ctor public HotwordRejectedResult.Builder();
+ method @NonNull public android.service.voice.HotwordRejectedResult build();
+ method @NonNull public android.service.voice.HotwordRejectedResult.Builder setConfidenceLevel(int);
+ }
+
public class VoiceInteractionService extends android.app.Service {
method @NonNull public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback);
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, @Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, android.service.voice.AlwaysOnHotwordDetector.Callback);
@@ -13651,8 +13658,7 @@ package android.telephony.ims {
}
public interface SipDelegateConnection {
- method public default void cleanupSession(@NonNull String);
- method @Deprecated public default void closeDialog(@NonNull String);
+ method public void cleanupSession(@NonNull String);
method public void notifyMessageReceiveError(@NonNull String, int);
method public void notifyMessageReceived(@NonNull String);
method public void sendMessage(@NonNull android.telephony.ims.SipMessage, long);
@@ -14104,8 +14110,7 @@ package android.telephony.ims.stub {
}
public interface SipDelegate {
- method public default void cleanupSession(@NonNull String);
- method @Deprecated public default void closeDialog(@NonNull String);
+ method public void cleanupSession(@NonNull String);
method public void notifyMessageReceiveError(@NonNull String, int);
method public void notifyMessageReceived(@NonNull String);
method public void sendMessage(@NonNull android.telephony.ims.SipMessage, long);
diff --git a/core/java/android/app/IUiModeManager.aidl b/core/java/android/app/IUiModeManager.aidl
index 9f21bcc5f45c..440dd629c114 100644
--- a/core/java/android/app/IUiModeManager.aidl
+++ b/core/java/android/app/IUiModeManager.aidl
@@ -67,7 +67,6 @@ interface IUiModeManager {
* 1 - notnight mode
* 2 - night mode
* 3 - automatic mode switching
- * @throws RemoteException
*/
void setApplicationNightMode(in int mode);
diff --git a/core/java/android/hardware/biometrics/BiometricFaceConstants.java b/core/java/android/hardware/biometrics/BiometricFaceConstants.java
index 83e273a91f91..fe43c83d17f1 100644
--- a/core/java/android/hardware/biometrics/BiometricFaceConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricFaceConstants.java
@@ -53,9 +53,6 @@ public interface BiometricFaceConstants {
// authentication or removal. Must agree with the list in HAL h file
//
- /**
- * @hide
- */
@IntDef({FACE_ERROR_HW_UNAVAILABLE,
FACE_ERROR_UNABLE_TO_PROCESS,
FACE_ERROR_TIMEOUT,
@@ -110,8 +107,6 @@ public interface BiometricFaceConstants {
/**
* The {@link FaceManager#remove} call failed. Typically this will happen when the
* provided face id was incorrect.
- *
- * @hide
*/
int FACE_ERROR_UNABLE_TO_REMOVE = 6;
@@ -160,8 +155,6 @@ public interface BiometricFaceConstants {
/**
* The user pressed the negative button. This is a placeholder that is currently only used
* by the support library.
- *
- * @hide
*/
int FACE_ERROR_NEGATIVE_BUTTON = 13;
@@ -177,24 +170,23 @@ public interface BiometricFaceConstants {
* security update has addressed this issue. This error can be received if for example,
* authentication was requested with {@link Authenticators#BIOMETRIC_STRONG}, but the
* sensor's strength can currently only meet {@link Authenticators#BIOMETRIC_WEAK}.
- * @hide
*/
int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15;
/**
* Authentication cannot proceed because re-enrollment is required.
- * @hide
*/
int BIOMETRIC_ERROR_RE_ENROLL = 16;
/**
* Unknown error received from the HAL.
- * @hide
*/
int FACE_ERROR_UNKNOWN = 17;
/**
- * @hide
+ * Vendor codes received from the HAL start at 0. Codes that the framework exposes to keyguard
+ * append this value for some reason. We should probably remove this and just send the actual
+ * vendor code.
*/
int FACE_ERROR_VENDOR_BASE = 1000;
@@ -203,9 +195,6 @@ public interface BiometricFaceConstants {
// existing constants. These must agree with face@1.0/types.hal.
//
- /**
- * @hide
- */
@IntDef({FACE_ACQUIRED_GOOD,
FACE_ACQUIRED_INSUFFICIENT,
FACE_ACQUIRED_TOO_BRIGHT,
@@ -229,7 +218,10 @@ public interface BiometricFaceConstants {
FACE_ACQUIRED_START,
FACE_ACQUIRED_SENSOR_DIRTY,
FACE_ACQUIRED_VENDOR,
- FACE_ACQUIRED_UNKNOWN})
+ FACE_ACQUIRED_UNKNOWN,
+ FACE_ACQUIRED_FIRST_FRAME_RECEIVED,
+ FACE_ACQUIRED_DARK_GLASSES_DETECTED,
+ FACE_ACQUIRED_MOUTH_COVERING_DETECTED})
@Retention(RetentionPolicy.SOURCE)
@interface FaceAcquired {}
@@ -402,19 +394,35 @@ public interface BiometricFaceConstants {
/**
* Hardware vendors may extend this list if there are conditions that do not fall under one of
* the above categories. Vendors are responsible for providing error strings for these errors.
- *
- * @hide
*/
int FACE_ACQUIRED_VENDOR = 22;
/**
* Unknown acquired code received from the HAL.
- * @hide
*/
int FACE_ACQUIRED_UNKNOWN = 23;
/**
- * @hide
+ * The first frame from the camera has been received.
+ */
+ int FACE_ACQUIRED_FIRST_FRAME_RECEIVED = 24;
+
+ /**
+ * Dark glasses detected. This can be useful for providing relevant feedback to the user and
+ * enabling an alternative authentication logic if the implementation supports it.
+ */
+ int FACE_ACQUIRED_DARK_GLASSES_DETECTED = 25;
+
+ /**
+ * A face mask or face covering detected. This can be useful for providing relevant feedback to
+ * the user and enabling an alternative authentication logic if the implementation supports it.
+ */
+ int FACE_ACQUIRED_MOUTH_COVERING_DETECTED = 26;
+
+ /**
+ * Vendor codes received from the HAL start at 0. Codes that the framework exposes to keyguard
+ * append this value for some reason. We should probably remove this and just send the actual
+ * vendor code.
*/
int FACE_ACQUIRED_VENDOR_BASE = 1000;
}
diff --git a/core/java/android/hardware/face/FaceDataFrame.java b/core/java/android/hardware/face/FaceDataFrame.java
index 092359c99173..4dbfc85f0969 100644
--- a/core/java/android/hardware/face/FaceDataFrame.java
+++ b/core/java/android/hardware/face/FaceDataFrame.java
@@ -17,6 +17,7 @@
package android.hardware.face;
import android.annotation.NonNull;
+import android.hardware.biometrics.BiometricFaceConstants;
import android.os.Parcel;
import android.os.Parcelable;
@@ -26,7 +27,7 @@ import android.os.Parcelable;
* @hide
*/
public final class FaceDataFrame implements Parcelable {
- private final int mAcquiredInfo;
+ @BiometricFaceConstants.FaceAcquired private final int mAcquiredInfo;
private final int mVendorCode;
private final float mPan;
private final float mTilt;
@@ -48,7 +49,7 @@ public final class FaceDataFrame implements Parcelable {
* @param isCancellable Whether the ongoing face operation should be canceled.
*/
public FaceDataFrame(
- int acquiredInfo,
+ @BiometricFaceConstants.FaceAcquired int acquiredInfo,
int vendorCode,
float pan,
float tilt,
@@ -69,7 +70,7 @@ public final class FaceDataFrame implements Parcelable {
* @param vendorCode An integer representing a custom vendor-specific message. Ignored unless
* {@code acquiredInfo} is {@code FACE_ACQUIRED_VENDOR}.
*/
- public FaceDataFrame(int acquiredInfo, int vendorCode) {
+ public FaceDataFrame(@BiometricFaceConstants.FaceAcquired int acquiredInfo, int vendorCode) {
mAcquiredInfo = acquiredInfo;
mVendorCode = vendorCode;
mPan = 0f;
@@ -83,6 +84,7 @@ public final class FaceDataFrame implements Parcelable {
*
* @see android.hardware.biometrics.BiometricFaceConstants
*/
+ @BiometricFaceConstants.FaceAcquired
public int getAcquiredInfo() {
return mAcquiredInfo;
}
diff --git a/core/java/android/hardware/face/FaceManager.java b/core/java/android/hardware/face/FaceManager.java
index 55c90ce2a32f..12557f9b73eb 100644
--- a/core/java/android/hardware/face/FaceManager.java
+++ b/core/java/android/hardware/face/FaceManager.java
@@ -1449,6 +1449,8 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
case FACE_ACQUIRED_ROLL_TOO_EXTREME:
return context.getString(R.string.face_acquired_roll_too_extreme);
case FACE_ACQUIRED_FACE_OBSCURED:
+ case FACE_ACQUIRED_DARK_GLASSES_DETECTED:
+ case FACE_ACQUIRED_MOUTH_COVERING_DETECTED:
return context.getString(R.string.face_acquired_obscured);
case FACE_ACQUIRED_SENSOR_DIRTY:
return context.getString(R.string.face_acquired_sensor_dirty);
diff --git a/core/java/android/os/BinderProxy.java b/core/java/android/os/BinderProxy.java
index 2a9b703583a6..d44b016cb5d0 100644
--- a/core/java/android/os/BinderProxy.java
+++ b/core/java/android/os/BinderProxy.java
@@ -565,8 +565,7 @@ public final class BinderProxy implements IBinder {
}
try {
- boolean replyOwnsNative = (reply == null) ? false : reply.ownsNativeParcelObject();
- return transactNative(code, data, reply, replyOwnsNative, flags);
+ return transactNative(code, data, reply, flags);
} finally {
if (transactListener != null) {
transactListener.onTransactEnded(session);
@@ -589,7 +588,7 @@ public final class BinderProxy implements IBinder {
* Native implementation of transact() for proxies
*/
public native boolean transactNative(int code, Parcel data, Parcel reply,
- boolean replyOwnsNativeParcelObject, int flags) throws RemoteException;
+ int flags) throws RemoteException;
/**
* See {@link IBinder#linkToDeath(DeathRecipient, int)}
*/
diff --git a/core/java/android/os/HidlMemoryUtil.java b/core/java/android/os/HidlMemoryUtil.java
index 4252fe30f4ad..a1b2aef5884a 100644
--- a/core/java/android/os/HidlMemoryUtil.java
+++ b/core/java/android/os/HidlMemoryUtil.java
@@ -76,8 +76,7 @@ public final class HidlMemoryUtil {
return new HidlMemory("ashmem", 0, null);
}
- try {
- SharedMemory shmem = SharedMemory.create(name != null ? name : "", input.length);
+ try (SharedMemory shmem = SharedMemory.create(name != null ? name : "", input.length)) {
ByteBuffer buffer = shmem.mapReadWrite();
buffer.put(input);
shmem.unmap(buffer);
@@ -119,8 +118,7 @@ public final class HidlMemoryUtil {
return new HidlMemory("ashmem", 0, null);
}
- try {
- SharedMemory shmem = SharedMemory.create(name != null ? name : "", input.size());
+ try (SharedMemory shmem = SharedMemory.create(name != null ? name : "", input.size())) {
ByteBuffer buffer = shmem.mapReadWrite();
for (Byte b : input) {
buffer.put(b);
@@ -214,8 +212,12 @@ public final class HidlMemoryUtil {
if (fd == null) {
return new HidlMemory("ashmem", 0, null);
}
- NativeHandle handle = new NativeHandle(fd, true);
- return new HidlMemory("ashmem", size, handle);
+ try {
+ NativeHandle handle = new NativeHandle(Os.dup(fd), true);
+ return new HidlMemory("ashmem", size, handle);
+ } catch (ErrnoException e) {
+ throw new RuntimeException(e);
+ }
}
private static ByteBuffer getBuffer(@NonNull HidlMemory mem) {
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java
index 50f390bce890..e06e7b6be90a 100644
--- a/core/java/android/os/Parcel.java
+++ b/core/java/android/os/Parcel.java
@@ -3736,9 +3736,4 @@ public final class Parcel {
public long getBlobAshmemSize() {
return nativeGetBlobAshmemSize(mNativePtr);
}
-
- /** @hide */
- /*package*/ boolean ownsNativeParcelObject() {
- return mOwnsNativeParcelObject;
- }
}
diff --git a/core/java/android/service/voice/HotwordDetectionService.java b/core/java/android/service/voice/HotwordDetectionService.java
index 7dd3a1dd5ea7..deb6c01a3088 100644
--- a/core/java/android/service/voice/HotwordDetectionService.java
+++ b/core/java/android/service/voice/HotwordDetectionService.java
@@ -192,6 +192,11 @@ public abstract class HotwordDetectionService extends Service {
mContentCaptureManager = new ContentCaptureManager(
HotwordDetectionService.this, manager, options);
}
+
+ @Override
+ public void stopDetection() {
+ HotwordDetectionService.this.onStopDetection();
+ }
};
@Override
@@ -349,6 +354,15 @@ public abstract class HotwordDetectionService extends Service {
}
/**
+ * Called when the {@link VoiceInteractionService}
+ * {@link HotwordDetector#stopRecognition() requests} that hotword recognition be stopped.
+ * <p>
+ * Any open {@link android.media.AudioRecord} should be closed here.
+ */
+ public void onStopDetection() {
+ }
+
+ /**
* Callback for returning the detection result.
*
* @hide
diff --git a/core/java/android/service/voice/HotwordRejectedResult.java b/core/java/android/service/voice/HotwordRejectedResult.java
index 78664f604093..7b3f47d04e48 100644
--- a/core/java/android/service/voice/HotwordRejectedResult.java
+++ b/core/java/android/service/voice/HotwordRejectedResult.java
@@ -29,7 +29,7 @@ import com.android.internal.util.DataClass;
*/
@DataClass(
genConstructor = false,
- genHiddenBuilder = true,
+ genBuilder = true,
genEqualsHashCode = true,
genHiddenConstDefs = true,
genParcelable = true,
@@ -210,7 +210,6 @@ public final class HotwordRejectedResult implements Parcelable {
/**
* A builder for {@link HotwordRejectedResult}
- * @hide
*/
@SuppressWarnings("WeakerAccess")
@DataClass.Generated.Member
@@ -256,10 +255,10 @@ public final class HotwordRejectedResult implements Parcelable {
}
@DataClass.Generated(
- time = 1621551683210L,
+ time = 1621961370106L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/core/java/android/service/voice/HotwordRejectedResult.java",
- inputSignatures = "public static final int CONFIDENCE_LEVEL_NONE\npublic static final int CONFIDENCE_LEVEL_LOW\npublic static final int CONFIDENCE_LEVEL_MEDIUM\npublic static final int CONFIDENCE_LEVEL_HIGH\nprivate final @android.service.voice.HotwordRejectedResult.HotwordConfidenceLevelValue int mConfidenceLevel\nprivate static int defaultConfidenceLevel()\nclass HotwordRejectedResult extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genHiddenBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)")
+ inputSignatures = "public static final int CONFIDENCE_LEVEL_NONE\npublic static final int CONFIDENCE_LEVEL_LOW\npublic static final int CONFIDENCE_LEVEL_MEDIUM\npublic static final int CONFIDENCE_LEVEL_HIGH\nprivate final @android.service.voice.HotwordRejectedResult.HotwordConfidenceLevelValue int mConfidenceLevel\nprivate static int defaultConfidenceLevel()\nclass HotwordRejectedResult extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)")
@Deprecated
private void __metadata() {}
diff --git a/core/java/android/service/voice/IHotwordDetectionService.aidl b/core/java/android/service/voice/IHotwordDetectionService.aidl
index 7ba00982e6a2..72dd45aeeb0f 100644
--- a/core/java/android/service/voice/IHotwordDetectionService.aidl
+++ b/core/java/android/service/voice/IHotwordDetectionService.aidl
@@ -53,4 +53,6 @@ oneway interface IHotwordDetectionService {
void updateContentCaptureManager(
in IContentCaptureManager contentCaptureManager,
in ContentCaptureOptions options);
+
+ void stopDetection();
}
diff --git a/core/java/android/view/translation/TranslationRequest.java b/core/java/android/view/translation/TranslationRequest.java
index da1baf9a89d8..df4836ebde46 100644
--- a/core/java/android/view/translation/TranslationRequest.java
+++ b/core/java/android/view/translation/TranslationRequest.java
@@ -327,7 +327,9 @@ public final class TranslationRequest implements Parcelable {
return this;
}
- /** @see #setTranslationRequestValues */
+ /** @see #setTranslationRequestValues
+ * @removed
+ */
@DataClass.Generated.Member
@Override
@Deprecated
@@ -350,7 +352,9 @@ public final class TranslationRequest implements Parcelable {
return this;
}
- /** @see #setViewTranslationRequests */
+ /** @see #setViewTranslationRequests
+ * @removed
+ */
@DataClass.Generated.Member
@Override
@Deprecated
diff --git a/core/java/android/view/translation/TranslationResponse.java b/core/java/android/view/translation/TranslationResponse.java
index 7d23e1976837..b77f2e282650 100644
--- a/core/java/android/view/translation/TranslationResponse.java
+++ b/core/java/android/view/translation/TranslationResponse.java
@@ -367,6 +367,7 @@ public final class TranslationResponse implements Parcelable {
/**
* The translation result status code.
+ * @removed
*/
@DataClass.Generated.Member
@Override
@@ -447,7 +448,7 @@ public final class TranslationResponse implements Parcelable {
}
@DataClass.Generated(
- time = 1620089618357L,
+ time = 1621972659130L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/core/java/android/view/translation/TranslationResponse.java",
inputSignatures = "public static final int TRANSLATION_STATUS_SUCCESS\npublic static final int TRANSLATION_STATUS_UNKNOWN_ERROR\npublic static final int TRANSLATION_STATUS_CONTEXT_UNSUPPORTED\nprivate final @android.view.translation.TranslationResponse.TranslationStatus int mTranslationStatus\nprivate final @android.annotation.NonNull android.util.SparseArray<android.view.translation.TranslationResponseValue> mTranslationResponseValues\nprivate final @android.annotation.NonNull android.util.SparseArray<android.view.translation.ViewTranslationResponse> mViewTranslationResponses\nprivate final boolean mFinalResponse\nprivate static android.util.SparseArray<android.view.translation.TranslationResponseValue> defaultTranslationResponseValues()\nprivate static android.util.SparseArray<android.view.translation.ViewTranslationResponse> defaultViewTranslationResponses()\nprivate static boolean defaultFinalResponse()\nclass TranslationResponse extends java.lang.Object implements [android.os.Parcelable]\npublic abstract @java.lang.Deprecated android.view.translation.TranslationResponse.Builder setTranslationStatus(int)\npublic @android.annotation.NonNull @java.lang.SuppressWarnings android.view.translation.TranslationResponse.Builder setTranslationResponseValue(int,android.view.translation.TranslationResponseValue)\npublic @android.annotation.NonNull @java.lang.SuppressWarnings android.view.translation.TranslationResponse.Builder setViewTranslationResponse(int,android.view.translation.ViewTranslationResponse)\nclass BaseBuilder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genBuilder=true, genToString=true, genHiddenConstDefs=true)\npublic abstract @java.lang.Deprecated android.view.translation.TranslationResponse.Builder setTranslationStatus(int)\npublic @android.annotation.NonNull @java.lang.SuppressWarnings android.view.translation.TranslationResponse.Builder setTranslationResponseValue(int,android.view.translation.TranslationResponseValue)\npublic @android.annotation.NonNull @java.lang.SuppressWarnings android.view.translation.TranslationResponse.Builder setViewTranslationResponse(int,android.view.translation.ViewTranslationResponse)\nclass BaseBuilder extends java.lang.Object implements []")
diff --git a/core/java/android/view/translation/TranslationResponseValue.java b/core/java/android/view/translation/TranslationResponseValue.java
index a68ae5658b37..e2ef5d341c82 100644
--- a/core/java/android/view/translation/TranslationResponseValue.java
+++ b/core/java/android/view/translation/TranslationResponseValue.java
@@ -49,7 +49,24 @@ public final class TranslationResponseValue implements Parcelable {
* <p>The dictionary definitions consists of groups of terms keyed by their corresponding parts
* of speech. This map-like structure is stored in a {@link Bundle}. The individual parts of
* speech can be traversed by {@link Bundle#keySet()} and used to get the corresponding list
- * of terms as {@link CharSequence}s.</p>
+ * of terms as {@link CharSequence}s.
+ *
+ * <ul>
+ * <li>"noun" -> ["def1", "def2", ...]</li>
+ * <li>"verb" -> ["def3", "def4", ...]</li>
+ * <li>...</li>
+ * </ul>
+ *
+ * The set of parts of speech can then be used by
+ * {@link Bundle#getCharSequenceArrayList(String)} to get the list of terms.
+ *
+ * <b>Example</b>:
+ *
+ * {@code for (String partOfSpeech : extras.getBundle(EXTRA_DEFINITIONS).keySet()) {
+ * ArrayList<CharSequence> terms =
+ * extras.getBundle(EXTRA_DEFINITIONS).getCharSequenceArrayList(partOfSpeech);
+ * ...
+ * }}</p>
*/
public static final String EXTRA_DEFINITIONS = "android.view.translation.extra.DEFINITIONS";
@@ -70,7 +87,8 @@ public final class TranslationResponseValue implements Parcelable {
/**
* Extra results associated with the translated text.
*
- * <p>The bundle includes {@link #EXTRA_DEFINITIONS}, obtained by {@link Bundle#getBundle}.</p>
+ * <p>The bundle includes {@link #EXTRA_DEFINITIONS}, obtained by {@link Bundle#getBundle}.
+ * </p>
*/
@NonNull
private final Bundle mExtras;
@@ -190,7 +208,8 @@ public final class TranslationResponseValue implements Parcelable {
/**
* Extra results associated with the translated text.
*
- * <p>The bundle includes {@link #EXTRA_DEFINITIONS}, obtained by {@link Bundle#getBundle}.</p>
+ * <p>The bundle includes {@link #EXTRA_DEFINITIONS}, obtained by {@link Bundle#getBundle}.
+ * </p>
*/
@DataClass.Generated.Member
public @NonNull Bundle getExtras() {
@@ -370,7 +389,8 @@ public final class TranslationResponseValue implements Parcelable {
/**
* Extra results associated with the translated text.
*
- * <p>The bundle includes {@link #EXTRA_DEFINITIONS}, obtained by {@link Bundle#getBundle}.</p>
+ * <p>The bundle includes {@link #EXTRA_DEFINITIONS}, obtained by {@link Bundle#getBundle}.
+ * </p>
*/
@DataClass.Generated.Member
public @NonNull Builder setExtras(@NonNull Bundle value) {
@@ -423,7 +443,7 @@ public final class TranslationResponseValue implements Parcelable {
}
@DataClass.Generated(
- time = 1621034223313L,
+ time = 1621623218037L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/core/java/android/view/translation/TranslationResponseValue.java",
inputSignatures = "public static final int STATUS_SUCCESS\npublic static final int STATUS_ERROR\npublic static final java.lang.String EXTRA_DEFINITIONS\nprivate final @android.view.translation.TranslationResponseValue.Status int mStatusCode\nprivate final @android.annotation.Nullable java.lang.CharSequence mText\nprivate final @android.annotation.NonNull android.os.Bundle mExtras\nprivate final @android.annotation.Nullable java.lang.CharSequence mTransliteration\npublic static @android.annotation.NonNull android.view.translation.TranslationResponseValue forError()\nprivate static java.lang.CharSequence defaultText()\nprivate static android.os.Bundle defaultExtras()\nprivate static java.lang.CharSequence defaultTransliteration()\nclass TranslationResponseValue extends java.lang.Object implements [android.os.Parcelable]\nclass BaseBuilder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genBuilder=true, genToString=true, genEqualsHashCode=true, genHiddenConstDefs=true)\nclass BaseBuilder extends java.lang.Object implements []")
diff --git a/core/jni/android_os_Parcel.cpp b/core/jni/android_os_Parcel.cpp
index 3acbd1ecd16e..787d34822ef7 100644
--- a/core/jni/android_os_Parcel.cpp
+++ b/core/jni/android_os_Parcel.cpp
@@ -36,7 +36,6 @@
#include <utils/List.h>
#include <utils/KeyedVector.h>
#include <binder/Parcel.h>
-#include <binder/ParcelRef.h>
#include <binder/ProcessState.h>
#include <binder/IServiceManager.h>
#include <utils/threads.h>
@@ -516,9 +515,8 @@ static jobject android_os_Parcel_readFileDescriptor(JNIEnv* env, jclass clazz, j
static jlong android_os_Parcel_create(JNIEnv* env, jclass clazz)
{
- sp<ParcelRef> parcelRef = ParcelRef::create();
- parcelRef->incStrong(reinterpret_cast<const void*>(android_os_Parcel_create));
- return reinterpret_cast<jlong>(static_cast<Parcel *>(parcelRef.get()));
+ Parcel* parcel = new Parcel();
+ return reinterpret_cast<jlong>(parcel);
}
static void android_os_Parcel_freeBuffer(JNIEnv* env, jclass clazz, jlong nativePtr)
@@ -531,8 +529,8 @@ static void android_os_Parcel_freeBuffer(JNIEnv* env, jclass clazz, jlong native
static void android_os_Parcel_destroy(JNIEnv* env, jclass clazz, jlong nativePtr)
{
- ParcelRef* derivative = static_cast<ParcelRef*>(reinterpret_cast<Parcel*>(nativePtr));
- derivative->decStrong(reinterpret_cast<const void*>(android_os_Parcel_create));
+ Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
+ delete parcel;
}
static jbyteArray android_os_Parcel_marshall(JNIEnv* env, jclass clazz, jlong nativePtr)
diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp
index 29f8ccf37654..793b4eba788c 100644
--- a/core/jni/android_util_Binder.cpp
+++ b/core/jni/android_util_Binder.cpp
@@ -35,7 +35,6 @@
#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
#include <binder/Parcel.h>
-#include <binder/ParcelRef.h>
#include <binder/ProcessState.h>
#include <binder/Stability.h>
#include <binderthreadstate/CallerUtils.h>
@@ -1381,8 +1380,7 @@ static bool should_time_binder_calls() {
}
static jboolean android_os_BinderProxy_transact(JNIEnv* env, jobject obj,
- jint code, jobject dataObj, jobject replyObj, jboolean replyObjOwnsNativeParcel,
- jint flags) // throws RemoteException
+ jint code, jobject dataObj, jobject replyObj, jint flags) // throws RemoteException
{
if (dataObj == NULL) {
jniThrowNullPointerException(env, NULL);
@@ -1424,21 +1422,6 @@ static jboolean android_os_BinderProxy_transact(JNIEnv* env, jobject obj,
status_t err = target->transact(code, *data, reply, flags);
//if (reply) printf("Transact from Java code to %p received: ", target); reply->print();
- if (reply) {
- if (replyObjOwnsNativeParcel) {
- // as per Parcel java class constructor, here, "reply" MUST be a "ParcelRef"
- // only for Parcel that contained Binder objects
- if (reply->objectsCount() > 0) {
- IPCThreadState::self()->createTransactionReference(static_cast<ParcelRef*>(reply));
- }
- } else {
- // as per Parcel.java, if Parcel java object NOT owning native Parcel object, it will
- // NOT destroy the native Parcel object upon GC(finalize()), so, there will be no race
- // condtion in this case. Please refer to the java class methods: Parcel.finalize(),
- // Parcel.destroy().
- }
- }
-
if (kEnableBinderSample) {
if (time_binder_calls) {
conditionally_log_binder_call(start_millis, target, code);
@@ -1567,7 +1550,7 @@ static const JNINativeMethod gBinderProxyMethods[] = {
{"pingBinder", "()Z", (void*)android_os_BinderProxy_pingBinder},
{"isBinderAlive", "()Z", (void*)android_os_BinderProxy_isBinderAlive},
{"getInterfaceDescriptor", "()Ljava/lang/String;", (void*)android_os_BinderProxy_getInterfaceDescriptor},
- {"transactNative", "(ILandroid/os/Parcel;Landroid/os/Parcel;ZI)Z", (void*)android_os_BinderProxy_transact},
+ {"transactNative", "(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z", (void*)android_os_BinderProxy_transact},
{"linkToDeath", "(Landroid/os/IBinder$DeathRecipient;I)V", (void*)android_os_BinderProxy_linkToDeath},
{"unlinkToDeath", "(Landroid/os/IBinder$DeathRecipient;I)Z", (void*)android_os_BinderProxy_unlinkToDeath},
{"getNativeFinalizer", "()J", (void*)android_os_BinderProxy_getNativeFinalizer},
diff --git a/core/res/res/color/text_color_on_accent_device_default.xml b/core/res/res/color/text_color_on_accent_device_default.xml
new file mode 100644
index 000000000000..1379523258de
--- /dev/null
+++ b/core/res/res/color/text_color_on_accent_device_default.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 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.
+ -->
+<!-- Please see primary_text_material_light.xml -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_enabled="false"
+ android:color="@color/system_neutral1_400"/>
+ <item android:color="@color/system_neutral1_900"/>
+</selector>
diff --git a/core/res/res/drawable/notification_material_media_action_background.xml b/core/res/res/drawable/notification_material_media_action_background.xml
index 4f50f1519465..b4ec7fd8190c 100644
--- a/core/res/res/drawable/notification_material_media_action_background.xml
+++ b/core/res/res/drawable/notification_material_media_action_background.xml
@@ -16,4 +16,10 @@
-->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
- android:color="@color/ripple_material_light" />
+ android:color="@color/ripple_material_light">
+ <item android:id="@id/mask">
+ <shape android:shape="oval">
+ <solid android:color="#333" />
+ </shape>
+ </item>
+</ripple>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index e975938d3f7f..a5f505176d5d 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -1137,6 +1137,9 @@
<!-- Darker accent color used on Material NEXT buttons. @hide -->
<attr name="colorAccentPrimaryVariant" format="color" />
+ <!-- Text color used on top of Material NEXT accent colors. @hide -->
+ <attr name="textColorOnAccent" format="color" />
+
<!-- Secondary darker accent color used on Material NEXT buttons. @hide -->
<attr name="colorAccentSecondaryVariant" format="color" />
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 28f18a4124de..1ddff3272b11 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -955,7 +955,7 @@
4 - Go to voice assist
5 - Go to assistant (Settings.Secure.ASSISTANT)
-->
- <integer name="config_longPressOnPowerBehavior">1</integer>
+ <integer name="config_longPressOnPowerBehavior">5</integer>
<!-- Whether the setting to change long press on power behaviour from default to assistant (5)
is available in Settings.
@@ -973,7 +973,7 @@
1 - Mute toggle
2 - Global actions menu
-->
- <integer name="config_keyChordPowerVolumeUp">1</integer>
+ <integer name="config_keyChordPowerVolumeUp">2</integer>
<!-- Control the behavior when the user long presses the back button. Non-zero values are only
valid for watches as part of CDD/CTS.
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 52892431fc8e..b33a2819b55d 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1594,7 +1594,7 @@
<!-- Message shown during fingerprint acquisision when the fingerprint sensor needs cleaning -->
<string name="fingerprint_acquired_imager_dirty">Clean the sensor</string>
<!-- Message shown during fingerprint acquisision when the user removes their finger from the sensor too quickly -->
- <string name="fingerprint_acquired_too_fast">Finger moved too fast</string>
+ <string name="fingerprint_acquired_too_fast">Hold a little longer</string>
<!-- Message shown during fingerprint acquisision when the user moves their finger too slowly -->
<string name="fingerprint_acquired_too_slow">Finger moved too slow. Please try again.</string>
<!-- Message shown during fingerprint acquisition when the fingerprint was already enrolled.[CHAR LIMIT=50] -->
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index d86c6e727048..4da5859fa49b 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -4274,6 +4274,7 @@
<java-symbol type="attr" name="colorSurfaceHighlight" format="color" />
<java-symbol type="attr" name="colorSurfaceVariant" format="color" />
<java-symbol type="attr" name="colorSurfaceHeader" format="color" />
+ <java-symbol type="attr" name="textColorOnAccent" format="color" />
<!-- CEC Configuration -->
<java-symbol type="bool" name="config_cecHdmiCecEnabled_userConfigurable" />
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index 41bedb2ed43c..97acd5b9bf1e 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -232,6 +232,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
</style>
@@ -260,6 +261,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -305,6 +307,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -352,6 +355,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -398,6 +402,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -459,6 +464,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -497,6 +503,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -541,6 +548,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -586,6 +594,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -647,6 +656,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -693,6 +703,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -737,6 +748,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -783,6 +795,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -828,6 +841,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -873,6 +887,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -918,6 +933,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -963,6 +979,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1012,6 +1029,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -1058,6 +1076,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -1101,6 +1120,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -1298,6 +1318,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
<item name="colorPopupBackground">?attr/colorBackgroundFloating</item>
@@ -1327,6 +1348,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1371,6 +1393,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1416,6 +1439,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1463,6 +1487,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1509,6 +1534,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1572,6 +1598,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1609,6 +1636,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1656,6 +1684,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1704,6 +1733,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1751,6 +1781,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
</style>
@@ -1780,6 +1811,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
</style>
@@ -1810,6 +1842,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1859,6 +1892,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1906,6 +1940,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1952,6 +1987,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -1997,6 +2033,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -2042,6 +2079,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -2085,6 +2123,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -2246,6 +2285,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_dark</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_dark</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_dark</item>
<item name="colorForegroundInverse">@color/foreground_device_default_light</item>
@@ -2290,6 +2330,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -2344,6 +2385,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
@@ -2391,6 +2433,7 @@ easier.
<item name="textColorPrimary">@color/text_color_primary_device_default_light</item>
<item name="textColorSecondary">@color/text_color_secondary_device_default_light</item>
<item name="textColorTertiary">@color/text_color_tertiary_device_default_light</item>
+ <item name="textColorOnAccent">@color/text_color_on_accent_device_default</item>
<item name="colorForeground">@color/foreground_device_default_light</item>
<item name="colorForegroundInverse">@color/foreground_device_default_dark</item>
diff --git a/framework-jarjar-rules.txt b/framework-jarjar-rules.txt
index 52ee63a15a63..be21f4e87101 100644
--- a/framework-jarjar-rules.txt
+++ b/framework-jarjar-rules.txt
@@ -1,3 +1,7 @@
+# This rule is meant to be reused across libraries in the bootclasspath that depend
+# on the HIDL libraries.
rule android.hidl.** android.internal.hidl.@1
+
+# Framework-specific renames.
rule android.net.wifi.WifiAnnotations* android.internal.wifi.WifiAnnotations@1
rule com.android.server.vcn.util.** com.android.server.vcn.repackaged.util.@1
diff --git a/packages/SettingsLib/AppPreference/res/layout/preference_app.xml b/packages/SettingsLib/AppPreference/res/layout/preference_app.xml
index 657a12cd13de..e65f7de2466a 100644
--- a/packages/SettingsLib/AppPreference/res/layout/preference_app.xml
+++ b/packages/SettingsLib/AppPreference/res/layout/preference_app.xml
@@ -90,7 +90,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical|end"
- android:minWidth="64dp"
+ android:minWidth="@dimen/two_target_min_width"
android:orientation="vertical"/>
</LinearLayout>
diff --git a/packages/SettingsLib/MainSwitchPreference/Android.bp b/packages/SettingsLib/MainSwitchPreference/Android.bp
index 4ce854ada849..23ee49e70595 100644
--- a/packages/SettingsLib/MainSwitchPreference/Android.bp
+++ b/packages/SettingsLib/MainSwitchPreference/Android.bp
@@ -15,6 +15,7 @@ android_library {
static_libs: [
"androidx.preference_preference",
+ "SettingsLibSettingsTheme",
],
sdk_version: "system_current",
diff --git a/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml b/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml
index 9ca3683dfd31..58ab9921f9f7 100644
--- a/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml
+++ b/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml
@@ -18,13 +18,4 @@
<resources>
<color name="settingslib_switchbar_switch_track_tint">#82000000</color>
<color name="settingslib_switchbar_switch_thumb_tint">@android:color/black</color>
-
- <!-- Material next thumb off color-->
- <color name="settingslib_thumb_off_color">@android:color/system_neutral2_300</color>
-
- <!-- Material next track on color-->
- <color name="settingslib_track_on_color">@android:color/system_accent2_700</color>
-
- <!-- Material next track off color-->
- <color name="settingslib_track_off_color">@android:color/system_neutral1_700</color>
</resources>
diff --git a/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml b/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml
index 2c73238da254..0c95a9ec65e1 100644
--- a/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml
+++ b/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml
@@ -19,19 +19,4 @@
<color name="settingslib_switchbar_background_color">@*android:color/material_grey_600</color>
<color name="settingslib_switchbar_switch_track_tint">#BFFFFFFF</color>
<color name="settingslib_switchbar_switch_thumb_tint">@android:color/white</color>
-
- <!-- Material next state on color-->
- <color name="settingslib_state_on_color">?androidprv:attr/colorAccentPrimary</color>
-
- <!-- Material next state off color-->
- <color name="settingslib_state_off_color">?androidprv:attr/colorAccentSecondary</color>
-
- <!-- Material next thumb off color-->
- <color name="settingslib_thumb_off_color">@android:color/system_neutral2_100</color>
-
- <!-- Material next track on color-->
- <color name="settingslib_track_on_color">?androidprv:attr/colorAccentPrimaryVariant</color>
-
- <!-- Material next track off color-->
- <color name="settingslib_track_off_color">@android:color/system_neutral2_600</color>
</resources>
diff --git a/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml b/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml
index e92b6716976e..b299061ce591 100644
--- a/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml
+++ b/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml
@@ -58,13 +58,14 @@
android:layout_weight="1"
android:orientation="vertical"
android:paddingTop="16dp"
- android:paddingBottom="16dp">
+ android:paddingBottom="16dp"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:singleLine="true"
+ android:maxLines="2"
android:textAppearance="?android:attr/textAppearanceListItem"/>
<LinearLayout
@@ -109,12 +110,13 @@
android:background="?android:attr/dividerVertical" />
<ImageView
android:id="@+id/radio_extra_widget"
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
+ android:minWidth="@dimen/two_target_min_width"
android:layout_height="fill_parent"
android:src="@drawable/ic_settings_accent"
android:contentDescription="@string/settings_label"
- android:paddingStart="16dp"
- android:paddingEnd="16dp"
+ android:paddingStart="24dp"
+ android:paddingEnd="24dp"
android:layout_gravity="center"
android:background="?android:attr/selectableItemBackground" />
</LinearLayout>
diff --git a/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_thumb_color.xml b/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_thumb_color.xml
new file mode 100644
index 000000000000..df3bad4ee377
--- /dev/null
+++ b/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_thumb_color.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Disabled status of thumb -->
+ <item android:state_enabled="false"
+ android:color="@color/settingslib_thumb_off_color" />
+ <!-- Toggle off status of thumb -->
+ <item android:state_checked="false"
+ android:color="@color/settingslib_thumb_off_color" />
+ <!-- Enabled or toggle on status of thumb -->
+ <item android:color="@color/settingslib_state_on_color" />
+</selector> \ No newline at end of file
diff --git a/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_track_color.xml b/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_track_color.xml
new file mode 100644
index 000000000000..9568f52dcd01
--- /dev/null
+++ b/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_track_color.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Disabled status of thumb -->
+ <item android:state_enabled="false"
+ android:color="@color/settingslib_track_off_color"
+ android:alpha="?android:attr/disabledAlpha" />
+ <!-- Toggle off status of thumb -->
+ <item android:state_checked="false"
+ android:color="@color/settingslib_track_off_color" />
+ <!-- Enabled or toggle on status of thumb -->
+ <item android:color="@color/settingslib_track_on_color" />
+</selector> \ No newline at end of file
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v31/settingslib_switch_thumb.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v31/settingslib_switch_thumb.xml
new file mode 100644
index 000000000000..87c6dea49e2b
--- /dev/null
+++ b/packages/SettingsLib/SettingsTheme/res/drawable-v31/settingslib_switch_thumb.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2021 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.
+ -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:top="4dp"
+ android:left="4dp"
+ android:right="4dp"
+ android:bottom="4dp">
+ <shape android:shape="oval" >
+ <size android:height="20dp" android:width="20dp" />
+ <solid android:color="@color/settingslib_switch_thumb_color" />
+ </shape>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v31/settingslib_switch_track.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v31/settingslib_switch_track.xml
new file mode 100644
index 000000000000..cb8f3f09201c
--- /dev/null
+++ b/packages/SettingsLib/SettingsTheme/res/drawable-v31/settingslib_switch_track.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2021 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.
+ -->
+
+<shape
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle"
+ android:width="52dp"
+ android:height="28dp">
+
+ <solid android:color="@color/settingslib_switch_track_color" />
+ <corners android:radius="35dp" />
+</shape> \ No newline at end of file
diff --git a/packages/SettingsLib/SettingsTheme/res/values-night-v31/colors.xml b/packages/SettingsLib/SettingsTheme/res/values-night-v31/colors.xml
new file mode 100644
index 000000000000..df0e3e1d9641
--- /dev/null
+++ b/packages/SettingsLib/SettingsTheme/res/values-night-v31/colors.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2020 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.
+ -->
+
+<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+ <!-- Material next thumb off color-->
+ <color name="settingslib_thumb_off_color">@android:color/system_neutral2_300</color>
+
+ <!-- Material next track on color-->
+ <color name="settingslib_track_on_color">@android:color/system_accent2_700</color>
+
+ <!-- Material next track off color-->
+ <color name="settingslib_track_off_color">@android:color/system_neutral1_700</color>
+</resources> \ No newline at end of file
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml
new file mode 100644
index 000000000000..c9bc583b209f
--- /dev/null
+++ b/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2020 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.
+ -->
+
+<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+ <!-- Material next state on color-->
+ <color name="settingslib_state_on_color">?androidprv:attr/colorAccentPrimary</color>
+
+ <!-- Material next state off color-->
+ <color name="settingslib_state_off_color">?androidprv:attr/colorAccentSecondary</color>
+
+ <!-- Material next thumb off color-->
+ <color name="settingslib_thumb_off_color">@android:color/system_neutral2_100</color>
+
+ <!-- Material next track on color-->
+ <color name="settingslib_track_on_color">?androidprv:attr/colorAccentPrimaryVariant</color>
+
+ <!-- Material next track off color-->
+ <color name="settingslib_track_off_color">@android:color/system_neutral2_600</color>
+</resources>
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/styles.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/styles.xml
index 83a259e624bd..e3a023995e76 100644
--- a/packages/SettingsLib/SettingsTheme/res/values-v31/styles.xml
+++ b/packages/SettingsLib/SettingsTheme/res/values-v31/styles.xml
@@ -22,4 +22,10 @@
<style name="TextAppearance.CategoryTitle.SettingsLib"
parent="@*android:style/TextAppearance.DeviceDefault.Body2" />
+
+ <style name="Switch.SettingsLib" parent="@android:style/Widget.Material.CompoundButton.Switch">
+ <item name="android:switchMinWidth">52dp</item>
+ <item name="android:track">@drawable/settingslib_switch_track</item>
+ <item name="android:thumb">@drawable/settingslib_switch_thumb</item>
+ </style>
</resources>
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml
index 69649e042ac4..adf506dc47cb 100644
--- a/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml
+++ b/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml
@@ -22,6 +22,7 @@
<item name="android:listPreferredItemPaddingStart">24dp</item>
<item name="android:listPreferredItemPaddingEnd">16dp</item>
<item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item>
+ <item name="android:switchStyle">@style/Switch.SettingsLib</item>
</style>
<!-- Using in SubSettings page including injected settings page -->
diff --git a/packages/SettingsLib/SettingsTheme/res/values/dimens.xml b/packages/SettingsLib/SettingsTheme/res/values/dimens.xml
index 3f473a3e0e85..25f9514c29b7 100644
--- a/packages/SettingsLib/SettingsTheme/res/values/dimens.xml
+++ b/packages/SettingsLib/SettingsTheme/res/values/dimens.xml
@@ -19,4 +19,5 @@
<dimen name="secondary_app_icon_size">32dp</dimen>
<dimen name="app_preference_padding_start">?android:attr/listPreferredItemPaddingStart</dimen>
<dimen name="app_icon_min_width">56dp</dimen>
+ <dimen name="two_target_min_width">72dp</dimen>
</resources>
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java
index 52d2b3c919d9..8f3e4bd87aa7 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java
@@ -19,7 +19,6 @@ package com.android.settingslib.drawer;
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER;
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI;
@@ -301,16 +300,8 @@ public abstract class Tile implements Parcelable {
}
int iconResId = mMetaData.getInt(META_DATA_PREFERENCE_ICON);
- // Set the icon
- if (iconResId == 0) {
- // Only fallback to componentInfo.icon if metadata does not contain ICON_URI.
- // ICON_URI should be loaded in app UI when need the icon object. Handling IPC at this
- // level is too complex because we don't have a strong threading contract for this class
- if (!mMetaData.containsKey(META_DATA_PREFERENCE_ICON_URI)) {
- iconResId = getComponentIcon(componentInfo);
- }
- }
- if (iconResId != 0) {
+ // Set the icon. Skip the transparent color for backward compatibility since Android S.
+ if (iconResId != 0 && iconResId != android.R.color.transparent) {
final Icon icon = Icon.createWithResource(componentInfo.packageName, iconResId);
if (isIconTintable(context)) {
final TypedArray a = context.obtainStyledAttributes(new int[]{
diff --git a/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target.xml b/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target.xml
index 7978e73b9b37..2c2756b36533 100644
--- a/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target.xml
+++ b/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target.xml
@@ -63,7 +63,7 @@
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:minWidth="64dp"
+ android:minWidth="@dimen/two_target_min_width"
android:gravity="center"
android:orientation="vertical" />
diff --git a/packages/SettingsLib/res/layout/preference_access_point.xml b/packages/SettingsLib/res/layout/preference_access_point.xml
index 9dc87de38ec2..f3f43accca3c 100644
--- a/packages/SettingsLib/res/layout/preference_access_point.xml
+++ b/packages/SettingsLib/res/layout/preference_access_point.xml
@@ -24,6 +24,8 @@
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:gravity="center_vertical"
android:background="?android:attr/selectableItemBackground"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:clipToPadding="false">
<LinearLayout
@@ -31,9 +33,7 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="start|center_vertical"
- android:clipToPadding="false"
- android:paddingStart="?android:attr/listPreferredItemPaddingStart"
- android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+ android:clipToPadding="false">
<LinearLayout
android:id="@+id/icon_frame"
@@ -89,7 +89,7 @@
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:minWidth="64dp"
+ android:minWidth="@dimen/two_target_min_width"
android:gravity="center"
android:orientation="vertical" />
@@ -97,7 +97,7 @@
android:id="@+id/icon_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:minWidth="64dp"
+ android:minWidth="@dimen/two_target_min_width"
android:minHeight="@dimen/min_tap_target_size"
android:layout_gravity="center"
android:background="?android:attr/selectableItemBackground"
diff --git a/packages/SettingsLib/res/layout/preference_checkable_two_target.xml b/packages/SettingsLib/res/layout/preference_checkable_two_target.xml
index 1ae1c8967679..e4f72422e408 100644
--- a/packages/SettingsLib/res/layout/preference_checkable_two_target.xml
+++ b/packages/SettingsLib/res/layout/preference_checkable_two_target.xml
@@ -24,6 +24,8 @@
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:gravity="center_vertical"
android:background="@android:color/transparent"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:clipToPadding="false">
<LinearLayout
@@ -32,9 +34,7 @@
android:layout_weight="1"
android:background="?android:attr/selectableItemBackground"
android:gravity="start|center_vertical"
- android:clipToPadding="false"
- android:paddingStart="?android:attr/listPreferredItemPaddingStart"
- android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+ android:clipToPadding="false">
<LinearLayout
android:id="@+id/checkbox_container"
@@ -86,7 +86,7 @@
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:minWidth="64dp"
+ android:minWidth="@dimen/two_target_min_width"
android:gravity="center"
android:orientation="vertical" />
diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java
index bd0b9e93b09d..6cb60d1aaf0e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java
+++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java
@@ -98,7 +98,7 @@ public class MetricsFeatureProvider {
/**
* Logs a simple action without page id or attribution
*/
- public void action(Context context, int category, Pair<Integer, Object>... taggedData) {
+ public void action(Context context, int category, Pair<Integer, Object>... taggedData) {
for (LogWriter writer : mLoggerWriters) {
writer.action(context, category, taggedData);
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java
index 4f8ecf8f8823..aa6b0bf33b69 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java
@@ -105,11 +105,10 @@ public class ActivityTileTest {
}
@Test
- public void getIcon_noIconMetadata_returnActivityIcon() {
- mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, 0);
+ public void getIcon_transparentColorInMetadata_returnNull() {
+ mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, android.R.color.transparent);
- assertThat(mTile.getIcon(RuntimeEnvironment.application).getResId())
- .isEqualTo(mActivityInfo.icon);
+ assertThat(mTile.getIcon(RuntimeEnvironment.application)).isNull();
}
@Test
diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml
index 83a0a32f5eef..2742ac3de7a7 100644
--- a/packages/SystemUI/res-keyguard/values-eu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml
@@ -22,7 +22,7 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="514691256816366517">"Teklatu-babeslea"</string>
<string name="keyguard_password_enter_pin_code" msgid="8582296866585566671">"Idatzi PIN kodea"</string>
- <string name="keyguard_password_enter_puk_code" msgid="3813154965969758868">"Idatzi SIM txartelaren PUK kodea eta PIN kode berria"</string>
+ <string name="keyguard_password_enter_puk_code" msgid="3813154965969758868">"Idatzi SIM txartelaren PUKa eta PIN berria"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="3529260761374385243">"SIM txartelaren PUK kodea"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="2304037870481240781">"SIM txartelaren PIN berria"</string>
<string name="keyguard_password_entry_touch_hint" msgid="6180028658339706333"><font size="17">"Pasahitza idazteko, sakatu hau"</font></string>
@@ -31,7 +31,7 @@
<string name="keyguard_enter_your_pin" msgid="5429932527814874032">"Idatzi PIN kodea"</string>
<string name="keyguard_enter_your_pattern" msgid="351503370332324745">"Marraztu eredua"</string>
<string name="keyguard_enter_your_password" msgid="7225626204122735501">"Idatzi pasahitza"</string>
- <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"PIN kode hori ez da zuzena."</string>
+ <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"PINa ez da zuzena."</string>
<string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Txartelak ez du balio."</string>
<string name="keyguard_charged" msgid="5478247181205188995">"Kargatuta"</string>
<string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hari gabe kargatzen"</string>
diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml
index d6fdfaf17e27..88c52d9be8f7 100644
--- a/packages/SystemUI/res-keyguard/values-lv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml
@@ -39,7 +39,7 @@
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek ātrā uzlāde"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek lēnā uzlāde"</string>
<string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Akumulatora darbības optimizēšana"</string>
- <string name="keyguard_low_battery" msgid="1868012396800230904">"Pievienojiet uzlādes ierīci."</string>
+ <string name="keyguard_low_battery" msgid="1868012396800230904">"Pievienojiet lādētāju."</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Lai atbloķētu, nospiediet izvēlnes ikonu."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Tīkls ir bloķēts."</string>
<string name="keyguard_missing_sim_message_short" msgid="704159478161444907">"Nav SIM kartes."</string>
diff --git a/packages/SystemUI/res/drawable/volume_background_bottom.xml b/packages/SystemUI/res/drawable/volume_background_bottom.xml
new file mode 100644
index 000000000000..ae3d15991f65
--- /dev/null
+++ b/packages/SystemUI/res/drawable/volume_background_bottom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 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
+ -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+ <size android:width="@dimen/volume_dialog_panel_width" />
+ <solid android:color="?androidprv:attr/colorSurface" />
+ <corners android:bottomLeftRadius="@dimen/volume_dialog_panel_width_half"
+ android:bottomRightRadius="@dimen/volume_dialog_panel_width_half"/>
+</shape> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/volume_background.xml b/packages/SystemUI/res/drawable/volume_background_top.xml
index 66f1d0da4990..3cd87fc32061 100644
--- a/packages/SystemUI/res/drawable/volume_background.xml
+++ b/packages/SystemUI/res/drawable/volume_background_top.xml
@@ -20,7 +20,8 @@
<shape>
<size android:width="@dimen/volume_dialog_panel_width" />
<solid android:color="?androidprv:attr/colorSurface" />
- <corners android:radius="@dimen/volume_dialog_panel_width_half"/>
+ <corners android:topLeftRadius="@dimen/volume_dialog_panel_width_half"
+ android:topRightRadius="@dimen/volume_dialog_panel_width_half"/>
</shape>
</item>
</layer-list> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/volume_background_top_rounded.xml b/packages/SystemUI/res/drawable/volume_background_top_rounded.xml
new file mode 100644
index 000000000000..77382e14631f
--- /dev/null
+++ b/packages/SystemUI/res/drawable/volume_background_top_rounded.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 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
+ -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+ <item>
+ <shape>
+ <size android:width="@dimen/volume_dialog_panel_width" />
+ <solid android:color="?androidprv:attr/colorSurface" />
+ <corners android:topLeftRadius="@dimen/volume_dialog_panel_width_half"
+ android:topRightRadius="@dimen/volume_dialog_panel_width_half"
+ android:bottomLeftRadius="@dimen/volume_dialog_panel_width_half"
+ android:bottomRightRadius="@dimen/volume_dialog_panel_width_half"/>
+ </shape>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/volume_row_rounded_background.xml b/packages/SystemUI/res/drawable/volume_row_rounded_background.xml
new file mode 100644
index 000000000000..95ba73df61c4
--- /dev/null
+++ b/packages/SystemUI/res/drawable/volume_row_rounded_background.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 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
+ -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+ <size android:width="@dimen/volume_dialog_panel_width" />
+ <solid android:color="?androidprv:attr/colorSurface" />
+ <corners android:radius="@dimen/volume_dialog_panel_width_half"/>
+</shape> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout-land-television/volume_dialog.xml b/packages/SystemUI/res/layout-land-television/volume_dialog.xml
index 8adc6eb753b5..6b5629facd41 100644
--- a/packages/SystemUI/res/layout-land-television/volume_dialog.xml
+++ b/packages/SystemUI/res/layout-land-television/volume_dialog.xml
@@ -32,7 +32,7 @@
android:clipToPadding="false">
<LinearLayout
- android:id="@+id/main"
+ android:id="@+id/volume_dialog_rows_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
diff --git a/packages/SystemUI/res/layout-land/volume_dialog.xml b/packages/SystemUI/res/layout-land/volume_dialog.xml
index 1a4e81279be4..b08e51372dd0 100644
--- a/packages/SystemUI/res/layout-land/volume_dialog.xml
+++ b/packages/SystemUI/res/layout-land/volume_dialog.xml
@@ -39,13 +39,12 @@
<LinearLayout
- android:id="@+id/volume_dialog_ringer_and_rows_container"
+ android:id="@+id/volume_dialog_top_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:padding="7dp"
android:clipChildren="false"
- android:background="@drawable/volume_background">
+ android:gravity="right">
<include layout="@layout/volume_ringer_drawer" />
@@ -80,7 +79,7 @@
</FrameLayout>
<LinearLayout
- android:id="@+id/main"
+ android:id="@+id/volume_dialog_rows_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
@@ -93,14 +92,17 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
- android:orientation="horizontal"
- android:layout_marginTop="@dimen/volume_row_slider_padding_start">
+ android:orientation="horizontal">
<!-- volume rows added and removed here! :-) -->
</LinearLayout>
<FrameLayout
android:id="@+id/settings_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/volume_background_bottom"
+ android:paddingLeft="@dimen/volume_dialog_ringer_rows_padding"
+ android:paddingBottom="@dimen/volume_dialog_ringer_rows_padding"
+ android:paddingRight="@dimen/volume_dialog_ringer_rows_padding">
<com.android.keyguard.AlphaOptimizedImageButton
android:id="@+id/settings"
android:src="@drawable/horizontal_ellipsis"
@@ -124,7 +126,7 @@
android:gravity="right"
android:layout_gravity="right"
android:clipToPadding="false"
- android:background="@drawable/volume_background">
+ android:background="@drawable/volume_row_rounded_background">
<com.android.systemui.volume.CaptionsToggleImageButton
android:id="@+id/odi_captions_icon"
android:src="@drawable/ic_volume_odi_captions_disabled"
diff --git a/packages/SystemUI/res/layout/navigation_bar.xml b/packages/SystemUI/res/layout/navigation_bar.xml
index a2a14c754e98..5f59e781ef5e 100644
--- a/packages/SystemUI/res/layout/navigation_bar.xml
+++ b/packages/SystemUI/res/layout/navigation_bar.xml
@@ -22,11 +22,15 @@
android:id="@+id/navigation_bar_view"
android:layout_height="match_parent"
android:layout_width="match_parent"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:background="@drawable/system_bar_background">
<com.android.systemui.navigationbar.NavigationBarInflaterView
android:id="@+id/navigation_inflater"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="match_parent"
+ android:clipChildren="false"
+ android:clipToPadding="false" />
</com.android.systemui.navigationbar.NavigationBarView>
diff --git a/packages/SystemUI/res/layout/navigation_layout.xml b/packages/SystemUI/res/layout/navigation_layout.xml
index 64c7422c27ed..46f238cbe588 100644
--- a/packages/SystemUI/res/layout/navigation_layout.xml
+++ b/packages/SystemUI/res/layout/navigation_layout.xml
@@ -23,6 +23,8 @@
android:layout_marginEnd="@dimen/rounded_corner_content_padding"
android:paddingStart="@dimen/nav_content_padding"
android:paddingEnd="@dimen/nav_content_padding"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:id="@+id/horizontal">
<com.android.systemui.navigationbar.buttons.NearestTouchFrame
diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml
index a39006c70fa7..beac05794fe9 100644
--- a/packages/SystemUI/res/layout/volume_dialog.xml
+++ b/packages/SystemUI/res/layout/volume_dialog.xml
@@ -37,15 +37,13 @@
android:clipToPadding="false"
android:clipChildren="false">
-
<LinearLayout
- android:id="@+id/volume_dialog_ringer_and_rows_container"
+ android:id="@+id/volume_dialog_top_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="vertical"
- android:padding="7dp"
android:clipChildren="false"
- android:background="@drawable/volume_background">
+ android:orientation="vertical"
+ android:gravity="right">
<include layout="@layout/volume_ringer_drawer" />
@@ -80,7 +78,7 @@
</FrameLayout>
<LinearLayout
- android:id="@+id/main"
+ android:id="@+id/volume_dialog_rows_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
@@ -93,14 +91,17 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
- android:orientation="horizontal"
- android:layout_marginTop="@dimen/volume_row_slider_padding_start">
+ android:orientation="horizontal">
<!-- volume rows added and removed here! :-) -->
</LinearLayout>
<FrameLayout
android:id="@+id/settings_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/volume_background_bottom"
+ android:paddingLeft="@dimen/volume_dialog_ringer_rows_padding"
+ android:paddingBottom="@dimen/volume_dialog_ringer_rows_padding"
+ android:paddingRight="@dimen/volume_dialog_ringer_rows_padding">
<com.android.keyguard.AlphaOptimizedImageButton
android:id="@+id/settings"
android:src="@drawable/horizontal_ellipsis"
@@ -122,9 +123,9 @@
android:layout_height="@dimen/volume_dialog_caption_size"
android:layout_marginTop="@dimen/volume_dialog_row_margin_bottom"
android:gravity="right"
- android:layout_gravity="center"
+ android:layout_gravity="right"
android:clipToPadding="false"
- android:background="@drawable/volume_background">
+ android:background="@drawable/volume_row_rounded_background">
<com.android.systemui.volume.CaptionsToggleImageButton
android:id="@+id/odi_captions_icon"
android:src="@drawable/ic_volume_odi_captions_disabled"
diff --git a/packages/SystemUI/res/layout/volume_dialog_row.xml b/packages/SystemUI/res/layout/volume_dialog_row.xml
index 4b5a008b896b..1b0076cae671 100644
--- a/packages/SystemUI/res/layout/volume_dialog_row.xml
+++ b/packages/SystemUI/res/layout/volume_dialog_row.xml
@@ -17,15 +17,18 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:tag="row"
android:layout_height="wrap_content"
- android:layout_width="@dimen/volume_dialog_slider_width"
+ android:layout_width="@dimen/volume_dialog_panel_width"
android:clipChildren="false"
android:clipToPadding="false"
- android:translationZ="@dimen/volume_dialog_elevation"
+ android:gravity="center"
+ android:paddingTop="@dimen/volume_dialog_ringer_rows_padding"
+ android:paddingBottom="@dimen/volume_dialog_ringer_rows_padding"
+ android:background="@drawable/volume_row_rounded_background"
android:theme="@style/volume_dialog_theme">
<LinearLayout
android:layout_height="wrap_content"
- android:layout_width="@dimen/volume_dialog_slider_width"
+ android:layout_width="@dimen/volume_dialog_panel_width"
android:gravity="center"
android:layout_gravity="center"
android:orientation="vertical" >
diff --git a/packages/SystemUI/res/layout/volume_ringer_drawer.xml b/packages/SystemUI/res/layout/volume_ringer_drawer.xml
index 9d14ac46e406..9b6c92c71e5d 100644
--- a/packages/SystemUI/res/layout/volume_ringer_drawer.xml
+++ b/packages/SystemUI/res/layout/volume_ringer_drawer.xml
@@ -18,9 +18,16 @@
<!-- Contains the active ringer icon and a hidden drawer containing all three ringer options. -->
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/volume_ringer_and_drawer_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
+ android:paddingLeft="@dimen/volume_dialog_ringer_rows_padding"
+ android:paddingTop="@dimen/volume_dialog_ringer_rows_padding"
+ android:paddingRight="@dimen/volume_dialog_ringer_rows_padding"
+ android:paddingBottom="@dimen/volume_dialog_ringer_rows_padding"
+ android:background="@drawable/volume_background_top"
+ android:layoutDirection="ltr"
android:clipToPadding="false"
android:clipChildren="false">
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 21c5d6eff1eb..31ff9c66b847 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -179,7 +179,7 @@
<string name="biometric_dialog_failed_attempts_now_wiping_user" msgid="7015008539146949115">"لقد استنفدت عدد المحاولات غير الصحيحة وسيتم حذف هذا المستخدم."</string>
<string name="biometric_dialog_failed_attempts_now_wiping_profile" msgid="5239378521440749682">"لقد استنفدت عدد المحاولات غير الصحيحة وسيتم حذف الملف الشخصي للعمل وبياناته."</string>
<string name="biometric_dialog_now_wiping_dialog_dismiss" msgid="7189432882125106154">"إغلاق"</string>
- <string name="fingerprint_dialog_touch_sensor" msgid="2817887108047658975">"المس زر استشعار بصمة الإصبع"</string>
+ <string name="fingerprint_dialog_touch_sensor" msgid="2817887108047658975">"المس مستشعر بصمة الإصبع"</string>
<string name="accessibility_fingerprint_dialog_fingerprint_icon" msgid="4465698996175640549">"رمز بصمة الإصبع"</string>
<string name="fingerprint_dialog_use_fingerprint_instead" msgid="6178228876763024452">"يتعذّر التعرّف على الوجه. استخدِم بصمة الإصبع بدلاً من ذلك."</string>
<string name="fingerprint_dialog_use_fingerprint" msgid="923777032861374285">"عليك استخدام بصمة الإصبع للمتابعة."</string>
@@ -431,8 +431,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"تم إيقاف الاتصال القريب المدى"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"تم تفعيل الاتصال القريب المدى"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"تسجيل الشاشة"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"بدء"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"إيقاف"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"هل تريد إزالة حظر ميكروفون الجهاز؟"</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index cd6a00782b71..a288d6fe5274 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -408,8 +408,7 @@
<string name="quick_settings_cellular_detail_data_used" msgid="6798849610647988987">"<xliff:g id="DATA_USED">%s</xliff:g> ব্যৱহৃত"</string>
<string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> সীমা"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> সকীয়নি"</string>
- <!-- no translation found for quick_settings_work_mode_label (6440531507319809121) -->
- <skip />
+ <string name="quick_settings_work_mode_label" msgid="6440531507319809121">"কৰ্মস্থানৰ এপ্‌"</string>
<string name="quick_settings_night_display_label" msgid="8180030659141778180">"ৰাতিৰ পোহৰ"</string>
<string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"সূৰ্যাস্তত অন কৰক"</string>
<string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"সূৰ্যোদয়ৰ লৈকে"</string>
@@ -424,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC নিষ্ক্ৰিয় হৈ আছে"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC সক্ষম হৈ আছে"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"স্ক্ৰীন ৰেকৰ্ড কৰা"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"আৰম্ভ কৰক"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"বন্ধ কৰক"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ডিভাইচৰ মাইক্ৰ\'ফ\'ন অৱৰোধৰ পৰা আঁতৰাবনে?"</string>
@@ -1042,8 +1040,7 @@
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"কাষলৈ নিয়ক আৰু লুকুৱাওক"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"কাষৰ বাহিৰলৈ নিয়ক আৰু দেখুৱাওক"</string>
<string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"ট’গল কৰক"</string>
- <!-- no translation found for quick_controls_title (7095074621086860062) -->
- <skip />
+ <string name="quick_controls_title" msgid="7095074621086860062">"গৃহ নিয়ন্ত্ৰণ"</string>
<string name="controls_providers_title" msgid="6879775889857085056">"নিয়ন্ত্ৰণসমূহ যোগ কৰিবলৈ এপ্‌ বাছনি কৰক"</string>
<plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> টা নিয়ন্ত্ৰণ যোগ কৰা হ’ল।</item>
@@ -1057,8 +1054,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"অপ্ৰিয়"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> নম্বৰ অৱস্থানলৈ স্থানান্তৰিত কৰক"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"নিয়ন্ত্ৰণসমূহ"</string>
- <!-- no translation found for controls_favorite_subtitle (6481675111056961083) -->
- <skip />
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ক্ষিপ্ৰ ছেটিঙৰ পৰা এক্সেছ কৰিবলৈ নিয়ন্ত্ৰণসমূহ বাছনি কৰক"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"নিয়ন্ত্ৰণসমূহ পুনৰ সজাবলৈ ধৰি ৰাখক আৰু টানি আনি এৰক"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"সকলো নিয়ন্ত্ৰণ আঁতৰোৱা হৈছে"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"সালসলনিসমূহ ছেভ নহ’ল"</string>
@@ -1097,8 +1093,7 @@
<string name="controls_error_generic" msgid="352500456918362905">"স্থিতি ল’ড কৰিব নোৱাৰি"</string>
<string name="controls_error_failed" msgid="960228639198558525">"আসোঁৱাহ হৈছে, আকৌ চেষ্টা কৰক"</string>
<string name="controls_in_progress" msgid="4421080500238215939">"চলি আছে"</string>
- <!-- no translation found for controls_added_tooltip (5866098408470111984) -->
- <skip />
+ <string name="controls_added_tooltip" msgid="5866098408470111984">"নতুন নিয়ন্ত্ৰণসমূহ চাবলৈ ক্ষিপ্ৰ ছেটিং খোলক"</string>
<string name="controls_menu_add" msgid="4447246119229920050">"নিয়ন্ত্ৰণসমূহ যোগ দিয়ক"</string>
<string name="controls_menu_edit" msgid="890623986951347062">"নিয়ন্ত্ৰণসমূহ সম্পাদনা কৰক"</string>
<string name="media_output_dialog_add_output" msgid="5642703238877329518">"আউটপুটসমূহ যোগ দিয়ক"</string>
@@ -1117,16 +1112,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"অগ্ৰাধিকাৰপ্ৰাপ্ত বাৰ্তালাপ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"শেহতীয়া বাৰ্তালাপ"</string>
<string name="okay" msgid="6490552955618608554">"ঠিক আছে"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> দিন আগতে"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"১ সপ্তাহ আগতে"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"২ সপ্তাহ পূৰ্বে"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"১ সপ্তাহতকৈ বেছি আগতে"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"২ সপ্তাহতকৈ বেছি আগতে"</string>
<string name="birthday_status" msgid="2596961629465396761">"জন্মদিন"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"এয়া <xliff:g id="NAME">%1$s</xliff:g>ৰ জন্মদিন"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"জন্মদিন সোনকালে আহি আছে"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 0a3e73f36e18..0e8cb5737fd8 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC deaktiv edilib"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC aktiv edilib"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekran yazması"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Başlayın"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Dayandırın"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Cihaz mikrofonu blokdan çıxarılsın?"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index bdf62a3c18ae..83c8513f6ad4 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -425,8 +425,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC je onemogućen"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC je omogućen"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Snimanje ekrana"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Počnite"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Zaustavite"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Želite da odblokirate mikrofon uređaja?"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 2f41132934d2..63ec9264961e 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -427,8 +427,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC адключаны"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC уключаны"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Запіс экрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Пачаць"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Спыніць"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Разблакіраваць мікрафон прылады?"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 14297dbc931a..a064d108e5b6 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"КБП е деактивирана"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"КБП е активирана"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Запис на екрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Старт"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Стоп"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Да се отблокира ли микрофонът на устройството?"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index e683594177b2..4400cfbc1588 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -408,8 +408,7 @@
<string name="quick_settings_cellular_detail_data_used" msgid="6798849610647988987">"<xliff:g id="DATA_USED">%s</xliff:g> ব্যবহৃত হয়েছে"</string>
<string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"সীমা <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> সতর্কতা"</string>
- <!-- no translation found for quick_settings_work_mode_label (6440531507319809121) -->
- <skip />
+ <string name="quick_settings_work_mode_label" msgid="6440531507319809121">"অফিসের অ্যাপ"</string>
<string name="quick_settings_night_display_label" msgid="8180030659141778180">"নাইট লাইট"</string>
<string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"সূর্যাস্তে চালু হবে"</string>
<string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"সূর্যোদয় পর্যন্ত"</string>
@@ -1042,8 +1041,7 @@
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"প্রান্তে যান ও আড়াল করুন"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"প্রান্ত থেকে সরান এবং দেখুন"</string>
<string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"টগল করুন"</string>
- <!-- no translation found for quick_controls_title (7095074621086860062) -->
- <skip />
+ <string name="quick_controls_title" msgid="7095074621086860062">"হোম কন্ট্রোল"</string>
<string name="controls_providers_title" msgid="6879775889857085056">"কন্ট্রোল যোগ করতে অ্যাপ বেছে নিন"</string>
<plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g>টি কন্ট্রোল যোগ করা হয়েছে।</item>
@@ -1057,8 +1055,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"পছন্দসই থেকে সরান"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> অবস্থানে সরান"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"নিয়ন্ত্রণ"</string>
- <!-- no translation found for controls_favorite_subtitle (6481675111056961083) -->
- <skip />
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"যে কন্ট্রোল অ্যাক্সেস করতে চান তা \'দ্রুত সেটিংস\' থেকে বেছে নিন"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"কন্ট্রোলগুলিকে আবার সাজানোর জন্য ধরে রেখে টেনে আনুন"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"সমস্ত কন্ট্রোল সরানো হয়েছে"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"পরিবর্তন সেভ করা হয়নি"</string>
@@ -1097,8 +1094,7 @@
<string name="controls_error_generic" msgid="352500456918362905">"স্ট্যাটাস লোড করা যাচ্ছে না"</string>
<string name="controls_error_failed" msgid="960228639198558525">"সমস্যা হয়েছে, আবার চেষ্টা করুন"</string>
<string name="controls_in_progress" msgid="4421080500238215939">"চলছে"</string>
- <!-- no translation found for controls_added_tooltip (5866098408470111984) -->
- <skip />
+ <string name="controls_added_tooltip" msgid="5866098408470111984">"নতুন কন্ট্রোলগুলি দেখতে \'দ্রুত সেটিংস\' খুলুন"</string>
<string name="controls_menu_add" msgid="4447246119229920050">"কন্ট্রোল যোগ করুন"</string>
<string name="controls_menu_edit" msgid="890623986951347062">"কন্ট্রোল এডিট করুন"</string>
<string name="media_output_dialog_add_output" msgid="5642703238877329518">"আউটপুট যোগ করুন"</string>
@@ -1117,16 +1113,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"গুরুত্বপূর্ণ কথোপকথন"</string>
<string name="recent_conversations" msgid="8531874684782574622">"সাম্প্রতিক কথোপকথন"</string>
<string name="okay" msgid="6490552955618608554">"ঠিক আছে"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> দিন আগে"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"১ সপ্তাহ আগে"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"২ সপ্তাহ আগে"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"১ সপ্তাহেরও আগে"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"২ সপ্তাহেরও আগে"</string>
<string name="birthday_status" msgid="2596961629465396761">"জন্মদিন"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"এটি হল <xliff:g id="NAME">%1$s</xliff:g>-এর জন্মদিন"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"জন্মদিন শীঘ্রই আসছে"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 058e8ed74c74..b0b012b0278b 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -425,7 +425,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC je onemogućen"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC je omogućen"</string>
- <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Snimanje zaslona"</string>
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Snimanje ekrana"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Započnite"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Zaustavite"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Deblokirati mikrofon uređaja?"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 59edc3f00a2a..06c25422b461 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -427,8 +427,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC je vypnuto"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC je zapnuto"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Záznam obrazovky"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Spustit"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ukončit"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Odblokovat mikrofon zařízení?"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 7c35e07ab13e..5fd3c03327a4 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC er deaktiveret"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC er aktiveret"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Skærmoptagelse"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stop"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vil du fjerne blokeringen af enhedens mikrofone?"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index b8f6aa531b31..6220a48e664a 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC ist deaktiviert"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC ist aktiviert"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Bildschirmaufzeichnung"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Starten"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Beenden"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Blockierung des Gerätemikrofons aufheben?"</string>
@@ -1113,16 +1112,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"Vorrangige Unterhaltungen"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Neueste Unterhaltungen"</string>
<string name="okay" msgid="6490552955618608554">"Ok"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"Vor <xliff:g id="DURATION">%1$s</xliff:g> Tagen"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"Vor 1 Woche"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"Vor 2 Wochen"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"Vor über 1 Woche"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"Vor über 2 Wochen"</string>
<string name="birthday_status" msgid="2596961629465396761">"Geburtstag"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"<xliff:g id="NAME">%1$s</xliff:g> hat heute Geburtstag"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"Bald Geburtstag"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 5cf9bdf8774a..29c938b6a5ba 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -535,7 +535,7 @@
<string name="quick_settings_disclosure_named_management_vpns" msgid="4046375645500668555">"Este dispositivo pertenece a <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> y está conectado a VPN"</string>
<string name="quick_settings_disclosure_managed_profile_monitoring" msgid="1423899084754272514">"Tu organización puede controlar el tráfico de red en tu perfil de trabajo"</string>
<string name="quick_settings_disclosure_named_managed_profile_monitoring" msgid="8321469176706219860">"Es posible que <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> controle el tráfico de red en tu perfil de trabajo"</string>
- <string name="quick_settings_disclosure_managed_profile_network_activity" msgid="2636594621387832827">"El admin. de TI puede ver la actividad de red de tu perfil de trabajo"</string>
+ <string name="quick_settings_disclosure_managed_profile_network_activity" msgid="2636594621387832827">"El administrador de IT puede ver la actividad de red de tu perfil de trabajo"</string>
<string name="quick_settings_disclosure_monitoring" msgid="8548019955631378680">"Es posible que la red esté supervisada"</string>
<string name="quick_settings_disclosure_vpns" msgid="7213546797022280246">"Este dispositivo está conectado a VPN"</string>
<string name="quick_settings_disclosure_managed_profile_named_vpn" msgid="8117568745060010789">"Tu perfil de trabajo está conectado a <xliff:g id="VPN_APP">%1$s</xliff:g>"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index e3928ef8bde6..0b0936912897 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -547,7 +547,7 @@
<string name="monitoring_title" msgid="4063890083735924568">"Supervisión de red"</string>
<string name="monitoring_subtitle_vpn" msgid="800485258004629079">"VPN"</string>
<string name="monitoring_subtitle_network_logging" msgid="2444199331891219596">"Registro de red"</string>
- <string name="monitoring_subtitle_ca_certificate" msgid="8588092029755175800">"Certificados de CA"</string>
+ <string name="monitoring_subtitle_ca_certificate" msgid="8588092029755175800">"Certificados AC"</string>
<string name="disable_vpn" msgid="482685974985502922">"Inhabilitar VPN"</string>
<string name="disconnect_vpn" msgid="26286850045344557">"Desconectar VPN"</string>
<string name="monitoring_button_view_policies" msgid="3869724835853502410">"Ver políticas"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index fdc06fb1aec5..71ac58388017 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC on keelatud"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC on lubatud"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekraanisalvestus"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Alustage"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Peatage"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Kas tühistada seadme mikrofoni blokeerimine?"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 77911e9229b9..04abe9dc3ac2 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"Desgaituta dago NFC"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"Gaituta dago NFC"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Pantaila-grabaketa"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Hasi"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Gelditu"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Gailuaren mikrofonoa desblokeatu nahi duzu?"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 1af4a7b7dc36..18e33e5d375a 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC on poistettu käytöstä"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC on käytössä"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Näytön tallennus"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Aloita"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Lopeta"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Kumotaanko laitteen mikrofonin esto?"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 235dbe9f480d..33b023bbaf8a 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC désactivée"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC activée"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Enregistrement de l\'écran"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Démarrer"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Arrêter"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Débloquer le microphone de l\'appareil?"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 2a88d9ad12d4..b4a584399efd 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC désactivée"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"La technologie NFC est activée"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Enregistreur d\'écran"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Démarrer"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Arrêter"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Débloquer le micro de l\'appareil ?"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index b3f58269cc80..045143ef0d65 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -218,7 +218,7 @@
<string name="data_connection_hspa" msgid="6096234094857660873">"HSPA"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Itinerancia"</string>
<string name="accessibility_data_connection_wifi" msgid="4422160347472742434">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="1140839832913084973">"Sen SIM"</string>
+ <string name="accessibility_no_sim" msgid="1140839832913084973">"Non hai SIM"</string>
<string name="accessibility_cell_data" msgid="172950885786007392">"Datos móbiles"</string>
<string name="accessibility_cell_data_on" msgid="691666434519443162">"Os datos móbiles están activados"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desactivados"</string>
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"A opción NFC está desactivada"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"A opción NFC está activada"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Gravación da pantalla"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Iniciar"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Deter"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Queres desbloquear o micrófono do dispositivo?"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index b7b5516f7005..815430ca60eb 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -409,8 +409,7 @@
<string name="quick_settings_cellular_detail_data_used" msgid="6798849610647988987">"<xliff:g id="DATA_USED">%s</xliff:g> વાપર્યો"</string>
<string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> મર્યાદા"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ચેતવણી"</string>
- <!-- no translation found for quick_settings_work_mode_label (6440531507319809121) -->
- <skip />
+ <string name="quick_settings_work_mode_label" msgid="6440531507319809121">"ઑફિસ માટેની ઍપ"</string>
<string name="quick_settings_night_display_label" msgid="8180030659141778180">"રાત્રિ પ્રકાશ"</string>
<string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"સૂર્યાસ્ત વખતે"</string>
<string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"સૂર્યોદય સુધી"</string>
@@ -670,12 +669,10 @@
<string name="wallet_title" msgid="5369767670735827105">"વૉલેટ"</string>
<string name="wallet_app_button_label" msgid="7123784239111190992">"બધું બતાવો"</string>
<string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ચુકવણી કરવા માટે અનલૉક કરો"</string>
- <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) -->
- <skip />
+ <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"કોઈ સેટઅપ કર્યું નથી"</string>
<string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ઉપયોગ કરવા માટે અનલૉક કરો"</string>
<string name="wallet_error_generic" msgid="257704570182963611">"તમારા કાર્ડની માહિતી મેળવવામાં સમસ્યા આવી હતી, કૃપા કરીને થોડા સમય પછી ફરી પ્રયાસ કરો"</string>
- <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) -->
- <skip />
+ <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"લૉક સ્ક્રીનના સેટિંગ"</string>
<string name="status_bar_work" msgid="5238641949837091056">"ઑફિસની પ્રોફાઇલ"</string>
<string name="status_bar_airplane" msgid="4848702508684541009">"એરપ્લેન મોડ"</string>
<string name="add_tile" msgid="6239678623873086686">"ટાઇલ ઉમેરો"</string>
@@ -865,8 +862,7 @@
<string name="switch_bar_on" msgid="1770868129120096114">"ચાલુ"</string>
<string name="switch_bar_off" msgid="5669805115416379556">"બંધ"</string>
<string name="tile_unavailable" msgid="3095879009136616920">"ઉપલબ્ધ નથી"</string>
- <!-- no translation found for tile_disabled (373212051546573069) -->
- <skip />
+ <string name="tile_disabled" msgid="373212051546573069">"બંધ છે"</string>
<string name="nav_bar" msgid="4642708685386136807">"નેવિગેશન બાર"</string>
<string name="nav_bar_layout" msgid="4716392484772899544">"લેઆઉટ"</string>
<string name="left_nav_bar_button_type" msgid="2634852842345192790">"અતિરિક્ત ડાબો બટન પ્રકાર"</string>
@@ -1046,8 +1042,7 @@
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"કિનારી પર ખસેડો અને છુપાવો"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"કિનારીથી ખસેડો અને બતાવો"</string>
<string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"ટૉગલ કરો"</string>
- <!-- no translation found for quick_controls_title (7095074621086860062) -->
- <skip />
+ <string name="quick_controls_title" msgid="7095074621086860062">"ઘરેલું સાધનોનાં નિયંત્રણો"</string>
<string name="controls_providers_title" msgid="6879775889857085056">"નિયંત્રણો ઉમેરવા માટે ઍપ પસંદ કરો"</string>
<plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> નિયંત્રણ ઉમેર્યું.</item>
@@ -1061,8 +1056,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"મનપસંદમાંથી કાઢી નાખો"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"સ્થાન <xliff:g id="NUMBER">%d</xliff:g> પર ખસેડો"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"નિયંત્રણો"</string>
- <!-- no translation found for controls_favorite_subtitle (6481675111056961083) -->
- <skip />
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ઝડપી સેટિંગમાંથી ઍક્સેસ કરવાના નિયંત્રણો પસંદ કરો"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"નિયંત્રણોને ફરીથી ગોઠવવા માટે તેમને હોલ્ડ કરીને ખેંચો"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"બધા નિયંત્રણો કાઢી નાખ્યા"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ફેરફારો સાચવ્યા નથી"</string>
@@ -1101,8 +1095,7 @@
<string name="controls_error_generic" msgid="352500456918362905">"સ્ટેટસ લોડ કરી શકાતું નથી"</string>
<string name="controls_error_failed" msgid="960228639198558525">"ભૂલ, ફરીથી પ્રયાસ કરો"</string>
<string name="controls_in_progress" msgid="4421080500238215939">"પ્રક્રિયા ચાલુ છે"</string>
- <!-- no translation found for controls_added_tooltip (5866098408470111984) -->
- <skip />
+ <string name="controls_added_tooltip" msgid="5866098408470111984">"નવા નિયંત્રણો જોવા માટે ઝડપી સેટિંગ ખોલો"</string>
<string name="controls_menu_add" msgid="4447246119229920050">"નિયંત્રણો ઉમેરો"</string>
<string name="controls_menu_edit" msgid="890623986951347062">"નિયંત્રણોમાં ફેરફાર કરો"</string>
<string name="media_output_dialog_add_output" msgid="5642703238877329518">"આઉટપુટ ઉમેરો"</string>
@@ -1121,16 +1114,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"પ્રાધાન્યતા ધરાવતી વાતચીતો"</string>
<string name="recent_conversations" msgid="8531874684782574622">"તાજેતરની વાતચીતો"</string>
<string name="okay" msgid="6490552955618608554">"ઓકે"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> દિવસ પહેલાં"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"1 અઠવાડિયા પહેલાં"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"2 અઠવાડિયા પહેલાં"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"1 અઠવાડિયા કરતાં પહેલાંથી"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"2 અઠવાડિયા કરતાં પહેલાંથી"</string>
<string name="birthday_status" msgid="2596961629465396761">"જન્મદિવસ"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"આ તો <xliff:g id="NAME">%1$s</xliff:g>નો જન્મદિવસ છે"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"જલ્દી જ જન્મદિવસ છે"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 35bfca9c68e6..f77db5c7d53f 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"एनएफ़सी"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC बंद है"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC चालू है"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"स्क्रीन रिकॉर्डर"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"शुरू करें"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"रोकें"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"क्या आप डिवाइस के माइक्रोफ़ोन को अनब्लॉक करना चाहते हैं?"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 3e5b0445a76d..540bd43a3782 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"Az NFC ki van kapcsolva"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"Az NFC be van kapcsolva"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Képernyőrögzítés"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Indítás"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Leállítás"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Feloldja az eszközmikrofon letiltását?"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 36da43919b7f..4f4afd6b801d 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC-ն անջատված է"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC-ն միացված է"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Էկրանի տեսագրում"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Սկսել"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Կանգնեցնել"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Արգելահանե՞լ սարքի խոսափողը"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index ee718b470465..8fc2e8af30dd 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC dinonaktifkan"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC diaktifkan"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Perekam layar"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Mulai"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Berhenti"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Batalkan pemblokiran mikrofon perangkat?"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index 476ed383609a..adaa7a73ae61 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"Slökkt á NFC"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"Kveikt á NFC"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Skjáupptaka"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Hefja"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stöðva"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Opna fyrir hljóðnema tækisins?"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 7b2fbac6d9c1..12e4dc7b03be 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -427,8 +427,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"‏NFC מושבת"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"‏NFC מופעל"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"הקלטת המסך"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"התחלה"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"עצירה"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"לבטל את חסימת המיקרופון של המכשיר?"</string>
@@ -1051,7 +1050,7 @@
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"העברה לשוליים והסתרה"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"העברה מהשוליים והצגה"</string>
<string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"החלפת מצב"</string>
- <string name="quick_controls_title" msgid="7095074621086860062">"בית חכם"</string>
+ <string name="quick_controls_title" msgid="7095074621086860062">"פקדי הבית החכם"</string>
<string name="controls_providers_title" msgid="6879775889857085056">"יש לבחור אפליקציה כדי להוסיף פקדים"</string>
<plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
<item quantity="two">נוספו <xliff:g id="NUMBER_1">%s</xliff:g> פקדים.</item>
@@ -1125,16 +1124,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"שיחות בעדיפות גבוהה"</string>
<string name="recent_conversations" msgid="8531874684782574622">"שיחות אחרונות"</string>
<string name="okay" msgid="6490552955618608554">"בסדר"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"לפני <xliff:g id="DURATION">%1$s</xliff:g> ימים"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"לפני שבוע"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"לפני שבועיים"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"לפני יותר משבוע"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"לפני יותר משבועיים"</string>
<string name="birthday_status" msgid="2596961629465396761">"יום הולדת"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"זהו יום ההולדת של <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"יום הולדת יחול בקרוב"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 717ab3fb260e..f093cadbba61 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC は無効です"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC は有効です"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"スクリーン レコード"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"開始"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"停止"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"デバイスのマイクのブロックを解除しますか?"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index f910f76efa1d..6d012516cc78 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC өшірулі"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC қосулы"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Экранды жазу"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Бастау"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Тоқтату"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Құрылғы микрофонының бөгеуі алынсын ба?"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 326aab514050..08045e32a31f 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"បាន​បិទ NFC"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"បាន​បើក NFC"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ការថត​វីដេអូ​អេក្រង់"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ចាប់ផ្ដើម"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ឈប់"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ឈប់ទប់ស្កាត់​មីក្រូហ្វូន​របស់ឧបករណ៍ឬ?"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index bbc0a0f9fd43..211e943afedf 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -136,8 +136,7 @@
<string name="accessibility_camera_button" msgid="2938898391716647247">"ಕ್ಯಾಮರಾ"</string>
<string name="accessibility_phone_button" msgid="4256353121703100427">"ಫೋನ್"</string>
<string name="accessibility_voice_assist_button" msgid="6497706615649754510">"ಧ್ವನಿ ಸಹಾಯಕ"</string>
- <!-- no translation found for accessibility_wallet_button (1458258783460555507) -->
- <skip />
+ <string name="accessibility_wallet_button" msgid="1458258783460555507">"Wallet"</string>
<string name="accessibility_unlock_button" msgid="122785427241471085">"ಅನ್‌ಲಾಕ್"</string>
<string name="accessibility_lock_icon" msgid="661492842417875775">"ಸಾಧನ ಲಾಕ್ ಆಗಿದೆ"</string>
<string name="accessibility_waiting_for_fingerprint" msgid="5209142744692162598">"ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‍‍ಗಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ"</string>
@@ -424,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC ನಿಷ್ಕ್ರಿಯಗೊಂಡಿದೆ"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC ಸಕ್ರಿಯಗೊಂಡಿದೆ"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡ್"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ಪ್ರಾರಂಭಿಸಿ"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ನಿಲ್ಲಿಸಿ"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ಸಾಧನದ ಮೈಕ್ರೋಫೋನ್ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆಯಬೇಕೆ?"</string>
@@ -1114,16 +1112,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"ಆದ್ಯತೆಯ ಸಂಭಾಷಣೆಗಳು"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ಇತ್ತೀಚಿನ ಸಂಭಾಷಣೆಗಳು"</string>
<string name="okay" msgid="6490552955618608554">"ಸರಿ"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> ದಿನಗಳ ಹಿಂದೆ"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"1 ವಾರದ ಹಿಂದೆ"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"2 ವಾರಗಳ ಹಿಂದೆ"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"1 ವಾರಕ್ಕಿಂತ ಹಿಂದೆ"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"2 ವಾರಗಳಿಗಿಂತ ಹಿಂದೆ"</string>
<string name="birthday_status" msgid="2596961629465396761">"ಜನ್ಮದಿನ"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"<xliff:g id="NAME">%1$s</xliff:g> ಅವರ ಜನ್ಮದಿನ"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"ಶೀಘ್ರದಲ್ಲಿ ಜನ್ಮದಿನವಿದೆ"</string>
@@ -1154,8 +1147,6 @@
<string name="accessibility_authenticate_hint" msgid="798914151813205721">"ದೃಢೀಕರಿಸಿ"</string>
<string name="accessibility_enter_hint" msgid="2617864063504824834">"ಸಾಧನವನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ತೆರೆಯುವುದಕ್ಕಾಗಿ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಬಳಸಿ"</string>
- <!-- no translation found for accessibility_fingerprint_bouncer (7189102492498735519) -->
- <skip />
- <!-- no translation found for ongoing_phone_call_content_description (5332334388483099947) -->
- <skip />
+ <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ದೃಢೀಕರಣದ ಅವಶ್ಯಕತೆಯಿದೆ. ದೃಢೀಕರಿಸಲು ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <string name="ongoing_phone_call_content_description" msgid="5332334388483099947">"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಫೋನ್ ಕರೆ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 019f31027e8c..f32aeff15597 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC 사용 중지됨"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC 사용 설정됨"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"화면 녹화"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"시작"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"중지"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"기기 마이크를 차단 해제하시겠습니까?"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index f523fa291d2a..d997a7b68d47 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -423,16 +423,15 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC өчүрүлгөн"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC иштетилген"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Экрандан видео жаздырып алуу"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Баштадык"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Токтотуу"</string>
- <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Түзмөктүн микрофонунун кулпусу ачысынбы?"</string>
- <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Түзмөктүн камерасынын кулпусу ачылсынбы?"</string>
+ <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Түзмөктүн микрофонунун кулпусун ачасызбы?"</string>
+ <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Түзмөктүн камерасынын кулпусун ачасызбы?"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Түзмөктүн камерасы менен микрофону бөгөттөн чыгарылсынбы?"</string>
- <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Ушуну менен микрофонуңузду колдонууга уруксаты бар бардык колдонмолор менен кызматтар бөгөттөн чыгарылат."</string>
- <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Ушуну менен камераңызды колдонууга уруксаты бар бардык колдонмолор менен кызматтар бөгөттөн чыгарылат."</string>
- <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Ушуну менен камераңызды же микрофонуңузду колдонууга уруксаты бар бардык колдонмолор менен кызматтар бөгөттөн чыгарылат."</string>
+ <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Микрофонуңузду колдонууга уруксат алган бардык колдонмолор менен кызматтар бөгөттөн чыгат."</string>
+ <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Камераны колдонууга уруксат алган бардык колдонмолор менен кызматтар бөгөттөн чыгат."</string>
+ <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Камераңызды же микрофонуңузду колдонууга уруксат алган бардык колдонмолор менен кызматтар бөгөттөн чыгат."</string>
<string name="media_seamless_remote_device" msgid="177033467332920464">"Түзмөк"</string>
<string name="recents_swipe_up_onboarding" msgid="2820265886420993995">"Башка колдонмого которулуу үчүн өйдө сүрүңүз"</string>
<string name="recents_quick_scrub_onboarding" msgid="765934300283514912">"Колдонмолорду тез которуштуруу үчүн, оңго сүйрөңүз"</string>
@@ -1116,8 +1115,8 @@
<string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> күн мурун"</string>
<string name="one_week_timestamp" msgid="4925600765473875590">"1 апта мурун"</string>
<string name="two_weeks_timestamp" msgid="9111801081871962155">"2 апта мурда"</string>
- <string name="over_one_week_timestamp" msgid="3770560704420807142">"1 аптадан ашуун мурда"</string>
- <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"2 аптадан ашуун мурда"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"1 аптадан ашык мурда"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"2 аптадан ашык мурда"</string>
<string name="birthday_status" msgid="2596961629465396761">"Туулган күн"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"<xliff:g id="NAME">%1$s</xliff:g> бүгүн туулган күнүн белгилеп жатат"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"Алдыдагы туулган күн"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 6eb84eec91bf..ae4fd14c78aa 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -427,8 +427,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"ALR"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"ALR išjungtas"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"ALR įjungtas"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekrano įrašas"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Pradėti"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stabdyti"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Panaikinti įrenginio mikrofono blokavimą?"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 3c5905a56e21..635baa0c1a33 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -29,9 +29,9 @@
<string name="battery_low_percent_format_hybrid" msgid="3985614339605686167">"Atlikušais laiks: <xliff:g id="PERCENTAGE">%1$s</xliff:g> — aptuveni <xliff:g id="TIME">%2$s</xliff:g> (ņemot vērā lietojumu)"</string>
<string name="battery_low_percent_format_hybrid_short" msgid="5917433188456218857">"Atlikušais laiks: <xliff:g id="PERCENTAGE">%1$s</xliff:g> — aptuveni <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="battery_low_percent_format_saver_started" msgid="4968468824040940688">"Atlikuši <xliff:g id="PERCENTAGE">%s</xliff:g>. Ir ieslēgts akumulatora enerģijas taupīšanas režīms."</string>
- <string name="invalid_charger" msgid="4370074072117767416">"Nevar veikt uzlādi, izmantojot USB. Izmantojiet ierīces komplektācijā iekļauto uzlādes ierīci."</string>
+ <string name="invalid_charger" msgid="4370074072117767416">"Nevar veikt uzlādi, izmantojot USB. Izmantojiet ierīces komplektācijā iekļauto lādētāju."</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Nevar veikt uzlādi, izmantojot USB"</string>
- <string name="invalid_charger_text" msgid="2339310107232691577">"Izmantojiet ierīces komplektācijā iekļauto uzlādes ierīci"</string>
+ <string name="invalid_charger_text" msgid="2339310107232691577">"Izmantojiet ierīces komplektācijā iekļauto lādētāju"</string>
<string name="battery_low_why" msgid="2056750982959359863">"Iestatījumi"</string>
<string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Vai ieslēgt akumulatora enerģijas taupīšanas režīmu?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Par akumulatora enerģijas taupīšanas režīmu"</string>
@@ -425,8 +425,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC ir atspējoti"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC ir iespējoti"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekrāna ierakstīšana"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Sākt"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Apturēt"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vai vēlaties atbloķēt ierīces mikrofonu?"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 8b83e61315a9..6a092d6de9b7 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC е оневозможено"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC е овозможено"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Снимање екран"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Започни"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Сопри"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Да се одблокира пристапот до микрофонот на уредот?"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 5b953880a21d..292e1e19a482 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC പ്രവർത്തനരഹിതമാക്കി"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC പ്രവർത്തനക്ഷമമാക്കി"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"സ്‌ക്രീൻ റെക്കോർഡ്"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ആരംഭിക്കുക"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"നിര്‍ത്തുക"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ഉപകരണ മൈക്രോഫോൺ അൺബ്ലോക്ക് ചെയ്യണോ?"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 0e9a5cbe94cc..2bcca675924b 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC-г цуцалсан"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC-г идэвхжүүлсэн"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Дэлгэцийн үйлдэл бичих"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Эхлүүлэх"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Зогсоох"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Төхөөрөмжийн микрофоныг блокоос гаргах уу?"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 8b9f5c17f914..c69992b1199d 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC अक्षम केले आहे"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC सक्षम केले आहे"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"स्क्रीन रेकॉर्ड"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"सुरू"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"थांबा"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"डिव्हाइसचा मायक्रोफोन अनब्लॉक करायचा आहे का?"</string>
@@ -1113,16 +1112,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"प्राधान्य दिलेली संभाषणे"</string>
<string name="recent_conversations" msgid="8531874684782574622">"अलीकडील संभाषणे"</string>
<string name="okay" msgid="6490552955618608554">"ओके"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> दिवसांपूर्वी"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"१ आठवड्यापूर्वी"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"२ आठवड्यांपूर्वी"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"१ आठवड्यापेक्षा जास्त आधी"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"२ आठवड्यांपेक्षा जास्त आधी"</string>
<string name="birthday_status" msgid="2596961629465396761">"वाढदिवस"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"आज <xliff:g id="NAME">%1$s</xliff:g> यांचा वाढदिवस आहे"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"वाढदिवस लवकरच आहे"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 0ec67d50de48..d2780b9870f3 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC dilumpuhkan"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC didayakan"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Rakam skrin"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Mula"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Berhenti"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Nyahsekat mikrofon peranti?"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index beaad24bc401..a8b5f0809d90 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC ကို ပိတ်ထားသည်"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC ကို ဖွင့်ထားသည်"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ဖန်သားပြင် ရိုက်ကူးရန်"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"စတင်ရန်"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ရပ်ရန်"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"စက်၏မိုက်ခရိုဖုန်းကို ပြန်ဖွင့်မလား။"</string>
@@ -751,7 +750,7 @@
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ဤအကြောင်းကြားချက်အုပ်စုကို ဤနေရာတွင် စီစဉ်သတ်မှတ်၍ မရပါ"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ပရောက်စီထည့်ထားသော အကြောင်းကြားချက်"</string>
<string name="notification_channel_dialog_title" msgid="6856514143093200019">"<xliff:g id="APP_NAME">%1$s</xliff:g> အကြောင်းကြားချက်များ အားလုံး"</string>
- <string name="see_more_title" msgid="7409317011708185729">"ပိုပြရန်"</string>
+ <string name="see_more_title" msgid="7409317011708185729">"ပိုကြည့်ရန်"</string>
<string name="appops_camera" msgid="5215967620896725715">"ဤအက်ပ်က ကင်မရာကို အသုံးပြုနေသည်။"</string>
<string name="appops_microphone" msgid="8805468338613070149">"ဤအက်ပ်က မိုက်ခရိုဖုန်းကို အသုံးပြုနေသည်။"</string>
<string name="appops_overlay" msgid="4822261562576558490">"ဤအက်ပ်က ဖန်သားမျက်နှာပြင်ပေါ်ရှိ အခြားအက်ပ်များ အပေါ်မှ ထပ်ပြီး ပြသနေပါသည်။"</string>
@@ -1040,7 +1039,7 @@
<string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"ညာဘက်အောက်ခြေသို့ ရွှေ့ရန်"</string>
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"အစွန်းသို့ရွှေ့ပြီး ဝှက်ရန်"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"အစွန်းမှရွှေ့ပြီး ပြရန်"</string>
- <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"ခလုတ်"</string>
+ <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"ပြောင်းရန်"</string>
<string name="quick_controls_title" msgid="7095074621086860062">"ပင်မ ထိန်းချုပ်မှုများ"</string>
<string name="controls_providers_title" msgid="6879775889857085056">"ထိန်းချုပ်မှုများထည့်ရန် အက်ပ်ရွေးခြင်း"</string>
<plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
@@ -1076,7 +1075,7 @@
<string name="controls_pin_instructions_retry" msgid="1566667581012131046">"နောက်ပင်နံပါတ်တစ်ခု စမ်းကြည့်ရန်"</string>
<string name="controls_confirmation_confirming" msgid="2596071302617310665">"အတည်ပြုနေသည်…"</string>
<string name="controls_confirmation_message" msgid="7744104992609594859">"<xliff:g id="DEVICE">%s</xliff:g> အတွက် အပြောင်းအလဲကို အတည်ပြုပါ"</string>
- <string name="controls_structure_tooltip" msgid="4355922222944447867">"ပိုမိုကြည့်ရှုရန် ပွတ်ဆွဲပါ"</string>
+ <string name="controls_structure_tooltip" msgid="4355922222944447867">"ပိုကြည့်ရန် ပွတ်ဆွဲပါ"</string>
<string name="controls_seeding_in_progress" msgid="3033855341410264148">"အကြံပြုချက်များ ဖွင့်နေသည်"</string>
<string name="controls_media_title" msgid="1746947284862928133">"မီဒီယာ"</string>
<string name="controls_media_close_session" msgid="1193000643003066508">"ဤမီဒီယာစက်ရှင်ကို ဝှက်မလား။"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index e99c18dbd35d..c7507c9db654 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC er slått av"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC er slått på"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Skjermopptak"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stopp"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vil du oppheve blokkeringen av enhetsmikrofonen?"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 05f0f10bf5c2..b649ebae5eba 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -136,8 +136,7 @@
<string name="accessibility_camera_button" msgid="2938898391716647247">"क्यामेरा"</string>
<string name="accessibility_phone_button" msgid="4256353121703100427">"फोन"</string>
<string name="accessibility_voice_assist_button" msgid="6497706615649754510">"आवाज सहायता"</string>
- <!-- no translation found for accessibility_wallet_button (1458258783460555507) -->
- <skip />
+ <string name="accessibility_wallet_button" msgid="1458258783460555507">"वालेट"</string>
<string name="accessibility_unlock_button" msgid="122785427241471085">"खोल्नुहोस्"</string>
<string name="accessibility_lock_icon" msgid="661492842417875775">"यन्त्र लक गरिएको छ"</string>
<string name="accessibility_waiting_for_fingerprint" msgid="5209142744692162598">"फिंगरप्रिन्ट कुर्दै"</string>
@@ -409,8 +408,7 @@
<string name="quick_settings_cellular_detail_data_used" msgid="6798849610647988987">"<xliff:g id="DATA_USED">%s</xliff:g> प्रयोग गरियो"</string>
<string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> सीमा"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावनी दिँदै"</string>
- <!-- no translation found for quick_settings_work_mode_label (6440531507319809121) -->
- <skip />
+ <string name="quick_settings_work_mode_label" msgid="6440531507319809121">"कामसम्बन्धी एपहरू"</string>
<string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string>
<string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"सूर्यास्तमा सक्रिय"</string>
<string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"सूर्योदयसम्म"</string>
@@ -1043,8 +1041,7 @@
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"किनारामा सार्नुहोस् र नदेखिने पार्नु…"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"किनाराबाट सार्नुहोस् र देखिने पार्नु…"</string>
<string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"टगल गर्नुहोस्"</string>
- <!-- no translation found for quick_controls_title (7095074621086860062) -->
- <skip />
+ <string name="quick_controls_title" msgid="7095074621086860062">"घरायसी उपकरणका नियन्त्रणहरू"</string>
<string name="controls_providers_title" msgid="6879775889857085056">"नियन्त्रणहरू थप्नु पर्ने एप छान्नुहोस्"</string>
<plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> वटा नियन्त्र थपियो।</item>
@@ -1058,8 +1055,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"मन पर्ने कुराहरूको सूचीमा नराख्नुहोस्"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g>ले निर्देश गर्ने ठाउँमा सार्नुहोस्"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"नियन्त्रणहरू"</string>
- <!-- no translation found for controls_favorite_subtitle (6481675111056961083) -->
- <skip />
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"आफूले द्रुत सेटिङबाट प्रयोग गर्न चाहेका नियन्त्रणहरू छान्नुहोस्"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"नियन्त्रणहरूको क्रम मिलाउन तिनलाई थिचेर ड्र्याग गर्नुहोस्"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"सबै नियन्त्रणहरू हटाइए"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"परिवर्तनहरू सुरक्षित गरिएका छैनन्"</string>
@@ -1098,8 +1094,7 @@
<string name="controls_error_generic" msgid="352500456918362905">"वस्तुस्थिति लोड गर्न सकिएन"</string>
<string name="controls_error_failed" msgid="960228639198558525">"त्रुटि भयो, फेरि प्रयास गर्नु…"</string>
<string name="controls_in_progress" msgid="4421080500238215939">"कार्य हुँदै छ"</string>
- <!-- no translation found for controls_added_tooltip (5866098408470111984) -->
- <skip />
+ <string name="controls_added_tooltip" msgid="5866098408470111984">"नयाँ नियन्त्रणहरू हेर्न द्रुत सेटिङ खोल्नुहोस्"</string>
<string name="controls_menu_add" msgid="4447246119229920050">"नियन्त्रण सुविधाहरू थप्नुहोस्"</string>
<string name="controls_menu_edit" msgid="890623986951347062">"नियन्त्रण सुविधाहरू सम्पादन गर्नु…"</string>
<string name="media_output_dialog_add_output" msgid="5642703238877329518">"आउटपुट यन्त्रहरू थप्नुहोस्"</string>
@@ -1118,16 +1113,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"महत्त्वपूर्ण वार्तालापहरू"</string>
<string name="recent_conversations" msgid="8531874684782574622">"हालसालैका वार्तालापहरू"</string>
<string name="okay" msgid="6490552955618608554">"ठिक छ"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> दिनअघि"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"१ हप्ताअघि"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"२ हप्ताअघि"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"१ हप्ताभन्दा पहिले"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"२ हप्ताभन्दा पहिले"</string>
<string name="birthday_status" msgid="2596961629465396761">"जन्मदिन"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"आज <xliff:g id="NAME">%1$s</xliff:g> को जन्मदिन हो"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"आगामी जन्मदिन"</string>
@@ -1158,8 +1148,6 @@
<string name="accessibility_authenticate_hint" msgid="798914151813205721">"प्रमाणित गर्नुहोस्"</string>
<string name="accessibility_enter_hint" msgid="2617864063504824834">"डिभाइस हाल्नुहोस्"</string>
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"फिंगरप्रिन्ट प्रयोग गरी खोल्नुहोस्"</string>
- <!-- no translation found for accessibility_fingerprint_bouncer (7189102492498735519) -->
- <skip />
- <!-- no translation found for ongoing_phone_call_content_description (5332334388483099947) -->
- <skip />
+ <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"पुष्टि गर्नु पर्ने हुन्छ। पुष्टि गर्न फिंगरप्रिन्ट सेन्सर छुनुहोस्।"</string>
+ <string name="ongoing_phone_call_content_description" msgid="5332334388483099947">"जारी फोन कल"</string>
</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 5eb67001a6b4..b0df16e59963 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC staat uit"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC staat aan"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Schermopname"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Starten"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stoppen"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Blokkeren van apparaatmicrofoon opheffen?"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index a15efe24f8ee..9b0350686dbc 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -1113,16 +1113,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"ପ୍ରାଥମିକତା ଦିଆଯାଇଥିବା ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ବର୍ତ୍ତମାନର ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string>
<string name="okay" msgid="6490552955618608554">"ଠିକ୍ ଅଛି"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> ଦିନ ପୂର୍ବେ"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"1 ସପ୍ତାହ ପୂର୍ବେ"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"2 ସପ୍ତାହ ପୂର୍ବେ"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"1 ସପ୍ତାହରୁ ଅଧିକ ଦିନ ଆଗରୁ"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"2 ସପ୍ତାହରୁ ଅଧିକ ଦିନ ଆଗରୁ"</string>
<string name="birthday_status" msgid="2596961629465396761">"ଜନ୍ମଦିନ"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"ଆଜି <xliff:g id="NAME">%1$s</xliff:g>ଙ୍କର ଜନ୍ମଦିନ"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"ଜନ୍ମଦିନ ଶୀଘ୍ର ଆସୁଛି"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index b6a9c86dddbd..d9f4f9667420 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -1113,16 +1113,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"ਤਰਜੀਹੀ ਗੱਲਾਂਬਾਤਾਂ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ਹਾਲੀਆ ਗੱਲਾਂਬਾਤਾਂ"</string>
<string name="okay" msgid="6490552955618608554">"ਠੀਕ ਹੈ"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> ਦਿਨ ਪਹਿਲਾਂ"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"1 ਹਫ਼ਤਾ ਪਹਿਲਾਂ"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"2 ਹਫ਼ਤੇ ਪਹਿਲਾਂ"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"1 ਹਫ਼ਤੇ ਤੋਂ ਵੀ ਪਹਿਲਾਂ"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"2 ਹਫ਼ਤੇ ਤੋਂ ਵੀ ਪਹਿਲਾਂ"</string>
<string name="birthday_status" msgid="2596961629465396761">"ਜਨਮਦਿਨ"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"ਅੱਜ <xliff:g id="NAME">%1$s</xliff:g> ਦਾ ਜਨਮਦਿਨ ਹੈ"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"ਜਨਮਦਿਨ ਜਲਦ ਆ ਰਿਹਾ ਹੈ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 47abb55b9f14..458bf0a142db 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -412,8 +412,7 @@
<string name="quick_settings_cellular_detail_data_used" msgid="6798849610647988987">"Wykorzyst.: <xliff:g id="DATA_USED">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limit <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Ostrzeżenie: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
- <!-- no translation found for quick_settings_work_mode_label (6440531507319809121) -->
- <skip />
+ <string name="quick_settings_work_mode_label" msgid="6440531507319809121">"Aplikacje służbowe"</string>
<string name="quick_settings_night_display_label" msgid="8180030659141778180">"Podświetlenie nocne"</string>
<string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Włącz o zachodzie"</string>
<string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Do wschodu słońca"</string>
@@ -428,8 +427,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"Komunikacja NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"Komunikacja NFC jest wyłączona"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"Komunikacja NFC jest włączona"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Nagrywanie ekranu"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Rozpocznij"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Zatrzymaj"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Odblokować mikrofon urządzenia?"</string>
@@ -543,7 +541,7 @@
<string name="quick_settings_disclosure_named_management_vpns" msgid="4046375645500668555">"To urządzenie należy do organizacji <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> i jest połączone z sieciami VPN"</string>
<string name="quick_settings_disclosure_managed_profile_monitoring" msgid="1423899084754272514">"Twoja organizacja może monitorować ruch w sieci w Twoim profilu służbowym"</string>
<string name="quick_settings_disclosure_named_managed_profile_monitoring" msgid="8321469176706219860">"Organizacja <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> może monitorować ruch w sieci w Twoim profilu służbowym"</string>
- <string name="quick_settings_disclosure_managed_profile_network_activity" msgid="2636594621387832827">"Aktywność w sieci w profilu służbowym widoczna dla administratora IT"</string>
+ <string name="quick_settings_disclosure_managed_profile_network_activity" msgid="2636594621387832827">"Aktywność w sieci w profilu służbowym jest widoczna dla administratora IT"</string>
<string name="quick_settings_disclosure_monitoring" msgid="8548019955631378680">"Sieć może być monitorowana"</string>
<string name="quick_settings_disclosure_vpns" msgid="7213546797022280246">"To urządzenie jest połączone z sieciami VPN"</string>
<string name="quick_settings_disclosure_managed_profile_named_vpn" msgid="8117568745060010789">"Twój profil służbowy jest połączony z siecią <xliff:g id="VPN_APP">%1$s</xliff:g>"</string>
@@ -1052,8 +1050,7 @@
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Przenieś do krawędzi i ukryj"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Przenieś poza krawędź i pokaż"</string>
<string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"przełącz"</string>
- <!-- no translation found for quick_controls_title (7095074621086860062) -->
- <skip />
+ <string name="quick_controls_title" msgid="7095074621086860062">"Sterowanie domem"</string>
<string name="controls_providers_title" msgid="6879775889857085056">"Wybierz aplikację, do której chcesz dodać elementy sterujące"</string>
<plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
<item quantity="few">Dodano <xliff:g id="NUMBER_1">%s</xliff:g> elementy sterujące</item>
@@ -1069,8 +1066,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"usunąć z ulubionych"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"Przenieś w położenie <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Elementy sterujące"</string>
- <!-- no translation found for controls_favorite_subtitle (6481675111056961083) -->
- <skip />
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Wybierz elementy sterujące dostępne w Szybkich ustawieniach"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"Przytrzymaj i przeciągnij, aby przestawić elementy sterujące"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"Usunięto wszystkie elementy sterujące"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Zmiany nie zostały zapisane"</string>
@@ -1109,8 +1105,7 @@
<string name="controls_error_generic" msgid="352500456918362905">"Nie udało się wczytać stanu"</string>
<string name="controls_error_failed" msgid="960228639198558525">"Błąd, spróbuj ponownie"</string>
<string name="controls_in_progress" msgid="4421080500238215939">"W toku"</string>
- <!-- no translation found for controls_added_tooltip (5866098408470111984) -->
- <skip />
+ <string name="controls_added_tooltip" msgid="5866098408470111984">"Otwórz Szybkie ustawienia, by zobaczyć nowe elementy sterujące"</string>
<string name="controls_menu_add" msgid="4447246119229920050">"Dodaj elementy sterujące"</string>
<string name="controls_menu_edit" msgid="890623986951347062">"Edytuj elementy sterujące"</string>
<string name="media_output_dialog_add_output" msgid="5642703238877329518">"Dodaj urządzenia wyjściowe"</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index a61a2bef400c..bbe3cc01b2a6 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -425,8 +425,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"Serviciul NFC este dezactivat"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"Serviciul NFC este activat"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Înregistrarea ecranului"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Începeți"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Opriți"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Deblocați microfonul dispozitivului?"</string>
@@ -1046,7 +1045,7 @@
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Mutați în afară și ascundeți"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Mutați în afară și afișați"</string>
<string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"Activați / dezactivați"</string>
- <string name="quick_controls_title" msgid="7095074621086860062">"Controalele locuinței"</string>
+ <string name="quick_controls_title" msgid="7095074621086860062">"Comenzi pentru locuință"</string>
<string name="controls_providers_title" msgid="6879775889857085056">"Alegeți aplicația pentru a adăuga comenzi"</string>
<plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
<item quantity="few">S-au adăugat <xliff:g id="NUMBER_1">%s</xliff:g> comenzi.</item>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index a1b8919cd215..80bf12aaede7 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -427,8 +427,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"Модуль NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"Модуль NFC отключен"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"Модуль NFC включен"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Запись видео с экрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Начать"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Остановить"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Разблокировать микрофон устройства?"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 2312f157eb04..89127274b84c 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC අබලයි"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC සබලයි"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"තිර පටිගත කිරීම"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ආරම්භ කරන්න"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"නතර කරන්න"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"උපාංග මයික්‍රෆෝනය අවහිර කිරීම ඉවත් කරන්නද?"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index b5683d42277d..dd36b29ff569 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -427,8 +427,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC je deaktivované"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC je aktivované"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Rekordér obrazovky"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Začať"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ukončiť"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Chcete odblokovať mikrofón zariadenia?"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 94ed73343479..8ba5d797b6aa 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -427,8 +427,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"Tehnologija NFC je onemogočena"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"Tehnologija NFC je omogočena"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Snemanje zaslona"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Začni"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ustavi"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Želite odblokirati mikrofon v napravi?"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 746091d96a85..e17d51779653 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -408,8 +408,7 @@
<string name="quick_settings_cellular_detail_data_used" msgid="6798849610647988987">"Të përdorura: <xliff:g id="DATA_USED">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Kufiri: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Paralajmërim për kufirin prej <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
- <!-- no translation found for quick_settings_work_mode_label (6440531507319809121) -->
- <skip />
+ <string name="quick_settings_work_mode_label" msgid="6440531507319809121">"Aplikacionet e punës"</string>
<string name="quick_settings_night_display_label" msgid="8180030659141778180">"Drita e natës"</string>
<string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Në perëndim të diellit"</string>
<string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Deri në lindje të diellit"</string>
@@ -424,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC është çaktivizuar"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC është aktivizuar"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Regjistrimi i ekranit"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Nis"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ndalo"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Të zhbllokohet mikrofoni i pajisjes?"</string>
@@ -1042,8 +1040,7 @@
<string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Zhvendose te skaji dhe fshihe"</string>
<string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Zhvendose jashtë skajit dhe shfaqe"</string>
<string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"aktivizo/çaktivizo"</string>
- <!-- no translation found for quick_controls_title (7095074621086860062) -->
- <skip />
+ <string name="quick_controls_title" msgid="7095074621086860062">"Kontrollet e shtëpisë"</string>
<string name="controls_providers_title" msgid="6879775889857085056">"Zgjidh aplikacionin për të shtuar kontrollet"</string>
<plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
<item quantity="other">U shtuan <xliff:g id="NUMBER_1">%s</xliff:g> kontrolle.</item>
@@ -1057,8 +1054,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ta heqësh nga të preferuarat"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"Zhvendose te pozicioni <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrollet"</string>
- <!-- no translation found for controls_favorite_subtitle (6481675111056961083) -->
- <skip />
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Zgjidh kontrollet për t\'u qasur nga \"Cilësimet e shpejta\""</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"Mbaje të shtypur dhe zvarrit për të risistemuar kontrollet"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"Të gjitha kontrollet u hoqën"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Ndryshimet nuk u ruajtën"</string>
@@ -1097,8 +1093,7 @@
<string name="controls_error_generic" msgid="352500456918362905">"Statusi nuk mund të ngarkohet"</string>
<string name="controls_error_failed" msgid="960228639198558525">"Gabim, provo sërish"</string>
<string name="controls_in_progress" msgid="4421080500238215939">"Në vazhdim"</string>
- <!-- no translation found for controls_added_tooltip (5866098408470111984) -->
- <skip />
+ <string name="controls_added_tooltip" msgid="5866098408470111984">"Hap \"Cilësimet e shpejta\" për të shikuar kontrollet e reja"</string>
<string name="controls_menu_add" msgid="4447246119229920050">"Shto kontrollet"</string>
<string name="controls_menu_edit" msgid="890623986951347062">"Modifiko kontrollet"</string>
<string name="media_output_dialog_add_output" msgid="5642703238877329518">"Shto daljet"</string>
@@ -1117,16 +1112,11 @@
<string name="priority_conversations" msgid="3967482288896653039">"Bisedat me përparësi"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Bisedat e fundit"</string>
<string name="okay" msgid="6490552955618608554">"Në rregull"</string>
- <!-- no translation found for days_timestamp (5821854736213214331) -->
- <skip />
- <!-- no translation found for one_week_timestamp (4925600765473875590) -->
- <skip />
- <!-- no translation found for two_weeks_timestamp (9111801081871962155) -->
- <skip />
- <!-- no translation found for over_one_week_timestamp (3770560704420807142) -->
- <skip />
- <!-- no translation found for over_two_weeks_timestamp (6300507859007874050) -->
- <skip />
+ <string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> ditë më parë"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"1 javë më parë"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"2 javë më parë"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"Mbi 1 javë më parë"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"Mbi 2 javë më parë"</string>
<string name="birthday_status" msgid="2596961629465396761">"Ditëlindja"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"<xliff:g id="NAME">%1$s</xliff:g> ka ditëlindjen"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"Ditëlindje së shpejti"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 0c3bae4ea300..7ed0cd189ea1 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -425,8 +425,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC је онемогућен"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC је омогућен"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Снимање екрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Почните"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Зауставите"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Желите да одблокирате микрофон уређаја?"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 6f49e049ac77..e7f6fe54f404 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -378,7 +378,7 @@
<string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"Namnlös enhet"</string>
<string name="quick_settings_cast_device_default_description" msgid="2580520859212250265">"Redo att casta"</string>
<string name="quick_settings_cast_detail_empty_text" msgid="2846282280014617785">"Inga tillgängliga enheter"</string>
- <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"Inte ansluten till wifi"</string>
+ <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"Ej ansluten till wifi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Ljusstyrka"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"AUTO"</string>
<string name="quick_settings_inversion_label" msgid="5078769633069667698">"Invertera färger"</string>
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC är inaktiverat"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC är aktiverat"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Skärminspelning"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Starta"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stoppa"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vill du återaktivera enhetens mikrofon?"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 9b2025028ced..bbc7a75ec172 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC imezimwa"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC imewashwa"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Rekodi ya skrini"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Anza kurekodi"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Acha kurekodi"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Ungependa kuondoa kizuizi kwenye maikrofoni ya kifaa?"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 3c14595fe052..8c2649ef5a04 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC முடக்கப்பட்டது"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC இயக்கப்பட்டது"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ஸ்கிரீன் ரெக்கார்டு"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"தொடங்கு"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"நிறுத்து"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"சாதனத்தின் மைக்ரோஃபோனுக்கான தடுப்பை நீக்கவா?"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 076a24bce142..407ab00d994b 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC నిలిపివేయబడింది"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC ప్రారంభించబడింది"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"స్క్రీన్ రికార్డ్"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ప్రారంభించు"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ఆపు"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"పరికరం మైక్రోఫోన్‌ను అన్‌బ్లాక్ చేయమంటారా?"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 9e88d34a3073..1536d9a78a21 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC ถูกปิดใช้งาน"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"เปิดใช้งาน NFC แล้ว"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"บันทึกหน้าจอ"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"เริ่ม"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"หยุด"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"เลิกบล็อกไมโครโฟนของอุปกรณ์ใช่ไหม"</string>
@@ -860,7 +859,7 @@
<string name="accessibility_data_saver_off" msgid="58339669022107171">"โปรแกรมประหยัดอินเทอร์เน็ตปิดอยู่"</string>
<string name="switch_bar_on" msgid="1770868129120096114">"เปิด"</string>
<string name="switch_bar_off" msgid="5669805115416379556">"ปิด"</string>
- <string name="tile_unavailable" msgid="3095879009136616920">"ไม่มี"</string>
+ <string name="tile_unavailable" msgid="3095879009136616920">"ไม่พร้อมใช้งาน"</string>
<string name="tile_disabled" msgid="373212051546573069">"ปิดใช้"</string>
<string name="nav_bar" msgid="4642708685386136807">"แถบนำทาง"</string>
<string name="nav_bar_layout" msgid="4716392484772899544">"การจัดวาง"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index f6ac329d54f9..0ece0cb44788 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"Naka-disable ang NFC"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"Naka-enable ang NFC"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Pag-record ng screen"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Magsimula"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ihinto"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"I-unblock ang mikropono ng device?"</string>
@@ -1114,10 +1113,10 @@
<string name="recent_conversations" msgid="8531874684782574622">"Mga kamakailang pag-uusap"</string>
<string name="okay" msgid="6490552955618608554">"Okay"</string>
<string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> (na) araw ang nakalipas"</string>
- <string name="one_week_timestamp" msgid="4925600765473875590">"1 linggo ang nakalipas"</string>
- <string name="two_weeks_timestamp" msgid="9111801081871962155">"2 linggo ang nakalipas"</string>
- <string name="over_one_week_timestamp" msgid="3770560704420807142">"Mahigit 1 linggo ang nakalipas"</string>
- <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"Mahigit 2 linggo ang nakalipas"</string>
+ <string name="one_week_timestamp" msgid="4925600765473875590">"1 linggo na"</string>
+ <string name="two_weeks_timestamp" msgid="9111801081871962155">"2 linggo na"</string>
+ <string name="over_one_week_timestamp" msgid="3770560704420807142">"Mahigit 1 linggo na"</string>
+ <string name="over_two_weeks_timestamp" msgid="6300507859007874050">"Mahigit 2 linggo na"</string>
<string name="birthday_status" msgid="2596961629465396761">"Kaarawan"</string>
<string name="birthday_status_content_description" msgid="682836371128282925">"Kaarawan ni <xliff:g id="NAME">%1$s</xliff:g> ngayon"</string>
<string name="upcoming_birthday_status" msgid="2005452239256870351">"Kaarawang paparating"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index ddadcc81c865..c0702e9523cd 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC devre dışı"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC etkin"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekran kaydı"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Başlat"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Durdur"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Cihaz mikrofonunun engellemesi kaldırılsın mı?"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 36b96cf4d8fa..2b6183d5b25c 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -427,8 +427,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC вимкнено"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC ввімкнено"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Запис відео з екрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Почати"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Зупинити"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Надати доступ до мікрофона?"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index e198d996a60b..f27f81317c7e 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"‏NFC غیر فعال ہے"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"‏NFC فعال ہے"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"اسکرین ریکارڈ"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"شروع کریں"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"روکیں"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"آلے کا مائیکروفون غیر مسدود کریں؟"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index fc31ebc82d29..6a9d46f69e40 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC o‘chiq"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC yoniq"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekranni yozib olish"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Boshlash"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Toʻxtatish"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Qurilma mikrofoni blokdan chiqarilsinmi?"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index d6844e866cb4..86ee67a82818 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC đã được tắt"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC đã được bật"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ghi màn hình"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Bắt đầu"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Dừng"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Bỏ chặn micrô của thiết bị?"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index ccaec6495b79..928510bebbb8 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC 已停用"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC 已启用"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"屏幕录制"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"开始"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"停止"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"要取消禁用设备麦克风吗?"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 03bc62995f7e..a80896f3cc73 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC 已停用"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC 已啟用"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"螢幕錄影"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"開始"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"停"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"要解除封鎖裝置麥克風嗎?"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 47cc4c384a43..7584d230a774 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -423,8 +423,7 @@
<string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
<string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC 已停用"</string>
<string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC 已啟用"</string>
- <!-- no translation found for quick_settings_screen_record_label (8650355346742003694) -->
- <skip />
+ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"螢幕錄影"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"開始"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"停止"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"要將裝置麥克風解除封鎖嗎?"</string>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index d4dbcf969a73..be9065b2c13b 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -352,7 +352,7 @@
<!-- Nav bar button default ordering/layout -->
<string name="config_navBarLayout" translatable="false">left[.5W],back[1WC];home;recent[1WC],right[.5W]</string>
<string name="config_navBarLayoutQuickstep" translatable="false">back[1.7WC];home;contextual[1.7WC]</string>
- <string name="config_navBarLayoutHandle" translatable="false">back[40AC];home_handle;ime_switcher[40AC]</string>
+ <string name="config_navBarLayoutHandle" translatable="false">back[70AC];home_handle;ime_switcher[70AC]</string>
<bool name="quick_settings_show_full_alarm">false</bool>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 24eac1593195..b2ab5f782d71 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -472,6 +472,8 @@
<dimen name="volume_dialog_panel_transparent_padding">20dp</dimen>
+ <dimen name="volume_dialog_ringer_rows_padding">7dp</dimen>
+
<dimen name="volume_dialog_stream_padding">12dp</dimen>
<dimen name="volume_dialog_panel_width">56dp</dimen>
diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml
index bdc7bdb2d2f7..f4f881f1ffa5 100644
--- a/packages/SystemUI/res/values/ids.xml
+++ b/packages/SystemUI/res/values/ids.xml
@@ -100,6 +100,7 @@
<!-- For notification icons for which targetSdk < L, this caches whether the icon is grayscale -->
<item type="id" name="icon_is_grayscale" />
<item type="id" name="image_icon_tag" />
+ <item type="id" name="align_transform_end_tag" />
<item type="id" name="contains_transformed_view" />
<item type="id" name="is_clicked_heads_up_tag" />
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
index 3ab2cca09a29..299ecebd021c 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
@@ -228,9 +228,7 @@ public class KeyguardStatusView extends GridLayout {
}
mDarkAmount = darkAmount;
mClockView.setDarkAmount(darkAmount);
- if (mMediaHostContainer.getVisibility() != View.GONE) {
- CrossFadeHelper.fadeOut(mMediaHostContainer, darkAmount);
- }
+ CrossFadeHelper.fadeOut(mMediaHostContainer, darkAmount);
updateDark();
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java
index b7f2cd0da642..be7adbc77ca1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java
@@ -416,10 +416,10 @@ public class InternetTile extends QSTileImpl<SignalState> {
if (cb.mAirplaneModeEnabled) {
if (!state.value) {
state.state = Tile.STATE_INACTIVE;
- state.icon = ResourceIcon.get(R.drawable.ic_qs_no_internet_airplane);
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_no_internet_unavailable);
state.secondaryLabel = r.getString(R.string.status_bar_airplane);
} else if (!wifiConnected) {
- state.icon = ResourceIcon.get(R.drawable.ic_qs_no_internet_airplane);
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_no_internet_unavailable);
if (cb.mNoNetworksAvailable) {
state.secondaryLabel =
r.getString(R.string.quick_settings_networks_unavailable);
@@ -486,7 +486,7 @@ public class InternetTile extends QSTileImpl<SignalState> {
if (cb.mAirplaneModeEnabled && cb.mQsTypeIcon != TelephonyIcons.ICON_CWF) {
state.state = Tile.STATE_INACTIVE;
- state.icon = ResourceIcon.get(R.drawable.ic_qs_no_internet_airplane);
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_no_internet_unavailable);
state.secondaryLabel = r.getString(R.string.status_bar_airplane);
} else if (cb.mNoDefaultNetwork && cb.mNoNetworksAvailable) {
state.icon = ResourceIcon.get(R.drawable.ic_qs_no_internet_unavailable);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
index 99c0f4ea5144..889dfde3a66d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
@@ -53,37 +53,26 @@ import com.android.systemui.statusbar.phone.NotificationIconContainer;
public class NotificationShelf extends ActivatableNotificationView implements
View.OnLayoutChangeListener, StateListener {
- private static final boolean ICON_ANMATIONS_WHILE_SCROLLING
- = SystemProperties.getBoolean("debug.icon_scroll_animations", true);
private static final int TAG_CONTINUOUS_CLIPPING = R.id.continuous_clipping_tag;
private static final String TAG = "NotificationShelf";
private NotificationIconContainer mShelfIcons;
private int[] mTmp = new int[2];
private boolean mHideBackground;
- private int mIconAppearTopPadding;
- private float mHiddenShelfIconSize;
private int mStatusBarHeight;
private AmbientState mAmbientState;
private NotificationStackScrollLayoutController mHostLayoutController;
- private int mMaxLayoutHeight;
private int mPaddingBetweenElements;
private int mNotGoneIndex;
private boolean mHasItemsInStableShelf;
private NotificationIconContainer mCollapsedIcons;
private int mScrollFastThreshold;
- private int mIconSize;
private int mStatusBarState;
- private int mRelativeOffset;
private boolean mInteractive;
- private float mOpenedAmount;
- private boolean mNoAnimationsInThisFrame;
private boolean mAnimationsEnabled = true;
private boolean mShowNotificationShelf;
private float mFirstElementRoundness;
private Rect mClipRect = new Rect();
- private int mCutoutHeight;
- private int mGapHeight;
private int mIndexOfFirstViewInShelf = -1;
private float mCornerAnimationDistance;
private NotificationShelfController mController;
@@ -121,7 +110,6 @@ public class NotificationShelf extends ActivatableNotificationView implements
private void initDimens() {
Resources res = getResources();
- mIconAppearTopPadding = res.getDimensionPixelSize(R.dimen.notification_icon_appear_padding);
mStatusBarHeight = res.getDimensionPixelOffset(R.dimen.status_bar_height);
mPaddingBetweenElements = res.getDimensionPixelSize(R.dimen.notification_divider_height);
@@ -133,9 +121,6 @@ public class NotificationShelf extends ActivatableNotificationView implements
mShelfIcons.setPadding(padding, 0, padding, 0);
mScrollFastThreshold = res.getDimensionPixelOffset(R.dimen.scroll_fast_threshold);
mShowNotificationShelf = res.getBoolean(R.bool.config_showNotificationShelf);
- mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size);
- mHiddenShelfIconSize = res.getDimensionPixelOffset(R.dimen.hidden_shelf_icon_size);
- mGapHeight = res.getDimensionPixelSize(R.dimen.qs_notification_padding);
mCornerAnimationDistance = res.getDimensionPixelSize(
R.dimen.notification_corner_animation_distance);
@@ -641,8 +626,7 @@ public class NotificationShelf extends ActivatableNotificationView implements
transitionAmount = mAmbientState.isFullyHidden() ? 1 : 0;
} else {
transitionAmount = iconTransitionAmount;
- iconState.needsCannedAnimation = iconState.clampedAppearAmount != clampedAmount
- && !mNoAnimationsInThisFrame;
+ iconState.needsCannedAnimation = iconState.clampedAppearAmount != clampedAmount;
}
iconState.clampedAppearAmount = clampedAmount;
setIconTransformationAmount(view, transitionAmount);
@@ -743,29 +727,7 @@ public class NotificationShelf extends ActivatableNotificationView implements
private void updateRelativeOffset() {
mCollapsedIcons.getLocationOnScreen(mTmp);
- mRelativeOffset = mTmp[0];
getLocationOnScreen(mTmp);
- mRelativeOffset -= mTmp[0];
- }
-
- @Override
- public WindowInsets onApplyWindowInsets(WindowInsets insets) {
- WindowInsets ret = super.onApplyWindowInsets(insets);
-
- // NotificationShelf drag from the status bar and the status bar dock on the top
- // of the display for current design so just focus on the top of ScreenDecorations.
- // In landscape or multiple window split mode, the NotificationShelf still drag from
- // the top and the physical notch/cutout goes to the right, left, or both side of the
- // display so it doesn't matter for the NotificationSelf in landscape.
- DisplayCutout displayCutout = insets.getDisplayCutout();
- mCutoutHeight = displayCutout == null || displayCutout.getSafeInsetTop() < 0
- ? 0 : displayCutout.getSafeInsetTop();
-
- return ret;
- }
-
- public void setMaxLayoutHeight(int maxLayoutHeight) {
- mMaxLayoutHeight = maxLayoutHeight;
}
/**
@@ -862,7 +824,6 @@ public class NotificationShelf extends ActivatableNotificationView implements
private class ShelfState extends ExpandableViewState {
private boolean hasItemsInStableShelf;
private ExpandableView firstViewInShelf;
- private ExpandableView firstViewInOverflowSection;
@Override
public void applyToView(View view) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt
index 91415f2788a4..05afc57fbb59 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt
@@ -83,6 +83,7 @@ class WiredChargingRippleController @Inject constructor(
var rippleView: ChargingRippleView = ChargingRippleView(context, attrs = null)
init {
+ pluggedIn = batteryController.isPluggedIn
val batteryStateChangeCallback = object : BatteryController.BatteryStateChangeCallback {
override fun onBatteryLevelChanged(
level: Int,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TextViewTransformState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TextViewTransformState.java
index c1ffc22637de..8b1efb54cb63 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TextViewTransformState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TextViewTransformState.java
@@ -98,20 +98,20 @@ public class TextViewTransformState extends TransformState {
int lineCount = mText.getLineCount();
return lineCount == 1 && lineCount == otherTvs.mText.getLineCount()
&& getEllipsisCount() == otherTvs.getEllipsisCount()
- && getViewHeight() != otherTvs.getViewHeight();
+ && getContentHeight() != otherTvs.getContentHeight();
}
@Override
- protected int getViewWidth() {
+ protected int getContentWidth() {
Layout l = mText.getLayout();
if (l != null) {
return (int) l.getLineWidth(0);
}
- return super.getViewWidth();
+ return super.getContentWidth();
}
@Override
- protected int getViewHeight() {
+ protected int getContentHeight() {
return mText.getLineHeight();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java
index 74e62b6afc19..9f9fba437869 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java
@@ -41,6 +41,7 @@ public class TransformState {
public static final int TRANSFORM_X = 0x1;
public static final int TRANSFORM_Y = 0x10;
public static final int TRANSFORM_ALL = TRANSFORM_X | TRANSFORM_Y;
+ public static final int ALIGN_END_TAG = R.id.align_transform_end_tag;
private static final float UNDEFINED = -1f;
private static final int TRANSFORMATION_START_X = R.id.transformation_start_x_tag;
@@ -78,11 +79,13 @@ public class TransformState {
private boolean mSameAsAny;
private float mTransformationEndY = UNDEFINED;
private float mTransformationEndX = UNDEFINED;
+ private boolean mAlignEnd;
protected Interpolator mDefaultInterpolator = Interpolators.FAST_OUT_SLOW_IN;
public void initFrom(View view, TransformInfo transformInfo) {
mTransformedView = view;
mTransformInfo = transformInfo;
+ mAlignEnd = Boolean.TRUE.equals(view.getTag(ALIGN_END_TAG));
}
/**
@@ -135,13 +138,16 @@ public class TransformState {
final View transformedView = mTransformedView;
boolean transformX = (transformationFlags & TRANSFORM_X) != 0;
boolean transformY = (transformationFlags & TRANSFORM_Y) != 0;
- int viewHeight = getViewHeight();
- int otherHeight = otherState.getViewHeight();
- boolean differentHeight = otherHeight != viewHeight && otherHeight != 0 && viewHeight != 0;
- int viewWidth = getViewWidth();
- int otherWidth = otherState.getViewWidth();
- boolean differentWidth = otherWidth != viewWidth && otherWidth != 0 && viewWidth != 0;
- boolean transformScale = transformScale(otherState) && (differentHeight || differentWidth);
+ int ownContentHeight = getContentHeight();
+ int otherContentHeight = otherState.getContentHeight();
+ boolean differentHeight = otherContentHeight != ownContentHeight
+ && otherContentHeight != 0 && ownContentHeight != 0;
+ int ownContentWidth = getContentWidth();
+ int otherContentWidth = otherState.getContentWidth();
+ boolean differentWidth = otherContentWidth != ownContentWidth
+ && otherContentWidth != 0 && ownContentWidth != 0;
+ boolean transformScale = (differentHeight || differentWidth) && transformScale(otherState);
+ boolean transformRightEdge = transformRightEdge(otherState);
// lets animate the positions correctly
if (transformationAmount == 0.0f
|| transformX && getTransformationStartX() == UNDEFINED
@@ -159,7 +165,14 @@ public class TransformState {
if (customTransformation == null
|| !customTransformation.initTransformation(this, otherState)) {
if (transformX) {
- setTransformationStartX(otherPosition[0] - ownStablePosition[0]);
+ if (transformRightEdge) {
+ int otherViewWidth = otherState.getTransformedView().getWidth();
+ int ownViewWidth = transformedView.getWidth();
+ setTransformationStartX((otherPosition[0] + otherViewWidth)
+ - (ownStablePosition[0] + ownViewWidth));
+ } else {
+ setTransformationStartX(otherPosition[0] - ownStablePosition[0]);
+ }
}
if (transformY) {
setTransformationStartY(otherPosition[1] - ownStablePosition[1]);
@@ -167,15 +180,15 @@ public class TransformState {
// we also want to animate the scale if we're the same
View otherView = otherState.getTransformedView();
if (transformScale && differentWidth) {
- setTransformationStartScaleX(otherWidth * otherView.getScaleX()
- / (float) viewWidth);
- transformedView.setPivotX(0);
+ setTransformationStartScaleX(otherContentWidth * otherView.getScaleX()
+ / (float) ownContentWidth);
+ transformedView.setPivotX(transformRightEdge ? transformedView.getWidth() : 0);
} else {
setTransformationStartScaleX(UNDEFINED);
}
if (transformScale && differentHeight) {
- setTransformationStartScaleY(otherHeight * otherView.getScaleY()
- / (float) viewHeight);
+ setTransformationStartScaleY(otherContentHeight * otherView.getScaleY()
+ / (float) ownContentHeight);
transformedView.setPivotY(0);
} else {
setTransformationStartScaleY(UNDEFINED);
@@ -239,11 +252,19 @@ public class TransformState {
}
}
- protected int getViewWidth() {
+ /**
+ * The width of the content of this view. For some views, like TextViews, this will be the
+ * width of content inside the view which is transforming, rather than the view's full width.
+ */
+ protected int getContentWidth() {
return mTransformedView.getWidth();
}
- protected int getViewHeight() {
+ /**
+ * The height of the content of this view. For some views, like TextViews, this will be the
+ * height of content inside the view which is transforming, rather than the view's full height.
+ */
+ protected int getContentHeight() {
return mTransformedView.getHeight();
}
@@ -251,6 +272,12 @@ public class TransformState {
return sameAs(otherState);
}
+ protected boolean transformRightEdge(TransformState otherState) {
+ boolean alignEnd = mAlignEnd && otherState.mAlignEnd;
+ boolean isRtl = mTransformedView.isLayoutRtl() && otherState.mTransformedView.isLayoutRtl();
+ return alignEnd ^ isRtl;
+ }
+
/**
* Transforms the {@link #mTransformedView} to the given transformviewstate
* @param otherState the state to transform from
@@ -302,6 +329,9 @@ public class TransformState {
boolean transformX = (transformationFlags & TRANSFORM_X) != 0;
boolean transformY = (transformationFlags & TRANSFORM_Y) != 0;
boolean transformScale = transformScale(otherState);
+ boolean transformRightEdge = transformRightEdge(otherState);
+ int ownContentWidth = getContentWidth();
+ int otherContentWidth = otherState.getContentWidth();
// lets animate the positions correctly
if (transformationAmount == 0.0f) {
if (transformX) {
@@ -316,14 +346,13 @@ public class TransformState {
: transformedView.getTranslationY();
setTransformationStartY(start);
}
- View otherView = otherState.getTransformedView();
- if (transformScale && otherState.getViewWidth() != getViewWidth()) {
+ if (transformScale && otherContentWidth != ownContentWidth) {
setTransformationStartScaleX(transformedView.getScaleX());
- transformedView.setPivotX(0);
+ transformedView.setPivotX(transformRightEdge ? transformedView.getWidth() : 0);
} else {
setTransformationStartScaleX(UNDEFINED);
}
- if (transformScale && otherState.getViewHeight() != getViewHeight()) {
+ if (transformScale && otherState.getContentHeight() != getContentHeight()) {
setTransformationStartScaleY(transformedView.getScaleY());
transformedView.setPivotY(0);
} else {
@@ -336,7 +365,11 @@ public class TransformState {
int[] otherStablePosition = otherState.getLaidOutLocationOnScreen();
int[] ownPosition = getLaidOutLocationOnScreen();
if (transformX) {
- float endX = otherStablePosition[0] - ownPosition[0];
+ int ownViewWidth = transformedView.getWidth();
+ int otherViewWidth = otherState.getTransformedView().getWidth();
+ float endX = transformRightEdge
+ ? (otherStablePosition[0] + otherViewWidth) - (ownPosition[0] + ownViewWidth)
+ : otherStablePosition[0] - ownPosition[0];
float interpolation = interpolatedValue;
if (customTransformation != null) {
if (customTransformation.customTransformTarget(this, otherState)) {
@@ -370,19 +403,18 @@ public class TransformState {
interpolation));
}
if (transformScale) {
- View otherView = otherState.getTransformedView();
float transformationStartScaleX = getTransformationStartScaleX();
if (transformationStartScaleX != UNDEFINED) {
transformedView.setScaleX(
NotificationUtils.interpolate(transformationStartScaleX,
- (otherState.getViewWidth() / (float) getViewWidth()),
+ (otherContentWidth / (float) ownContentWidth),
interpolatedValue));
}
float transformationStartScaleY = getTransformationStartScaleY();
if (transformationStartScaleY != UNDEFINED) {
transformedView.setScaleY(
NotificationUtils.interpolate(transformationStartScaleY,
- (otherState.getViewHeight() / (float) getViewHeight()),
+ (otherState.getContentHeight() / (float) getContentHeight()),
interpolatedValue));
}
}
@@ -529,6 +561,7 @@ public class TransformState {
mSameAsAny = false;
mTransformationEndX = UNDEFINED;
mTransformationEndY = UNDEFINED;
+ mAlignEnd = false;
mDefaultInterpolator = Interpolators.FAST_OUT_SLOW_IN;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java
index 2a157261205d..199692bc3b79 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java
@@ -151,6 +151,7 @@ public class NotificationTemplateViewWrapper extends NotificationHeaderViewWrapp
mRightIcon = mView.findViewById(com.android.internal.R.id.right_icon);
if (mRightIcon != null) {
mRightIcon.setTag(ImageTransformState.ICON_TAG, getRightIcon(sbn.getNotification()));
+ mRightIcon.setTag(TransformState.ALIGN_END_TAG, true);
}
mLeftIcon = mView.findViewById(com.android.internal.R.id.left_icon);
if (mLeftIcon != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
index 66d23477436f..a18917789ba1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
@@ -75,6 +75,7 @@ public class AmbientState {
private int mExpandAnimationTopChange;
private ExpandableNotificationRow mExpandingNotification;
private float mHideAmount;
+ private float mNotificationScrimTop;
private boolean mAppearing;
private float mPulseHeight = MAX_PULSE_HEIGHT;
private float mDozeAmount = 0.0f;
@@ -255,6 +256,20 @@ public class AmbientState {
return mHideAmount;
}
+ /**
+ * Set y position of top of notifications background scrim, relative to top of screen.
+ */
+ public void setNotificationScrimTop(float notificationScrimTop) {
+ mNotificationScrimTop = notificationScrimTop;
+ }
+
+ /**
+ * @return Y position of top of notifications background scrim, relative to top of screen.
+ */
+ public float getNotificationScrimTop() {
+ return mNotificationScrimTop;
+ }
+
public void setHideSensitive(boolean hideSensitive) {
mHideSensitive = hideSensitive;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index a804ae6a5cd8..21d8164ba491 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -963,7 +963,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
@ShadeViewRefactor(RefactorComponent.LAYOUT_ALGORITHM)
private void setMaxLayoutHeight(int maxLayoutHeight) {
mMaxLayoutHeight = maxLayoutHeight;
- mShelf.setMaxLayoutHeight(maxLayoutHeight);
updateAlgorithmHeightAndPadding();
}
@@ -1009,9 +1008,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
private void updateClippingToTopRoundedCorner() {
- Float clipStart = (float) mTopPadding
- + mStackTranslation
- + mAmbientState.getExpandAnimationTopChange();
+ Float clipStart = mAmbientState.getNotificationScrimTop();
Float clipEnd = clipStart + mCornerRadius;
boolean first = true;
for (int i = 0; i < getChildCount(); i++) {
@@ -1024,7 +1021,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
boolean clip = clipStart > start && clipStart < end
|| clipEnd >= start && clipEnd <= end;
clip &= !(first && mScrollAdapter.isScrolledToTop());
- child.setDistanceToTopRoundness(ExpandableView.NO_ROUNDNESS);
+ child.setDistanceToTopRoundness(clip ? Math.max(start - clipStart, 0)
+ : ExpandableView.NO_ROUNDNESS);
first = false;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
index 0d34e9090893..d9cbfda8b3c8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
@@ -156,9 +156,9 @@ public class StackScrollAlgorithm {
private void updateClipping(StackScrollAlgorithmState algorithmState,
AmbientState ambientState) {
- float drawStart = !ambientState.isOnKeyguard()
- ? ambientState.getStackY() - ambientState.getScrollY() : 0;
- float clipStart = 0;
+ float drawStart = ambientState.isOnKeyguard() ? 0
+ : ambientState.getStackY() - ambientState.getScrollY();
+ float clipStart = ambientState.getNotificationScrimTop();
int childCount = algorithmState.visibleChildren.size();
boolean firstHeadsUp = true;
for (int i = 0; i < childCount; i++) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
index 3bbabeb0cf7e..1263b104b6a5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -331,7 +331,7 @@ public class NotificationPanelViewController extends PanelViewController {
private LockIconViewController mLockIconViewController;
private NotificationsQuickSettingsContainer mNotificationContainerParent;
private boolean mAnimateNextPositionUpdate;
-
+ private float mQuickQsOffsetHeight;
private int mTrackingPointer;
private VelocityTracker mQsVelocityTracker;
private boolean mQsTracking;
@@ -943,6 +943,8 @@ public class NotificationPanelViewController extends PanelViewController {
}
public void updateResources() {
+ mQuickQsOffsetHeight = mResources.getDimensionPixelSize(
+ com.android.internal.R.dimen.quick_qs_offset_height);
mSplitShadeNotificationsTopPadding =
mResources.getDimensionPixelSize(R.dimen.notifications_top_padding_split_shade);
int qsWidth = mResources.getDimensionPixelSize(R.dimen.qs_panel_width);
@@ -2170,7 +2172,8 @@ public class NotificationPanelViewController extends PanelViewController {
// can be wrong during transitions when waiting for the keyguard to unlock
top = mTransitionToFullShadeQSPosition;
} else {
- float notificationTop = getQSEdgePosition();
+ final float notificationTop = getQSEdgePosition();
+ mAmbientState.setNotificationScrimTop(notificationTop);
top = (int) (isOnKeyguard() ? Math.min(qsPanelBottomY, notificationTop)
: notificationTop);
}
@@ -2252,7 +2255,8 @@ public class NotificationPanelViewController extends PanelViewController {
private float getQSEdgePosition() {
// TODO: replace StackY with unified calculation
- return mAmbientState.getStackY() - mAmbientState.getScrollY();
+ return Math.max(mQuickQsOffsetHeight * mAmbientState.getExpansionFraction(),
+ mAmbientState.getStackY() - mAmbientState.getScrollY());
}
private int calculateQsBottomPosition(float qsExpansionFraction) {
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
index 4b4a428e080b..4be4b11f3d37 100644
--- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
@@ -103,11 +103,11 @@ public class ThemeOverlayController extends SystemUI implements Dumpable {
private final boolean mIsMonetEnabled;
private UserTracker mUserTracker;
private DeviceProvisionedController mDeviceProvisionedController;
- private WallpaperColors mSystemColors;
+ private WallpaperColors mCurrentColors;
private WallpaperManager mWallpaperManager;
// If fabricated overlays were already created for the current theme.
private boolean mNeedsOverlayCreation;
- // Dominant olor extracted from wallpaper, NOT the color used on the overlay
+ // Dominant color extracted from wallpaper, NOT the color used on the overlay
protected int mMainWallpaperColor = Color.TRANSPARENT;
// Accent color extracted from wallpaper, NOT the color used on the overlay
protected int mWallpaperAccentColor = Color.TRANSPARENT;
@@ -162,10 +162,17 @@ public class ThemeOverlayController extends SystemUI implements Dumpable {
handleWallpaperColors(wallpaperColors, which);
};
+ private int getLatestWallpaperType() {
+ return mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_LOCK)
+ > mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_SYSTEM)
+ ? WallpaperManager.FLAG_LOCK : WallpaperManager.FLAG_SYSTEM;
+ }
+
private void handleWallpaperColors(WallpaperColors wallpaperColors, int flags) {
- final boolean hadWallpaperColors = mSystemColors != null;
- if ((flags & WallpaperManager.FLAG_SYSTEM) != 0) {
- mSystemColors = wallpaperColors;
+ final boolean hadWallpaperColors = mCurrentColors != null;
+ int latestWallpaperType = getLatestWallpaperType();
+ if ((flags & latestWallpaperType) != 0) {
+ mCurrentColors = wallpaperColors;
if (DEBUG) Log.d(TAG, "got new colors: " + wallpaperColors + " where: " + flags);
}
@@ -183,7 +190,7 @@ public class ThemeOverlayController extends SystemUI implements Dumpable {
} else {
if (DEBUG) {
Log.i(TAG, "During user setup, but allowing first color event: had? "
- + hadWallpaperColors + " has? " + (mSystemColors != null));
+ + hadWallpaperColors + " has? " + (mCurrentColors != null));
}
}
}
@@ -198,7 +205,8 @@ public class ThemeOverlayController extends SystemUI implements Dumpable {
if (!TextUtils.isEmpty(overlayPackageJson)) {
try {
JSONObject jsonObject = new JSONObject(overlayPackageJson);
- if (!COLOR_SOURCE_PRESET.equals(jsonObject.optString(OVERLAY_COLOR_SOURCE))) {
+ if (!COLOR_SOURCE_PRESET.equals(jsonObject.optString(OVERLAY_COLOR_SOURCE))
+ && ((flags & latestWallpaperType) != 0)) {
mSkipSettingChange = true;
if (jsonObject.has(OVERLAY_CATEGORY_ACCENT_COLOR) || jsonObject.has(
OVERLAY_CATEGORY_SYSTEM_PALETTE)) {
@@ -314,10 +322,10 @@ public class ThemeOverlayController extends SystemUI implements Dumpable {
// Upon boot, make sure we have the most up to date colors
Runnable updateColors = () -> {
WallpaperColors systemColor = mWallpaperManager.getWallpaperColors(
- WallpaperManager.FLAG_SYSTEM);
+ getLatestWallpaperType());
mMainExecutor.execute(() -> {
if (DEBUG) Log.d(TAG, "Boot colors: " + systemColor);
- mSystemColors = systemColor;
+ mCurrentColors = systemColor;
reevaluateSystemTheme(false /* forceReload */);
});
};
@@ -348,7 +356,7 @@ public class ThemeOverlayController extends SystemUI implements Dumpable {
}
private void reevaluateSystemTheme(boolean forceReload) {
- final WallpaperColors currentColors = mSystemColors;
+ final WallpaperColors currentColors = mCurrentColors;
final int mainColor;
final int accentCandidate;
if (currentColors == null) {
@@ -506,7 +514,7 @@ public class ThemeOverlayController extends SystemUI implements Dumpable {
@Override
public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
- pw.println("mSystemColors=" + mSystemColors);
+ pw.println("mSystemColors=" + mCurrentColors);
pw.println("mMainWallpaperColor=" + Integer.toHexString(mMainWallpaperColor));
pw.println("mWallpaperAccentColor=" + Integer.toHexString(mWallpaperAccentColor));
pw.println("mSecondaryOverlay=" + mSecondaryOverlay);
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index 98d8b29dc164..50b885815e09 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -28,6 +28,7 @@ import static android.media.AudioManager.STREAM_VOICE_CALL;
import static android.view.View.ACCESSIBILITY_LIVE_REGION_POLITE;
import static android.view.View.GONE;
import static android.view.View.INVISIBLE;
+import static android.view.View.LAYOUT_DIRECTION_RTL;
import static android.view.View.VISIBLE;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
@@ -52,6 +53,7 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
+import android.graphics.Outline;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.Region;
@@ -74,11 +76,13 @@ import android.util.Log;
import android.util.Slog;
import android.util.SparseBooleanArray;
import android.view.ContextThemeWrapper;
+import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.AccessibilityDelegate;
import android.view.View.OnAttachStateChangeListener;
import android.view.ViewGroup;
+import android.view.ViewOutlineProvider;
import android.view.ViewPropertyAnimator;
import android.view.ViewStub;
import android.view.ViewTreeObserver;
@@ -147,7 +151,10 @@ public class VolumeDialogImpl implements VolumeDialog,
private final int mDialogShowAnimationDurationMs;
private final int mDialogHideAnimationDurationMs;
+ private final int mDialogWidth;
+ private final int mDialogCornerRadius;
private final int mRingerDrawerItemSize;
+ private final int mRingerRowsPadding;
private final boolean mShowVibrate;
private final int mRingerCount;
private final boolean mShowLowMediaVolumeIcon;
@@ -162,11 +169,25 @@ public class VolumeDialogImpl implements VolumeDialog,
private Window mWindow;
private CustomDialog mDialog;
private ViewGroup mDialogView;
+ private ViewGroup mDialogRowsViewContainer;
private ViewGroup mDialogRowsView;
private ViewGroup mRinger;
- @Nullable private View mRingerAndRowsContainer;
- @Nullable private Drawable mRingerAndRowsContainerBackground;
+ /**
+ * Container for the top part of the dialog, which contains the ringer, the ringer drawer, the
+ * volume rows, and the ellipsis button. This does not include the live caption button.
+ */
+ @Nullable private View mTopContainer;
+
+ /** Container for the ringer icon, and for the (initially hidden) ringer drawer view. */
+ @Nullable private View mRingerAndDrawerContainer;
+
+ /**
+ * Background drawable for the ringer and drawer container. The background's top bound is
+ * initially inset by the height of the (hidden) ringer drawer. When the drawer is animated in,
+ * this top bound is animated to accommodate it.
+ */
+ @Nullable private Drawable mRingerAndDrawerContainerBackground;
private ViewGroup mSelectedRingerContainer;
private ImageView mSelectedRingerIcon;
@@ -196,6 +217,7 @@ public class VolumeDialogImpl implements VolumeDialog,
private final ValueAnimator mAnimateUpBackgroundToMatchDrawer = ValueAnimator.ofFloat(1f, 0f);
private boolean mIsRingerDrawerOpen = false;
+ private float mRingerDrawerClosedAmount = 1f;
private ImageButton mRingerIcon;
private ViewGroup mODICaptionsView;
@@ -266,8 +288,14 @@ public class VolumeDialogImpl implements VolumeDialog,
mDialogRowsView.invalidate();
};
}
+ mDialogWidth = mContext.getResources().getDimensionPixelSize(
+ R.dimen.volume_dialog_panel_width);
+ mDialogCornerRadius = mContext.getResources().getDimensionPixelSize(
+ R.dimen.volume_dialog_panel_width_half);
mRingerDrawerItemSize = mContext.getResources().getDimensionPixelSize(
R.dimen.volume_ringer_drawer_item_size);
+ mRingerRowsPadding = mContext.getResources().getDimensionPixelSize(
+ R.dimen.volume_dialog_ringer_rows_padding);
mShowVibrate = mController.hasVibrator();
// Normal, mute, and possibly vibrate.
@@ -321,7 +349,7 @@ public class VolumeDialogImpl implements VolumeDialog,
// The ringer and rows container has extra height at the top to fit the expanded ringer
// drawer. This area should not be touchable unless the ringer drawer is open.
- if (view == mRingerAndRowsContainer && !mIsRingerDrawerOpen) {
+ if (view == mTopContainer && !mIsRingerDrawerOpen) {
if (!isLandscape()) {
y += getRingerDrawerOpenExtraSize();
} else {
@@ -431,6 +459,46 @@ public class VolumeDialogImpl implements VolumeDialog,
});
}
+ mDialogRowsViewContainer = mDialogView.findViewById(R.id.volume_dialog_rows_container);
+ mTopContainer = mDialogView.findViewById(R.id.volume_dialog_top_container);
+ mRingerAndDrawerContainer = mDialogView.findViewById(
+ R.id.volume_ringer_and_drawer_container);
+
+ if (mRingerAndDrawerContainer != null) {
+ if (isLandscape()) {
+ // In landscape, we need to add padding to the bottom of the ringer drawer so that
+ // when it expands to the left, it doesn't overlap any additional volume rows.
+ mRingerAndDrawerContainer.setPadding(
+ mRingerAndDrawerContainer.getPaddingLeft(),
+ mRingerAndDrawerContainer.getPaddingTop(),
+ mRingerAndDrawerContainer.getPaddingRight(),
+ mRingerRowsPadding);
+
+ // Since the ringer drawer is expanding to the left, outside of the background of
+ // the dialog, it needs its own rounded background drawable. We also need that
+ // background to be rounded on all sides. We'll use a background rounded on all four
+ // corners, and then extend the container's background later to fill in the bottom
+ // corners when the drawer is closed.
+ mRingerAndDrawerContainer.setBackgroundDrawable(
+ mContext.getDrawable(R.drawable.volume_background_top_rounded));
+ }
+
+ // Post to wait for layout so that the background bounds are set.
+ mRingerAndDrawerContainer.post(() -> {
+ final LayerDrawable ringerAndDrawerBg =
+ (LayerDrawable) mRingerAndDrawerContainer.getBackground();
+
+ // Retrieve the ShapeDrawable from within the background - this is what we will
+ // animate up and down when the drawer is opened/closed.
+ if (ringerAndDrawerBg != null && ringerAndDrawerBg.getNumberOfLayers() > 0) {
+ mRingerAndDrawerContainerBackground = ringerAndDrawerBg.getDrawable(0);
+
+ updateBackgroundForDrawerClosedAmount();
+ setTopContainerBackgroundDrawable();
+ }
+ });
+ }
+
mRinger = mDialog.findViewById(R.id.ringer);
if (mRinger != null) {
mRingerIcon = mRinger.findViewById(R.id.ringer_icon);
@@ -510,6 +578,11 @@ public class VolumeDialogImpl implements VolumeDialog,
Configuration.ORIENTATION_LANDSCAPE;
}
+ private boolean isRtl() {
+ return mContext.getResources().getConfiguration().getLayoutDirection()
+ == LAYOUT_DIRECTION_RTL;
+ }
+
public void setStreamImportant(int stream, boolean important) {
mHandler.obtainMessage(H.SET_STREAM_IMPORTANT, stream, important ? 1 : 0).sendToTarget();
}
@@ -612,23 +685,6 @@ public class VolumeDialogImpl implements VolumeDialog,
row.anim = null;
- mRingerAndRowsContainer = mDialogView.findViewById(
- R.id.volume_dialog_ringer_and_rows_container);
-
- if (mRingerAndRowsContainer != null) {
- // Wait for layout so the background bounds are set, then set the background top to the
- // ringer drawer closed position.
- mRingerAndRowsContainer.post(() -> {
- final LayerDrawable bgWrapper =
- ((LayerDrawable) mRingerAndRowsContainer.getBackground());
-
- if (bgWrapper != null) {
- mRingerAndRowsContainerBackground = bgWrapper.getDrawable(0);
- setRingerAndRowsBackgroundTop(1f /* closedAmount */);
- }
- });
- }
-
final LayerDrawable seekbarDrawable =
(LayerDrawable) mContext.getDrawable(R.drawable.volume_row_seekbar);
@@ -764,8 +820,10 @@ public class VolumeDialogImpl implements VolumeDialog,
});
mRingerDrawerIconColorAnimator.setDuration(DRAWER_ANIMATION_DURATION_SHORT);
- mAnimateUpBackgroundToMatchDrawer.addUpdateListener(valueAnimator ->
- setRingerAndRowsBackgroundTop((float) valueAnimator.getAnimatedValue()));
+ mAnimateUpBackgroundToMatchDrawer.addUpdateListener(valueAnimator -> {
+ mRingerDrawerClosedAmount = (float) valueAnimator.getAnimatedValue();
+ updateBackgroundForDrawerClosedAmount();
+ });
}
private ImageView getDrawerIconViewForMode(int mode) {
@@ -792,6 +850,10 @@ public class VolumeDialogImpl implements VolumeDialog,
/** Animates in the ringer drawer. */
private void showRingerDrawer() {
+ if (mIsRingerDrawerOpen) {
+ return;
+ }
+
// Show all ringer icons except the currently selected one, since we're going to animate the
// ringer button to that position.
mRingerDrawerVibrateIcon.setVisibility(
@@ -874,6 +936,10 @@ public class VolumeDialogImpl implements VolumeDialog,
return;
}
+ if (!mIsRingerDrawerOpen) {
+ return;
+ }
+
// Hide the drawer icon for the selected ringer - it's visible in the ringer button and we
// don't want to be able to see it while it animates away.
getDrawerIconViewForMode(mState.ringerModeInternal).setVisibility(INVISIBLE);
@@ -1143,6 +1209,7 @@ public class VolumeDialogImpl implements VolumeDialog,
mController.notifyVisible(true);
mController.getCaptionsComponentState(false);
checkODICaptionsTooltip(false);
+ updateBackgroundForDrawerClosedAmount();
}
protected void rescheduleTimeoutH() {
@@ -1258,15 +1325,65 @@ public class VolumeDialogImpl implements VolumeDialog,
if (!mShowing) {
trimObsoleteH();
}
+
+ // Index of the last row that is actually visible.
+ int rightmostVisibleRowIndex = !isRtl() ? -1 : Short.MAX_VALUE;
+
// apply changes to all rows
for (final VolumeRow row : mRows) {
final boolean isActive = row == activeRow;
final boolean shouldBeVisible = shouldBeVisibleH(row, activeRow);
Util.setVisOrGone(row.view, shouldBeVisible);
+
+ if (shouldBeVisible && mRingerAndDrawerContainerBackground != null) {
+ // For RTL, the rightmost row has the lowest index since child views are laid out
+ // from right to left.
+ rightmostVisibleRowIndex =
+ !isRtl()
+ ? Math.max(rightmostVisibleRowIndex,
+ mDialogRowsView.indexOfChild(row.view))
+ : Math.min(rightmostVisibleRowIndex,
+ mDialogRowsView.indexOfChild(row.view));
+
+ // Add spacing between each of the visible rows - we'll remove the spacing from the
+ // last row after the loop.
+ final ViewGroup.LayoutParams layoutParams = row.view.getLayoutParams();
+ if (layoutParams instanceof LinearLayout.LayoutParams) {
+ final LinearLayout.LayoutParams linearLayoutParams =
+ ((LinearLayout.LayoutParams) layoutParams);
+ if (!isRtl()) {
+ linearLayoutParams.setMarginEnd(mRingerRowsPadding);
+ } else {
+ linearLayoutParams.setMarginStart(mRingerRowsPadding);
+ }
+ }
+
+ // Set the background on each of the rows. We'll remove this from the last row after
+ // the loop, since the last row's background is drawn by the main volume container.
+ row.view.setBackgroundDrawable(
+ mContext.getDrawable(R.drawable.volume_row_rounded_background));
+ }
+
if (row.view.isShown()) {
updateVolumeRowTintH(row, isActive);
}
}
+
+ if (rightmostVisibleRowIndex > -1 && rightmostVisibleRowIndex < Short.MAX_VALUE) {
+ final View lastVisibleChild = mDialogRowsView.getChildAt(rightmostVisibleRowIndex);
+ final ViewGroup.LayoutParams layoutParams = lastVisibleChild.getLayoutParams();
+ // Remove the spacing on the last row, and remove its background since the container is
+ // drawing a background for this row.
+ if (layoutParams instanceof LinearLayout.LayoutParams) {
+ final LinearLayout.LayoutParams linearLayoutParams =
+ ((LinearLayout.LayoutParams) layoutParams);
+ linearLayoutParams.setMarginStart(0);
+ linearLayoutParams.setMarginEnd(0);
+ lastVisibleChild.setBackgroundColor(Color.TRANSPARENT);
+ }
+ }
+
+ updateBackgroundForDrawerClosedAmount();
}
protected void updateRingerH() {
@@ -1742,32 +1859,74 @@ public class VolumeDialogImpl implements VolumeDialog,
return (mRingerCount - 1) * mRingerDrawerItemSize;
}
- /**
- * Sets the top of the background drawable behind the container view for the ringer icon and the
- * volume rows, depending on whether the ringer drawer is open or closed.
- */
- private void setRingerAndRowsBackgroundTop(float drawerClosedAmount) {
- if (mRingerAndRowsContainerBackground == null) {
+ private void updateBackgroundForDrawerClosedAmount() {
+ if (mRingerAndDrawerContainerBackground == null) {
return;
}
- final Rect bounds = mRingerAndRowsContainerBackground.copyBounds();
-
+ final Rect bounds = mRingerAndDrawerContainerBackground.copyBounds();
if (!isLandscape()) {
- // In portrait, the background should fill the full width, but only go up to the ringer
- // icon's top. We'll extend it all the way to the top of the container when the ringer
- // drawer opens.
- bounds.left = 0;
- bounds.top = (int) (drawerClosedAmount * getRingerDrawerOpenExtraSize());
+ bounds.top = (int) (mRingerDrawerClosedAmount * getRingerDrawerOpenExtraSize());
} else {
- // In landscape, the background should be inset by the size of the open drawer, since it
- // opens sideways. It should extend to the top of the container since we haven't left
- // space for the drawer to open upward.
- bounds.left = getRingerDrawerOpenExtraSize();
- bounds.top = 0;
+ bounds.left = (int) (mRingerDrawerClosedAmount * getRingerDrawerOpenExtraSize());
+ }
+ mRingerAndDrawerContainerBackground.setBounds(bounds);
+ }
+
+ /*
+ * The top container is responsible for drawing the solid color background behind the rightmost
+ * (primary) volume row. This is because the volume drawer animates in from below, initially
+ * overlapping the primary row. We need the drawer to draw below the row's SeekBar, since it
+ * looks strange to overlap it, but above the row's background color, since otherwise it will be
+ * clipped.
+ *
+ * Since we can't be both above and below the volume row view, we'll be below it, and render the
+ * background color in the container since they're both above that.
+ */
+ private void setTopContainerBackgroundDrawable() {
+ if (mTopContainer == null) {
+ return;
+ }
+
+ final ColorDrawable solidDrawable = new ColorDrawable(
+ Utils.getColorAttrDefaultColor(mContext, com.android.internal.R.attr.colorSurface));
+
+ final LayerDrawable background = new LayerDrawable(new Drawable[] { solidDrawable });
+
+ // Size the solid color to match the primary volume row. In landscape, extend it upwards
+ // slightly so that it fills in the bottom corners of the ringer icon, whose background is
+ // rounded on all sides so that it can expand to the left, outside the dialog's background.
+ background.setLayerSize(0, mDialogWidth,
+ !isLandscape()
+ ? mDialogRowsView.getHeight()
+ : mDialogRowsView.getHeight() + mDialogCornerRadius);
+ // Inset the top so that the color only renders below the ringer drawer, which has its own
+ // background. In landscape, reduce the inset slightly since we are using the background to
+ // fill in the corners of the closed ringer drawer.
+ background.setLayerInsetTop(0,
+ !isLandscape()
+ ? mDialogRowsViewContainer.getTop()
+ : mDialogRowsViewContainer.getTop() - mDialogCornerRadius);
+
+ // Set gravity to top-right, since additional rows will be added on the left.
+ background.setLayerGravity(0, Gravity.TOP | Gravity.RIGHT);
+
+ // In landscape, the ringer drawer animates out to the left (instead of down). Since the
+ // drawer comes from the right (beyond the bounds of the dialog), we should clip it so it
+ // doesn't draw outside the dialog background. This isn't an issue in portrait, since the
+ // drawer animates downward, below the volume row.
+ if (isLandscape()) {
+ mRingerAndDrawerContainer.setOutlineProvider(new ViewOutlineProvider() {
+ @Override
+ public void getOutline(View view, Outline outline) {
+ outline.setRoundRect(
+ 0, 0, view.getWidth(), view.getHeight(), mDialogCornerRadius);
+ }
+ });
+ mRingerAndDrawerContainer.setClipToOutline(true);
}
- mRingerAndRowsContainerBackground.setBounds(bounds);
+ mTopContainer.setBackground(background);
}
private final VolumeDialogController.Callbacks mControllerCallbackH
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
index 5fa63bc3d061..ad99e4d5a772 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
@@ -59,6 +59,7 @@ import android.view.WindowManager;
import android.view.accessibility.AccessibilityNodeInfo;
import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.FlakyTest;
import androidx.test.filters.LargeTest;
import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
@@ -72,7 +73,6 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
-import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@@ -91,7 +91,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
@Mock
private WindowMagnifierCallback mWindowMagnifierCallback;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private SurfaceControl.Transaction mTransaction;
+ private SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction();
private TestableWindowManager mWindowManager;
private SysUiState mSysUiState = new SysUiState();
private Resources mResources;
@@ -138,6 +138,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
}
@Test
+ @FlakyTest(bugId = 188889181)
public void enableWindowMagnification_showControlAndNotifyBoundsChanged() {
mInstrumentation.runOnMainSync(() -> {
mWindowMagnificationController.enableWindowMagnification(Float.NaN, Float.NaN,
@@ -145,16 +146,9 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
});
verify(mMirrorWindowControl).showControl();
- ArgumentCaptor<Rect> boundsCaptor = ArgumentCaptor.forClass(Rect.class);
verify(mWindowMagnifierCallback,
- timeout(LAYOUT_CHANGE_TIMEOUT_MS)).onWindowMagnifierBoundsChanged(
- eq(mContext.getDisplayId()), boundsCaptor.capture());
- final Rect actualBounds = new Rect();
- final View mirrorView = mWindowManager.getAttachedView();
- assertNotNull(mirrorView);
- mirrorView.getBoundsOnScreen(actualBounds);
- assertEquals(actualBounds, boundsCaptor.getValue());
-
+ timeout(LAYOUT_CHANGE_TIMEOUT_MS).atLeastOnce()).onWindowMagnifierBoundsChanged(
+ eq(mContext.getDisplayId()), any(Rect.class));
}
@Test
@@ -203,6 +197,12 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
@Test
public void setScale_enabled_expectedValueAndUpdateStateDescription() {
+ doAnswer(invocation -> {
+ final Runnable runnable = invocation.getArgument(0);
+ runnable.run();
+ return null;
+ }).when(mHandler).postDelayed(any(Runnable.class), anyLong());
+
mInstrumentation.runOnMainSync(
() -> mWindowMagnificationController.enableWindowMagnification(2.0f, Float.NaN,
Float.NaN));
@@ -210,9 +210,6 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
mInstrumentation.runOnMainSync(() -> mWindowMagnificationController.setScale(3.0f));
assertEquals(3.0f, mWindowMagnificationController.getScale(), 0);
- ArgumentCaptor<Runnable> runnableArgumentCaptor = ArgumentCaptor.forClass(Runnable.class);
- verify(mHandler).postDelayed(runnableArgumentCaptor.capture(), anyLong());
- runnableArgumentCaptor.getValue().run();
final View mirrorView = mWindowManager.getAttachedView();
assertNotNull(mirrorView);
assertThat(mirrorView.getStateDescription().toString(), containsString("300"));
diff --git a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java
index 714998702146..cfaffd08a1a7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java
@@ -258,6 +258,7 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), anyInt()))
.thenReturn(jsonString);
when(mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_LOCK)).thenReturn(20);
+ when(mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_SYSTEM)).thenReturn(21);
mColorsListener.getValue().onColorsChanged(mainColors, WallpaperManager.FLAG_SYSTEM);
@@ -302,6 +303,63 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
}
@Test
+ public void onWallpaperColorsChanged_ResetThemeWhenFromLatestWallpaper() {
+ // Should ask for a new theme when the colors of the last applied wallpaper change
+ WallpaperColors mainColors = new WallpaperColors(Color.valueOf(Color.RED),
+ Color.valueOf(Color.BLUE), null);
+
+ String jsonString =
+ "{\"android.theme.customization.system_palette\":\"override.package.name\","
+ + "\"android.theme.customization.color_source\":\"home_wallpaper\","
+ + "\"android.theme.customization.color_index\":\"2\"}";
+
+ when(mSecureSettings.getStringForUser(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), anyInt()))
+ .thenReturn(jsonString);
+ when(mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_LOCK)).thenReturn(1);
+ // SYSTEM wallpaper is the last applied one
+ when(mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_SYSTEM)).thenReturn(2);
+
+ mColorsListener.getValue().onColorsChanged(mainColors, WallpaperManager.FLAG_SYSTEM);
+
+ ArgumentCaptor<String> updatedSetting = ArgumentCaptor.forClass(String.class);
+ verify(mSecureSettings).putString(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture());
+
+ verify(mThemeOverlayApplier)
+ .applyCurrentUserOverlays(any(), any(), anyInt(), any());
+ }
+
+ @Test
+ public void onWallpaperColorsChanged_keepThemeIfNotLatestWallpaper() {
+ // Shouldn't ask for a new theme when the colors of the wallpaper that is not the last
+ // applied one change
+ WallpaperColors mainColors = new WallpaperColors(Color.valueOf(Color.RED),
+ Color.valueOf(Color.BLUE), null);
+
+ String jsonString =
+ "{\"android.theme.customization.system_palette\":\"override.package.name\","
+ + "\"android.theme.customization.color_source\":\"home_wallpaper\","
+ + "\"android.theme.customization.color_index\":\"2\"}";
+
+ when(mSecureSettings.getStringForUser(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), anyInt()))
+ .thenReturn(jsonString);
+ when(mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_LOCK)).thenReturn(1);
+ // SYSTEM wallpaper is the last applied one
+ when(mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_SYSTEM)).thenReturn(2);
+
+ mColorsListener.getValue().onColorsChanged(mainColors, WallpaperManager.FLAG_LOCK);
+
+ verify(mSecureSettings, never()).putString(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), any());
+
+
+ verify(mThemeOverlayApplier, never())
+ .applyCurrentUserOverlays(any(), any(), anyInt(), any());
+ }
+
+ @Test
public void onProfileAdded_setsTheme() {
mBroadcastReceiver.getValue().onReceive(null,
new Intent(Intent.ACTION_MANAGED_PROFILE_ADDED));
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index dc8f84a2f243..85eadf5a5137 100644
--- a/services/core/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -754,8 +754,7 @@ final class UiModeManagerService extends SystemService {
}
@Override
- public void setApplicationNightMode(@UiModeManager.NightMode int mode)
- throws RemoteException {
+ public void setApplicationNightMode(@UiModeManager.NightMode int mode) {
switch (mode) {
case UiModeManager.MODE_NIGHT_NO:
case UiModeManager.MODE_NIGHT_YES:
@@ -776,14 +775,10 @@ final class UiModeManagerService extends SystemService {
default:
configNightMode = Configuration.UI_MODE_NIGHT_UNDEFINED;
}
- try {
- final ActivityTaskManagerInternal.PackageConfigurationUpdater updater =
- mActivityTaskManager.createPackageConfigurationUpdater();
- updater.setNightMode(configNightMode);
- updater.commit();
- } catch (RemoteException e) {
- throw e;
- }
+ final ActivityTaskManagerInternal.PackageConfigurationUpdater updater =
+ mActivityTaskManager.createPackageConfigurationUpdater();
+ updater.setNightMode(configNightMode);
+ updater.commit();
}
@Override
diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java
index 57adcb6e3966..7e2274b65f55 100644
--- a/services/core/java/com/android/server/VcnManagementService.java
+++ b/services/core/java/com/android/server/VcnManagementService.java
@@ -64,6 +64,7 @@ import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.ArrayMap;
+import android.util.LocalLog;
import android.util.Log;
import android.util.Slog;
@@ -149,6 +150,10 @@ import java.util.concurrent.TimeUnit;
public class VcnManagementService extends IVcnManagementService.Stub {
@NonNull private static final String TAG = VcnManagementService.class.getSimpleName();
private static final long DUMP_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(5);
+ private static final int LOCAL_LOG_LINE_COUNT = 128;
+
+ // Public for use in all other VCN classes
+ @NonNull public static final LocalLog LOCAL_LOG = new LocalLog(LOCAL_LOG_LINE_COUNT);
public static final boolean VDBG = false; // STOPSHIP: if true
@@ -242,13 +247,13 @@ public class VcnManagementService extends IVcnManagementService.Stub {
try {
configBundle = mConfigDiskRwHelper.readFromDisk();
} catch (IOException e1) {
- Slog.e(TAG, "Failed to read configs from disk; retrying", e1);
+ logErr("Failed to read configs from disk; retrying", e1);
// Retry immediately. The IOException may have been transient.
try {
configBundle = mConfigDiskRwHelper.readFromDisk();
} catch (IOException e2) {
- Slog.wtf(TAG, "Failed to read configs from disk", e2);
+ logWtf("Failed to read configs from disk", e2);
return;
}
}
@@ -440,7 +445,7 @@ public class VcnManagementService extends IVcnManagementService.Stub {
synchronized (mLock) {
final TelephonySubscriptionSnapshot oldSnapshot = mLastSnapshot;
mLastSnapshot = snapshot;
- Slog.d(TAG, "new snapshot: " + mLastSnapshot);
+ logDbg("new snapshot: " + mLastSnapshot);
// Start any VCN instances as necessary
for (Entry<ParcelUuid, VcnConfig> entry : mConfigs.entrySet()) {
@@ -543,7 +548,7 @@ public class VcnManagementService extends IVcnManagementService.Stub {
@GuardedBy("mLock")
private void startVcnLocked(@NonNull ParcelUuid subscriptionGroup, @NonNull VcnConfig config) {
- Slog.d(TAG, "Starting VCN config for subGrp: " + subscriptionGroup);
+ logDbg("Starting VCN config for subGrp: " + subscriptionGroup);
// TODO(b/176939047): Support multiple VCNs active at the same time, or limit to one active
// VCN.
@@ -568,7 +573,7 @@ public class VcnManagementService extends IVcnManagementService.Stub {
@GuardedBy("mLock")
private void startOrUpdateVcnLocked(
@NonNull ParcelUuid subscriptionGroup, @NonNull VcnConfig config) {
- Slog.d(TAG, "Starting or updating VCN config for subGrp: " + subscriptionGroup);
+ logDbg("Starting or updating VCN config for subGrp: " + subscriptionGroup);
if (mVcns.containsKey(subscriptionGroup)) {
final Vcn vcn = mVcns.get(subscriptionGroup);
@@ -594,7 +599,7 @@ public class VcnManagementService extends IVcnManagementService.Stub {
if (!config.getProvisioningPackageName().equals(opPkgName)) {
throw new IllegalArgumentException("Mismatched caller and VcnConfig creator");
}
- Slog.d(TAG, "VCN config updated for subGrp: " + subscriptionGroup);
+ logDbg("VCN config updated for subGrp: " + subscriptionGroup);
mContext.getSystemService(AppOpsManager.class)
.checkPackage(mDeps.getBinderCallingUid(), config.getProvisioningPackageName());
@@ -620,7 +625,7 @@ public class VcnManagementService extends IVcnManagementService.Stub {
public void clearVcnConfig(@NonNull ParcelUuid subscriptionGroup, @NonNull String opPkgName) {
requireNonNull(subscriptionGroup, "subscriptionGroup was null");
requireNonNull(opPkgName, "opPkgName was null");
- Slog.d(TAG, "VCN config cleared for subGrp: " + subscriptionGroup);
+ logDbg("VCN config cleared for subGrp: " + subscriptionGroup);
mContext.getSystemService(AppOpsManager.class)
.checkPackage(mDeps.getBinderCallingUid(), opPkgName);
@@ -683,7 +688,7 @@ public class VcnManagementService extends IVcnManagementService.Stub {
VcnConfig::toPersistableBundle);
mConfigDiskRwHelper.writeToDisk(bundle);
} catch (IOException e) {
- Slog.e(TAG, "Failed to save configs to disk", e);
+ logErr("Failed to save configs to disk", e);
throw new ServiceSpecificException(0, "Failed to save configs");
}
}
@@ -793,7 +798,7 @@ public class VcnManagementService extends IVcnManagementService.Stub {
for (int subId : networkCapabilities.getSubscriptionIds()) {
// Verify that all subscriptions point to the same group
if (subGrp != null && !subGrp.equals(snapshot.getGroupForSubId(subId))) {
- Slog.wtf(TAG, "Got multiple subscription groups for a single network");
+ logWtf("Got multiple subscription groups for a single network");
}
subGrp = snapshot.getGroupForSubId(subId);
@@ -859,10 +864,8 @@ public class VcnManagementService extends IVcnManagementService.Stub {
final VcnUnderlyingNetworkPolicy policy = new VcnUnderlyingNetworkPolicy(
mTrackingNetworkCallback.requiresRestartForCarrierWifi(result), result);
- if (VDBG) {
- Slog.d(TAG, "getUnderlyingNetworkPolicy() called for caps: " + networkCapabilities
+ logVdbg("getUnderlyingNetworkPolicy() called for caps: " + networkCapabilities
+ "; and lp: " + linkProperties + "; result = " + policy);
- }
return policy;
});
}
@@ -954,14 +957,14 @@ public class VcnManagementService extends IVcnManagementService.Stub {
|| vcnStatus == VCN_STATUS_CODE_SAFE_MODE) {
resultStatus = vcnStatus;
} else {
- Slog.wtf(TAG, "Unknown VCN status: " + vcnStatus);
+ logWtf("Unknown VCN status: " + vcnStatus);
resultStatus = VCN_STATUS_CODE_NOT_CONFIGURED;
}
try {
cbInfo.mCallback.onVcnStatusChanged(resultStatus);
} catch (RemoteException e) {
- Slog.d(TAG, "VcnStatusCallback threw on VCN status change", e);
+ logDbg("VcnStatusCallback threw on VCN status change", e);
}
}
} finally {
@@ -989,6 +992,43 @@ public class VcnManagementService extends IVcnManagementService.Stub {
}
}
+ private void logVdbg(String msg) {
+ if (VDBG) {
+ Slog.v(TAG, msg);
+ LOCAL_LOG.log(TAG + " VDBG: " + msg);
+ }
+ }
+
+ private void logDbg(String msg) {
+ Slog.d(TAG, msg);
+ LOCAL_LOG.log(TAG + " DBG: " + msg);
+ }
+
+ private void logDbg(String msg, Throwable tr) {
+ Slog.d(TAG, msg, tr);
+ LOCAL_LOG.log(TAG + " DBG: " + msg + tr);
+ }
+
+ private void logErr(String msg) {
+ Slog.e(TAG, msg);
+ LOCAL_LOG.log(TAG + " ERR: " + msg);
+ }
+
+ private void logErr(String msg, Throwable tr) {
+ Slog.e(TAG, msg, tr);
+ LOCAL_LOG.log(TAG + " ERR: " + msg + tr);
+ }
+
+ private void logWtf(String msg) {
+ Slog.wtf(TAG, msg);
+ LOCAL_LOG.log(TAG + " WTF: " + msg);
+ }
+
+ private void logWtf(String msg, Throwable tr) {
+ Slog.wtf(TAG, msg, tr);
+ LOCAL_LOG.log(TAG + " WTF: " + msg + tr);
+ }
+
/**
* Dumps the state of the VcnManagementService for logging and debugging purposes.
*
@@ -1029,6 +1069,12 @@ public class VcnManagementService extends IVcnManagementService.Stub {
pw.decreaseIndent();
pw.println();
}
+
+ pw.println("Local log:");
+ pw.increaseIndent();
+ LOCAL_LOG.dump(pw);
+ pw.decreaseIndent();
+ pw.println();
}, DUMP_TIMEOUT_MILLIS);
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 5f9576120cc5..88f4fc2d59f8 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -4324,8 +4324,8 @@ public class ActivityManagerService extends IActivityManager.Stub
if (pid > 0 && pid != MY_PID) {
killProcessQuiet(pid);
//TODO: killProcessGroup(app.info.uid, pid);
- mProcessList.noteAppKill(app, ApplicationExitInfo.REASON_INITIALIZATION_FAILURE,
- ApplicationExitInfo.SUBREASON_UNKNOWN, "attach failed");
+ // We can't log the app kill info for this process since we don't
+ // know who it is, so just skip the logging.
} else {
try {
thread.scheduleExit();
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/AidlConversionUtils.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/AidlConversionUtils.java
index 6ad4308d7608..573c20fe041b 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/AidlConversionUtils.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/AidlConversionUtils.java
@@ -120,10 +120,13 @@ final class AidlConversionUtils {
return BiometricFaceConstants.FACE_ACQUIRED_SENSOR_DIRTY;
case AcquiredInfo.VENDOR:
return BiometricFaceConstants.FACE_ACQUIRED_VENDOR;
- case AcquiredInfo.UNKNOWN:
case AcquiredInfo.FIRST_FRAME_RECEIVED:
+ return BiometricFaceConstants.FACE_ACQUIRED_FIRST_FRAME_RECEIVED;
case AcquiredInfo.DARK_GLASSES_DETECTED:
+ return BiometricFaceConstants.FACE_ACQUIRED_DARK_GLASSES_DETECTED;
case AcquiredInfo.MOUTH_COVERING_DETECTED:
+ return BiometricFaceConstants.FACE_ACQUIRED_MOUTH_COVERING_DETECTED;
+ case AcquiredInfo.UNKNOWN:
default:
return BiometricFaceConstants.FACE_ACQUIRED_UNKNOWN;
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
index 0e6a0f72206c..2f71f44b6bef 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
@@ -148,6 +148,16 @@ public class Sensor {
}
@Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
+
+ @Override
public void onChallengeGenerated(long challenge) {
mHandler.post(() -> {
final BaseClientMonitor client = mScheduler.getCurrentClient();
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/TestHal.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/TestHal.java
index bf3f7b45dc4a..525e508f2b6d 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/TestHal.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/TestHal.java
@@ -35,6 +35,16 @@ public class TestHal extends IFace.Stub {
private static final String TAG = "face.aidl.TestHal";
@Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
+
+ @Override
public SensorProps[] getSensorProps() {
Slog.w(TAG, "getSensorProps");
return new SensorProps[0];
@@ -46,6 +56,16 @@ public class TestHal extends IFace.Stub {
return new ISession.Stub() {
@Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
+
+ @Override
public void generateChallenge() throws RemoteException {
Slog.w(TAG, "generateChallenge");
cb.onChallengeGenerated(0L);
@@ -71,6 +91,14 @@ public class TestHal extends IFace.Stub {
public void cancel() throws RemoteException {
cb.onError(Error.CANCELED, 0 /* vendorCode */);
}
+ @Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
};
}
@@ -82,6 +110,14 @@ public class TestHal extends IFace.Stub {
public void cancel() throws RemoteException {
cb.onError(Error.CANCELED, 0 /* vendorCode */);
}
+ @Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
};
}
@@ -93,6 +129,14 @@ public class TestHal extends IFace.Stub {
public void cancel() throws RemoteException {
cb.onError(Error.CANCELED, 0 /* vendorCode */);
}
+ @Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
};
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
index 10137b5a28c9..b3b818fd6d3d 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
@@ -151,6 +151,16 @@ class Sensor {
}
@Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
+
+ @Override
public void onChallengeGenerated(long challenge) {
mHandler.post(() -> {
final BaseClientMonitor client = mScheduler.getCurrentClient();
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/TestHal.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/TestHal.java
index abc3597a5183..e7719239d844 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/TestHal.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/TestHal.java
@@ -33,6 +33,16 @@ public class TestHal extends IFingerprint.Stub {
private static final String TAG = "fingerprint.aidl.TestHal";
@Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
+
+ @Override
public SensorProps[] getSensorProps() {
Slog.w(TAG, "getSensorProps");
return new SensorProps[0];
@@ -44,6 +54,16 @@ public class TestHal extends IFingerprint.Stub {
return new ISession.Stub() {
@Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
+
+ @Override
public void generateChallenge() throws RemoteException {
Slog.w(TAG, "generateChallenge");
cb.onChallengeGenerated(0L);
@@ -63,6 +83,14 @@ public class TestHal extends IFingerprint.Stub {
public void cancel() throws RemoteException {
cb.onError(Error.CANCELED, 0 /* vendorCode */);
}
+ @Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
};
}
@@ -74,6 +102,14 @@ public class TestHal extends IFingerprint.Stub {
public void cancel() throws RemoteException {
cb.onError(Error.CANCELED, 0 /* vendorCode */);
}
+ @Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
};
}
@@ -85,6 +121,14 @@ public class TestHal extends IFingerprint.Stub {
public void cancel() throws RemoteException {
cb.onError(Error.CANCELED, 0 /* vendorCode */);
}
+ @Override
+ public int getInterfaceVersion() {
+ return this.VERSION;
+ }
+ @Override
+ public String getInterfaceHash() {
+ return this.HASH;
+ }
};
}
diff --git a/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java b/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
index aa3e5795b684..a34d7226136a 100644
--- a/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
+++ b/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
@@ -72,8 +72,11 @@ public class SystemEmergencyHelper extends EmergencyHelper {
@Override
public boolean isInEmergency(long extensionTimeMs) {
+ boolean isInExtensionTime = mEmergencyCallEndRealtimeMs != Long.MIN_VALUE
+ && (SystemClock.elapsedRealtime() - mEmergencyCallEndRealtimeMs) < extensionTimeMs;
+
return mIsInEmergencyCall
- || ((SystemClock.elapsedRealtime() - mEmergencyCallEndRealtimeMs) < extensionTimeMs)
+ || isInExtensionTime
|| mTelephonyManager.getEmergencyCallbackMode()
|| mTelephonyManager.isInEmergencySmsMode();
}
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 0bc28405eab3..f0e693976faa 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -8469,7 +8469,9 @@ public class NotificationManagerService extends SystemService {
for (int i = 0; i < newUris.size(); i++) {
final Uri uri = newUris.valueAt(i);
if (oldUris == null || !oldUris.contains(uri)) {
- Slog.d(TAG, key + ": granting " + uri);
+ if (DBG) {
+ Slog.d(TAG, key + ": granting " + uri);
+ }
grantUriPermission(permissionOwner, uri, newRecord.getUid(), targetPkg,
targetUserId);
}
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index de9add0d0b37..b135e88f40c7 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -1207,8 +1207,16 @@ public class LauncherAppsService extends SystemService {
final long ident = Binder.clearCallingIdentity();
try {
String packageName = component.getPackageName();
+ int uId = -1;
+ try {
+ uId = mContext.getPackageManager().getApplicationInfo(
+ packageName, PackageManager.MATCH_ANY_USER).uid;
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.d(TAG, "package not found: " + e);
+ }
intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", packageName, null));
+ intent.putExtra("uId", uId);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.setSourceBounds(sourceBounds);
} finally {
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 4963d64797e5..4ebf4768a973 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -121,6 +121,7 @@ import java.io.PrintWriter;
import java.net.URISyntaxException;
import java.security.SecureRandom;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Base64;
import java.util.Collection;
import java.util.Collections;
@@ -253,6 +254,8 @@ class PackageManagerShellCommand extends ShellCommand {
return runSuspend(true);
case "unsuspend":
return runSuspend(false);
+ case "set-distracting-restriction":
+ return runSetDistractingRestriction();
case "grant":
return runGrantRevokePermission(true);
case "revoke":
@@ -2207,6 +2210,57 @@ class PackageManagerShellCommand extends ShellCommand {
return 0;
}
+ private int runSetDistractingRestriction() {
+ final PrintWriter pw = getOutPrintWriter();
+ int userId = UserHandle.USER_SYSTEM;
+ String opt;
+ int flags = 0;
+ while ((opt = getNextOption()) != null) {
+ switch (opt) {
+ case "--user":
+ userId = UserHandle.parseUserArg(getNextArgRequired());
+ break;
+ case "--flag":
+ final String flag = getNextArgRequired();
+ switch (flag) {
+ case "hide-notifications":
+ flags |= PackageManager.RESTRICTION_HIDE_NOTIFICATIONS;
+ break;
+ case "hide-from-suggestions":
+ flags |= PackageManager.RESTRICTION_HIDE_FROM_SUGGESTIONS;
+ break;
+ default:
+ pw.println("Unrecognized flag: " + flag);
+ return 1;
+ }
+ break;
+ default:
+ pw.println("Error: Unknown option: " + opt);
+ return 1;
+ }
+ }
+
+ final List<String> packageNames = getRemainingArgs();
+ if (packageNames.isEmpty()) {
+ pw.println("Error: package name not specified");
+ return 1;
+ }
+ try {
+ final int translatedUserId = translateUserId(userId, UserHandle.USER_NULL,
+ "set-distracting");
+ final String[] errored = mInterface.setDistractingPackageRestrictionsAsUser(
+ packageNames.toArray(new String[]{}), flags, translatedUserId);
+ if (errored.length > 0) {
+ pw.println("Could not set restriction for: " + Arrays.toString(errored));
+ return 1;
+ }
+ return 0;
+ } catch (RemoteException | IllegalArgumentException e) {
+ pw.println(e.toString());
+ return 1;
+ }
+ }
+
private int runSuspend(boolean suspendedState) {
final PrintWriter pw = getOutPrintWriter();
int userId = UserHandle.USER_SYSTEM;
@@ -3688,6 +3742,16 @@ class PackageManagerShellCommand extends ShellCommand {
pw.println(" unsuspend [--user USER_ID] PACKAGE [PACKAGE...]");
pw.println(" Unsuspends the specified package(s) (as user).");
pw.println("");
+ pw.println(" set-distracting-restriction [--user USER_ID] [--flag FLAG ...]");
+ pw.println(" PACKAGE [PACKAGE...]");
+ pw.println(" Sets the specified restriction flags to given package(s) (for user).");
+ pw.println(" Flags are:");
+ pw.println(" hide-notifications: Hides notifications from this package");
+ pw.println(" hide-from-suggestions: Hides this package from suggestions");
+ pw.println(" (by the launcher, etc.)");
+ pw.println(" Any existing flags are overwritten, which also means that if no flags are");
+ pw.println(" specified then all existing flags will be cleared.");
+ pw.println("");
pw.println(" grant [--user USER_ID] PACKAGE PERMISSION");
pw.println(" revoke [--user USER_ID] PACKAGE PERMISSION");
pw.println(" These commands either grant or revoke permissions to apps. The permissions");
diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
index a7bac20976cd..bad7e5c27b7b 100644
--- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
+++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
@@ -720,7 +720,8 @@ final class DefaultPermissionGrantPolicy {
for (String voiceInteractPackageName : voiceInteractPackageNames) {
grantPermissionsToSystemPackage(pm, voiceInteractPackageName, userId,
CONTACTS_PERMISSIONS, CALENDAR_PERMISSIONS, MICROPHONE_PERMISSIONS,
- PHONE_PERMISSIONS, SMS_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS);
+ PHONE_PERMISSIONS, SMS_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS,
+ NEARBY_DEVICES_PERMISSIONS);
}
}
diff --git a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java
index 5565ccb6cf7c..fca706b707fa 100644
--- a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java
+++ b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java
@@ -39,7 +39,6 @@ import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyManager;
import android.util.ArrayMap;
import android.util.ArraySet;
-import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting.Visibility;
@@ -222,12 +221,10 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
if (SubscriptionManager.isValidSubscriptionId(subId)) {
final PersistableBundle carrierConfigs = mCarrierConfigManager.getConfigForSubId(subId);
if (mDeps.isConfigForIdentifiedCarrier(carrierConfigs)) {
- Slog.v(TAG, String.format("SubId %s ready for SlotId %s", subId, slotId));
mReadySubIdsBySlotId.put(slotId, subId);
handleSubscriptionsChanged();
}
} else {
- Slog.v(TAG, "Slot unloaded: " + slotId);
mReadySubIdsBySlotId.remove(slotId);
handleSubscriptionsChanged();
}
diff --git a/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java
index 5414a5206abb..732035951462 100644
--- a/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java
+++ b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java
@@ -20,6 +20,8 @@ import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
import static android.telephony.TelephonyCallback.ActiveDataSubscriptionIdListener;
+import static com.android.server.VcnManagementService.LOCAL_LOG;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.net.ConnectivityManager;
@@ -433,7 +435,7 @@ public class UnderlyingNetworkTracker {
private static boolean isOpportunistic(
@NonNull TelephonySubscriptionSnapshot snapshot, Set<Integer> subIds) {
if (snapshot == null) {
- Slog.wtf(TAG, "Got null snapshot");
+ logWtf("Got null snapshot");
return false;
}
@@ -504,7 +506,7 @@ public class UnderlyingNetworkTracker {
final UnderlyingNetworkRecord.Builder builder =
mUnderlyingNetworkRecordBuilders.get(network);
if (builder == null) {
- Slog.wtf(TAG, "Got capabilities change for unknown key: " + network);
+ logWtf("Got capabilities change for unknown key: " + network);
return;
}
@@ -520,7 +522,7 @@ public class UnderlyingNetworkTracker {
final UnderlyingNetworkRecord.Builder builder =
mUnderlyingNetworkRecordBuilders.get(network);
if (builder == null) {
- Slog.wtf(TAG, "Got link properties change for unknown key: " + network);
+ logWtf("Got link properties change for unknown key: " + network);
return;
}
@@ -535,7 +537,7 @@ public class UnderlyingNetworkTracker {
final UnderlyingNetworkRecord.Builder builder =
mUnderlyingNetworkRecordBuilders.get(network);
if (builder == null) {
- Slog.wtf(TAG, "Got blocked status change for unknown key: " + network);
+ logWtf("Got blocked status change for unknown key: " + network);
return;
}
@@ -623,7 +625,7 @@ public class UnderlyingNetworkTracker {
// mRouteSelectionNetworkRequest requires a network be both VALIDATED and NOT_SUSPENDED
if (isBlocked) {
- Slog.wtf(TAG, "Network blocked for System Server: " + network);
+ logWtf("Network blocked for System Server: " + network);
return PRIORITY_ANY;
}
@@ -770,6 +772,16 @@ public class UnderlyingNetworkTracker {
}
}
+ private static void logWtf(String msg) {
+ Slog.wtf(TAG, msg);
+ LOCAL_LOG.log(TAG + " WTF: " + msg);
+ }
+
+ private static void logWtf(String msg, Throwable tr) {
+ Slog.wtf(TAG, msg, tr);
+ LOCAL_LOG.log(TAG + " WTF: " + msg + tr);
+ }
+
/** Dumps the state of this record for logging and debugging purposes. */
public void dump(IndentingPrintWriter pw) {
pw.println("UnderlyingNetworkTracker:");
diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java
index 6b4ee693c936..f7d61367c81e 100644
--- a/services/core/java/com/android/server/vcn/Vcn.java
+++ b/services/core/java/com/android/server/vcn/Vcn.java
@@ -24,6 +24,7 @@ import static android.net.vcn.VcnManager.VCN_STATUS_CODE_ACTIVE;
import static android.net.vcn.VcnManager.VCN_STATUS_CODE_INACTIVE;
import static android.net.vcn.VcnManager.VCN_STATUS_CODE_SAFE_MODE;
+import static com.android.server.VcnManagementService.LOCAL_LOG;
import static com.android.server.VcnManagementService.VDBG;
import android.annotation.NonNull;
@@ -513,37 +514,44 @@ public class Vcn extends Handler {
}
private String getLogPrefix() {
- return "[" + LogUtils.getHashedSubscriptionGroup(mSubscriptionGroup) + "]: ";
+ return "[" + LogUtils.getHashedSubscriptionGroup(mSubscriptionGroup) + "] ";
}
private void logVdbg(String msg) {
if (VDBG) {
Slog.v(TAG, getLogPrefix() + msg);
+ LOCAL_LOG.log(getLogPrefix() + "VDBG: " + msg);
}
}
private void logDbg(String msg) {
Slog.d(TAG, getLogPrefix() + msg);
+ LOCAL_LOG.log(getLogPrefix() + "DBG: " + msg);
}
private void logDbg(String msg, Throwable tr) {
Slog.d(TAG, getLogPrefix() + msg, tr);
+ LOCAL_LOG.log(getLogPrefix() + "DBG: " + msg + tr);
}
private void logErr(String msg) {
Slog.e(TAG, getLogPrefix() + msg);
+ LOCAL_LOG.log(getLogPrefix() + "ERR: " + msg);
}
private void logErr(String msg, Throwable tr) {
Slog.e(TAG, getLogPrefix() + msg, tr);
+ LOCAL_LOG.log(getLogPrefix() + "ERR: " + msg + tr);
}
private void logWtf(String msg) {
Slog.wtf(TAG, getLogPrefix() + msg);
+ LOCAL_LOG.log(getLogPrefix() + "WTF: " + msg);
}
private void logWtf(String msg, Throwable tr) {
Slog.wtf(TAG, getLogPrefix() + msg, tr);
+ LOCAL_LOG.log(getLogPrefix() + "WTF: " + msg + tr);
}
/**
diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
index fbbae973538a..55e3ed620160 100644
--- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
+++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
@@ -30,6 +30,7 @@ import static android.net.vcn.VcnManager.VCN_ERROR_CODE_CONFIG_ERROR;
import static android.net.vcn.VcnManager.VCN_ERROR_CODE_INTERNAL_ERROR;
import static android.net.vcn.VcnManager.VCN_ERROR_CODE_NETWORK_ERROR;
+import static com.android.server.VcnManagementService.LOCAL_LOG;
import static com.android.server.VcnManagementService.VDBG;
import android.annotation.NonNull;
@@ -1645,7 +1646,7 @@ public class VcnGatewayConnection extends StateMachine {
@NonNull IpSecTransform transform,
int direction) {
if (direction != IpSecManager.DIRECTION_IN && direction != IpSecManager.DIRECTION_OUT) {
- Slog.wtf(TAG, "Applying transform for unexpected direction: " + direction);
+ logWtf("Applying transform for unexpected direction: " + direction);
}
try {
@@ -2134,37 +2135,44 @@ public class VcnGatewayConnection extends StateMachine {
+ LogUtils.getHashedSubscriptionGroup(mSubscriptionGroup)
+ "-"
+ mConnectionConfig.getGatewayConnectionName()
- + "]: ";
+ + "] ";
}
private void logVdbg(String msg) {
if (VDBG) {
Slog.v(TAG, getLogPrefix() + msg);
+ LOCAL_LOG.log(getLogPrefix() + "VDBG: " + msg);
}
}
private void logDbg(String msg) {
Slog.d(TAG, getLogPrefix() + msg);
+ LOCAL_LOG.log(getLogPrefix() + "DBG: " + msg);
}
private void logDbg(String msg, Throwable tr) {
Slog.d(TAG, getLogPrefix() + msg, tr);
+ LOCAL_LOG.log(getLogPrefix() + "DBG: " + msg + tr);
}
private void logErr(String msg) {
Slog.e(TAG, getLogPrefix() + msg);
+ LOCAL_LOG.log(getLogPrefix() + "ERR: " + msg);
}
private void logErr(String msg, Throwable tr) {
Slog.e(TAG, getLogPrefix() + msg, tr);
+ LOCAL_LOG.log(getLogPrefix() + "ERR: " + msg + tr);
}
private void logWtf(String msg) {
Slog.wtf(TAG, getLogPrefix() + msg);
+ LOCAL_LOG.log(getLogPrefix() + "WTF: " + msg);
}
private void logWtf(String msg, Throwable tr) {
Slog.wtf(TAG, getLogPrefix() + msg, tr);
+ LOCAL_LOG.log(getLogPrefix() + "WTF: " + msg + tr);
}
/**
diff --git a/services/core/java/com/android/server/vcn/VcnNetworkProvider.java b/services/core/java/com/android/server/vcn/VcnNetworkProvider.java
index 72cd7880325f..31ee2477fa64 100644
--- a/services/core/java/com/android/server/vcn/VcnNetworkProvider.java
+++ b/services/core/java/com/android/server/vcn/VcnNetworkProvider.java
@@ -172,6 +172,10 @@ public class VcnNetworkProvider extends NetworkProvider {
}
private void handleNetworkRequestWithdrawn(@NonNull NetworkRequest request) {
+ if (VDBG) {
+ Slog.v(TAG, "Network request withdrawn: Request = " + request);
+ }
+
mRequests.remove(request);
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index 9178a8d16d16..01ee3be08f5f 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -618,7 +618,7 @@ public abstract class ActivityTaskManagerInternal {
/**
* Commit changes.
*/
- void commit() throws RemoteException;
+ void commit();
}
/**
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index c7e4abbe3db5..134ecdeffa8f 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -6390,9 +6390,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
@Override
public PackageConfigurationUpdater createPackageConfigurationUpdater() {
- synchronized (mGlobalLock) {
- return new PackageConfigurationUpdaterImpl(Binder.getCallingPid());
- }
+ return new PackageConfigurationUpdaterImpl(Binder.getCallingPid());
}
@Override
@@ -6405,7 +6403,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
final class PackageConfigurationUpdaterImpl implements
ActivityTaskManagerInternal.PackageConfigurationUpdater {
- private int mPid;
+ private final int mPid;
private int mNightMode;
PackageConfigurationUpdaterImpl(int pid) {
@@ -6419,24 +6417,26 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
}
@Override
- public void commit() throws RemoteException {
- if (mPid == 0) {
- throw new RemoteException("Invalid process");
- }
+ public void commit() {
synchronized (mGlobalLock) {
- final WindowProcessController wpc = mProcessMap.getProcess(mPid);
- if (wpc == null) {
- Slog.w(TAG, "Override application configuration: cannot find application");
- return;
- }
- if (wpc.getNightMode() == mNightMode) {
- return;
- }
- if (!wpc.setOverrideNightMode(mNightMode)) {
- return;
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ final WindowProcessController wpc = mProcessMap.getProcess(mPid);
+ if (wpc == null) {
+ Slog.w(TAG, "Override application configuration: cannot find pid " + mPid);
+ return;
+ }
+ if (wpc.getNightMode() == mNightMode) {
+ return;
+ }
+ if (!wpc.setOverrideNightMode(mNightMode)) {
+ return;
+ }
+ wpc.updateNightModeForAllActivities(mNightMode);
+ mPackageConfigPersister.updateFromImpl(wpc.mName, wpc.mUserId, this);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
}
- wpc.updateNightModeForAllActivities(mNightMode);
- mPackageConfigPersister.updateFromImpl(wpc.mName, wpc.mUserId, this);
}
}
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index 737e7d10c3b4..2feb8a743930 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -1163,9 +1163,6 @@ public class RecentsAnimationController implements DeathRecipient {
// Apply the task's pending transaction in case it is detached and its transaction
// is not reachable.
mTask.getPendingTransaction().apply();
-
- // Reset whether this task can affect the sysui flags
- mTask.setCanAffectSystemUiFlags(true);
}
}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 93fc4f2a3149..039422d2c6a4 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -5407,17 +5407,17 @@ class Task extends WindowContainer<WindowContainer> {
: WINDOWING_MODE_FULLSCREEN;
}
if (currentMode == WINDOWING_MODE_PINNED) {
+ mRootWindowContainer.notifyActivityPipModeChanged(null);
+ }
+ if (likelyResolvedMode == WINDOWING_MODE_PINNED) {
// In the case that we've disabled affecting the SysUI flags as a part of seamlessly
// transferring the transform on the leash to the task, reset this state once we've
// actually entered pip
setCanAffectSystemUiFlags(true);
- mRootWindowContainer.notifyActivityPipModeChanged(null);
- }
- if (likelyResolvedMode == WINDOWING_MODE_PINNED
- && taskDisplayArea.getRootPinnedTask() != null) {
-
- // Can only have 1 pip at a time, so replace an existing pip
- taskDisplayArea.getRootPinnedTask().dismissPip();
+ if (taskDisplayArea.getRootPinnedTask() != null) {
+ // Can only have 1 pip at a time, so replace an existing pip
+ taskDisplayArea.getRootPinnedTask().dismissPip();
+ }
}
if (likelyResolvedMode != WINDOWING_MODE_FULLSCREEN
&& topActivity != null && !topActivity.noDisplay
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
index aec06431c5fb..0bb09a9de07f 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
@@ -287,6 +287,8 @@ final class HotwordDetectionConnection {
Slog.d(TAG, "stopListening");
}
+ mRemoteHotwordDetectionService.run(service -> service.stopDetection());
+
synchronized (mLock) {
if (mCurrentAudioSink != null) {
Slog.i(TAG, "Closing audio stream to hotword detector: stopping requested");
diff --git a/telephony/java/android/telephony/ims/SipDelegateConnection.java b/telephony/java/android/telephony/ims/SipDelegateConnection.java
index 4dbb08d14ccd..498b408fe139 100644
--- a/telephony/java/android/telephony/ims/SipDelegateConnection.java
+++ b/telephony/java/android/telephony/ims/SipDelegateConnection.java
@@ -62,26 +62,6 @@ public interface SipDelegateConnection {
void notifyMessageReceived(@NonNull String viaTransactionId);
/**
- * The SIP Dialog associated with the provided Call-ID is being closed and routing resources
- * associated with the SIP dialog are free to be released.
- * <p>
- * Calling this method is also mandatory for situations where the framework IMS stack is waiting
- * for pending SIP dialogs to be closed before it can perform a handover or apply a provisioning
- * change. See {@link DelegateRegistrationState} for more information about
- * the scenarios where this can occur.
- * <p>
- * This method will need to be called for each SIP dialog managed by this application when it is
- * closed.
- * @param callId The call-ID header value associated with the ongoing SIP Dialog that is
- * closing.
- * @deprecated closeDialog does not capture INVITE forking. Use {@link #cleanupSession} instead.
- */
- @Deprecated
- default void closeDialog(@NonNull String callId) {
- cleanupSession(callId);
- }
-
- /**
* The SIP session associated with the provided Call-ID is being closed and routing resources
* associated with the session are free to be released. Each SIP session may contain multiple
* dialogs due to SIP INVITE forking, so this method must be called after all SIP dialogs
@@ -97,7 +77,7 @@ public interface SipDelegateConnection {
* @param callId The call-ID header value associated with the ongoing SIP Dialog that is
* closing.
*/
- default void cleanupSession(@NonNull String callId) { }
+ void cleanupSession(@NonNull String callId);
/**
* Notify the SIP delegate that the SIP message has been received from
diff --git a/telephony/java/android/telephony/ims/stub/SipDelegate.java b/telephony/java/android/telephony/ims/stub/SipDelegate.java
index 997d00bc91c7..7dbefb4474a6 100644
--- a/telephony/java/android/telephony/ims/stub/SipDelegate.java
+++ b/telephony/java/android/telephony/ims/stub/SipDelegate.java
@@ -64,25 +64,6 @@ public interface SipDelegate {
void sendMessage(@NonNull SipMessage message, long configVersion);
/**
- * The framework is requesting that routing resources associated with the SIP dialog using the
- * provided Call-ID to be cleaned up.
- * <p>
- * Typically, a SIP Dialog close event will be signalled by that dialog receiving a BYE or
- * 200 OK message, however, the IMS application will still call
- * {@link SipDelegateConnection#closeDialog(String)} to signal to the framework that resources
- * can be released. In some cases, the framework will request that the ImsService close the
- * dialog due to the open dialog holding up an event such as applying a provisioning change or
- * handing over to another transport type. See {@link DelegateRegistrationState}.
- *
- * @param callId The call-ID header value associated with the ongoing SIP Dialog that the
- * framework is requesting be closed.
- * @deprecated This method does not take into account INVITE forking. Use
- * {@link #cleanupSession(String)} instead.
- */
- @Deprecated
- default void closeDialog(@NonNull String callId) { }
-
- /**
* The remote IMS application has closed a SIP session and the routing resources associated
* with the SIP session using the provided Call-ID may now be cleaned up.
* <p>
@@ -97,9 +78,7 @@ public interface SipDelegate {
* @param callId The call-ID header value associated with the ongoing SIP Session that the
* framework is requesting be cleaned up.
*/
- default void cleanupSession(@NonNull String callId) {
- closeDialog(callId);
- }
+ void cleanupSession(@NonNull String callId);
/**
* The remote application has received the SIP message and is processing it.